@ensuro/account-abstraction 0.0.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  {
2
- "_format": "hh-sol-artifact-1",
2
+ "_format": "hh3-artifact-1",
3
3
  "contractName": "AccessManagerAccount",
4
4
  "sourceName": "contracts/AccessManagerAccount.sol",
5
5
  "abi": [
@@ -57,17 +57,6 @@
57
57
  "name": "AccessManagerInvalidInitialAdmin",
58
58
  "type": "error"
59
59
  },
60
- {
61
- "inputs": [
62
- {
63
- "internalType": "address",
64
- "name": "account",
65
- "type": "address"
66
- }
67
- ],
68
- "name": "AccessManagerLockedAccount",
69
- "type": "error"
70
- },
71
60
  {
72
61
  "inputs": [
73
62
  {
@@ -186,17 +175,6 @@
186
175
  "name": "AddressEmptyCode",
187
176
  "type": "error"
188
177
  },
189
- {
190
- "inputs": [
191
- {
192
- "internalType": "address",
193
- "name": "account",
194
- "type": "address"
195
- }
196
- ],
197
- "name": "AddressInsufficientBalance",
198
- "type": "error"
199
- },
200
178
  {
201
179
  "inputs": [],
202
180
  "name": "DelayNotAllowed",
@@ -229,9 +207,41 @@
229
207
  "name": "ECDSAInvalidSignatureS",
230
208
  "type": "error"
231
209
  },
210
+ {
211
+ "inputs": [
212
+ {
213
+ "internalType": "uint256",
214
+ "name": "index",
215
+ "type": "uint256"
216
+ },
217
+ {
218
+ "internalType": "bytes",
219
+ "name": "error",
220
+ "type": "bytes"
221
+ }
222
+ ],
223
+ "name": "ExecuteError",
224
+ "type": "error"
225
+ },
232
226
  {
233
227
  "inputs": [],
234
- "name": "FailedInnerCall",
228
+ "name": "FailedCall",
229
+ "type": "error"
230
+ },
231
+ {
232
+ "inputs": [
233
+ {
234
+ "internalType": "uint256",
235
+ "name": "balance",
236
+ "type": "uint256"
237
+ },
238
+ {
239
+ "internalType": "uint256",
240
+ "name": "needed",
241
+ "type": "uint256"
242
+ }
243
+ ],
244
+ "name": "InsufficientBalance",
235
245
  "type": "error"
236
246
  },
237
247
  {
@@ -728,6 +738,36 @@
728
738
  "stateMutability": "nonpayable",
729
739
  "type": "function"
730
740
  },
741
+ {
742
+ "inputs": [
743
+ {
744
+ "components": [
745
+ {
746
+ "internalType": "address",
747
+ "name": "target",
748
+ "type": "address"
749
+ },
750
+ {
751
+ "internalType": "uint256",
752
+ "name": "value",
753
+ "type": "uint256"
754
+ },
755
+ {
756
+ "internalType": "bytes",
757
+ "name": "data",
758
+ "type": "bytes"
759
+ }
760
+ ],
761
+ "internalType": "struct BaseAccount.Call[]",
762
+ "name": "calls",
763
+ "type": "tuple[]"
764
+ }
765
+ ],
766
+ "name": "executeBatch",
767
+ "outputs": [],
768
+ "stateMutability": "nonpayable",
769
+ "type": "function"
770
+ },
731
771
  {
732
772
  "inputs": [],
733
773
  "name": "expiration",
@@ -1394,8 +1434,38 @@
1394
1434
  "type": "receive"
1395
1435
  }
1396
1436
  ],
1397
- "bytecode": "0x60a06040523480156200001157600080fd5b50604051620065f8380380620065f883398181016040528101906200003791906200084d565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ad5760006040517f0813ada2000000000000000000000000000000000000000000000000000000008152600401620000a49190620008a5565b60405180910390fd5b620000c36000826000806200010160201b60201c565b50508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000af3565b600067ffffffffffffffff80168567ffffffffffffffff16036200015e57846040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401620001559190620008e7565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff161490506000811562000330578463ffffffff1662000209620004ed60201b60201c565b62000215919062000945565b905060405180604001604052808265ffffffffffff168152602001620002478663ffffffff166200050560201b60201c565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555090505062000481565b620003dc846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166200051560201b9092919060201c565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051620004d893929190620009d5565b60405180910390a38192505050949350505050565b60006200050042620005cd60201b60201c565b905090565b60008163ffffffff169050919050565b60008060006200053b866dffffffffffffffffffffffffffff166200062a60201b60201c565b90506000620005878563ffffffff168763ffffffff168463ffffffff16116200056657600062000575565b878462000574919062000a12565b5b63ffffffff166200065b60201b60201c565b90508063ffffffff16620005a0620004ed60201b60201c565b620005ac919062000945565b9250620005c18287856200067660201b60201c565b93505050935093915050565b600065ffffffffffff801682111562000622576030826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016200061992919062000ac6565b60405180910390fd5b819050919050565b6000806200064e836dffffffffffffffffffffffffffff16620006c260201b60201c565b5050905080915050919050565b60008183116200066c57816200066e565b825b905092915050565b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000620006e884620006dc620004ed60201b60201c565b620006f560201b60201c565b9250925092509193909250565b6000806000806000806200071f886dffffffffffffffffffffffffffff166200075c60201b60201c565b9250925092508665ffffffffffff168165ffffffffffff16111562000747578282826200074c565b816000805b9550955095505050509250925092565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007d082620007a3565b9050919050565b6000620007e482620007c3565b9050919050565b620007f681620007d7565b81146200080257600080fd5b50565b6000815190506200081681620007eb565b92915050565b6200082781620007c3565b81146200083357600080fd5b50565b60008151905062000847816200081c565b92915050565b600080604083850312156200086757620008666200079e565b5b6000620008778582860162000805565b92505060206200088a8582860162000836565b9150509250929050565b6200089f81620007c3565b82525050565b6000602082019050620008bc600083018462000894565b92915050565b600067ffffffffffffffff82169050919050565b620008e181620008c2565b82525050565b6000602082019050620008fe6000830184620008d6565b92915050565b600065ffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009528262000904565b91506200095f8362000904565b9250828201905065ffffffffffff81111562000980576200097f62000916565b5b92915050565b600063ffffffff82169050919050565b620009a18162000986565b82525050565b620009b28162000904565b82525050565b60008115159050919050565b620009cf81620009b8565b82525050565b6000606082019050620009ec600083018662000996565b620009fb6020830185620009a7565b62000a0a6040830184620009c4565b949350505050565b600062000a1f8262000986565b915062000a2c8362000986565b9250828203905063ffffffff81111562000a4b5762000a4a62000916565b5b92915050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b600062000a9362000a8d62000a878462000a51565b62000a68565b62000a5b565b9050919050565b62000aa58162000a72565b82525050565b6000819050919050565b62000ac08162000aab565b82525050565b600060408201905062000add600083018562000a9a565b62000aec602083018462000ab5565b9392505050565b608051615ae962000b0f60003960006115d30152615ae96000f3fe6080604052600436106102345760003560e01c80636d5115bd1161012e578063b7009613116100ab578063d1f856ee1161006f578063d1f856ee146108b0578063d22b5989146108ee578063d6bb62c614610917578063f801a69814610954578063fe0776f5146109925761023b565b8063b7009613146107c8578063b7d2b16214610806578063c399ec881461082f578063cc1b6c811461085a578063d087d288146108855761023b565b8063a64d95ce116100f2578063a64d95ce146106d1578063abd9bd2a146106fa578063ac9650d814610737578063b0d691fe14610774578063b61d27f61461079f5761023b565b80636d5115bd146105da57806375b238fc14610617578063853551b81461064257806394c7d7ee1461066b578063a166aa89146106945761023b565b806330cae187116101bc5780634a58db19116101805780634a58db19146105045780634c1da1e21461050e5780634d44560d1461054b5780635296295214610574578063530dd4561461059d5761023b565b806330cae1871461040b5780633adc277a146104345780633ca7c02a146104715780634136a33c1461049c5780634665096d146104d95761023b565b806318ff183c1161020357806318ff183c1461030c57806319822f7c146103355780631cff79cd1461037257806325c471a0146103a25780633078f114146103cb5761023b565b806308d6122d146102405780630b0a93ba1461026957806312be8727146102a6578063167bd395146102e35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102676004803603810190610262919061426f565b6109bb565b005b34801561027557600080fd5b50610290600480360381019061028b91906142e3565b610a15565b60405161029d919061431f565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906142e3565b610a5d565b6040516102da9190614359565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906143ac565b610ac3565b005b34801561031857600080fd5b50610333600480360381019061032e91906143ec565b610ad9565b005b34801561034157600080fd5b5061035c600480360381019061035791906144bd565b610b50565b604051610369919061453b565b60405180910390f35b61038c600480360381019061038791906145ac565b610b83565b6040516103999190614359565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190614638565b610cd6565b005b3480156103d757600080fd5b506103f260048036038101906103ed919061468b565b610cf8565b60405161040294939291906146ec565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190614731565b610e1d565b005b34801561044057600080fd5b5061045b60048036038101906104569190614771565b610e33565b604051610468919061479e565b60405180910390f35b34801561047d57600080fd5b50610486610e7f565b604051610493919061431f565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190614771565b610e8b565b6040516104d09190614359565b60405180910390f35b3480156104e557600080fd5b506104ee610ebb565b6040516104fb9190614359565b60405180910390f35b61050c610ec6565b005b34801561051a57600080fd5b50610535600480360381019061053091906147b9565b610f3b565b6040516105429190614359565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190614824565b610fb8565b005b34801561058057600080fd5b5061059b60048036038101906105969190614731565b61104b565b005b3480156105a957600080fd5b506105c460048036038101906105bf91906142e3565b611061565b6040516105d1919061431f565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc91906148bc565b6110a9565b60405161060e919061431f565b60405180910390f35b34801561062357600080fd5b5061062c611158565b604051610639919061431f565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190614952565b61115d565b005b34801561067757600080fd5b50610692600480360381019061068d91906145ac565b611226565b005b3480156106a057600080fd5b506106bb60048036038101906106b691906147b9565b611344565b6040516106c891906149c1565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f391906149dc565b61139c565b005b34801561070657600080fd5b50610721600480360381019061071c9190614a1c565b6113b2565b60405161072e9190614a9f565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190614b10565b6113eb565b60405161076b9190614caf565b60405180910390f35b34801561078057600080fd5b506107896115cf565b6040516107969190614d30565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614d4b565b6115f7565b005b3480156107d457600080fd5b506107ef60048036038101906107ea9190614dbf565b611655565b6040516107fd929190614e12565b60405180910390f35b34801561081257600080fd5b5061082d6004803603810190610828919061468b565b611702565b005b34801561083b57600080fd5b50610844611719565b604051610851919061453b565b60405180910390f35b34801561086657600080fd5b5061086f6117a1565b60405161087c9190614359565b60405180910390f35b34801561089157600080fd5b5061089a6117ac565b6040516108a7919061453b565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d2919061468b565b611837565b6040516108e5929190614e12565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614e3b565b6118cb565b005b34801561092357600080fd5b5061093e60048036038101906109399190614a1c565b6118e1565b60405161094b9190614359565b60405180910390f35b34801561096057600080fd5b5061097b60048036038101906109769190614ea7565b611ad4565b604051610989929190614f1b565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b4919061468b565b611cb8565b005b6109c3611d33565b60005b83839050811015610a0e57610a03858585848181106109e8576109e7614f44565b5b90506020020160208101906109fd9190614f73565b84611de0565b8060010190506109c6565b5050505050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160089054906101000a900467ffffffffffffffff169050919050565b6000610abc600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611ef5565b9050919050565b610acb611d33565b610ad58282611f1e565b5050565b610ae1611d33565b8173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401610b1a9190614faf565b600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b505050505050565b6000610b5a612039565b610b6484846120b0565b9050610b738460200135612313565b610b7c82612316565b9392505050565b600080610b8e6123b2565b9050600080610b9f838888886123ba565b9150915081158015610bb7575060008163ffffffff16145b15610c06578287610bc8888861243a565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401610bfd93929190614fd9565b60405180910390fd5b6000610c14848989896113b2565b90506000808363ffffffff16141580610c3e57506000610c3383610e33565b65ffffffffffff1614155b15610c4f57610c4c82612463565b90505b60006003549050610c698a610c648b8b61243a565b612619565b600381905550610cbe8a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503461264c565b50806003819055508196505050505050509392505050565b610cde611d33565b610cf28383610cec86610a5d565b84612719565b50505050565b6000806000806000600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900465ffffffffffff169450600460009054906101000a900460ff1615610dcf57610dbe8160000160069054906101000a90046dffffffffffffffffffffffffffff16612aea565b809450819550829650505050610e13565b610e068160000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612b0d565b8094508195508296505050505b5092959194509250565b610e25611d33565b610e2f8282612b30565b5050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff169050610e6a81612c3f565b610e745780610e77565b60005b915050919050565b67ffffffffffffffff81565b60006002600083815260200190815260200160002060000160069054906101000a900463ffffffff169050919050565b600062093a80905090565b610ece6115cf565b73ffffffffffffffffffffffffffffffffffffffff1663b760faf934306040518363ffffffff1660e01b8152600401610f079190614faf565b6000604051808303818588803b158015610f2057600080fd5b505af1158015610f34573d6000803e3d6000fd5b5050505050565b6000610fb16000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611ef5565b9050919050565b610fd2610fc36123b2565b610fcb612c7b565b6001612c88565b50610fdb6115cf565b73ffffffffffffffffffffffffffffffffffffffff1663205c287883836040518363ffffffff1660e01b815260040161101592919061501f565b600060405180830381600087803b15801561102f57600080fd5b505af1158015611043573d6000803e3d6000fd5b505050505050565b611053611d33565b61105d8282612d86565b5050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160009054906101000a900467ffffffffffffffff169050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900467ffffffffffffffff16905092915050565b600081565b611165611d33565b600067ffffffffffffffff168367ffffffffffffffff16148061119b575067ffffffffffffffff80168367ffffffffffffffff16145b156111dd57826040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016111d4919061431f565b60405180910390fd5b8267ffffffffffffffff167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051611219929190615095565b60405180910390a2505050565b60006112306123b2565b9050638fb3603760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff16638fb360376040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c891906150ce565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461132957806040517f320ff7480000000000000000000000000000000000000000000000000000000081526004016113209190614faf565b60405180910390fd5b61133d611338858386866113b2565b612463565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e9054906101000a900460ff169050919050565b6113a4611d33565b6113ae8282612e95565b5050565b6000848484846040516020016113cb9493929190615139565b604051602081830303815290604052805190602001209050949350505050565b606060006113f76123b2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149a5760003661143461300c565b600036905061144391906151a8565b908092611452939291906151e6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114e9565b600067ffffffffffffffff8111156114b5576114b4615221565b5b6040519080825280601f01601f1916602001820160405280156114e75781602001600182028036833780820191505090505b505b90508383905067ffffffffffffffff81111561150857611507615221565b5b60405190808252806020026020018201604052801561153b57816020015b60608152602001906001900390816115265790505b50915060005b848490508110156115c75761159c3086868481811061156357611562614f44565b5b9050602002810190611575919061525f565b8560405160200161158893929190615323565b604051602081830303815290604052613011565b8382815181106115af576115ae614f44565b5b60200260200101819052508080600101915050611541565b505092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6115ff612039565b61164e8483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508561264c565b5050505050565b60008061166184611344565b1561167257600080915091506116fa565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036116ba576116af8484613095565b6000915091506116fa565b60006116c685856110a9565b90506000806116d58389611837565b91509150816116e6576000806116f2565b60008163ffffffff1614815b945094505050505b935093915050565b61170a611d33565b61171482826130ad565b505050565b60006117236115cf565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161175b9190614faf565b602060405180830381865afa158015611778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179c919061535e565b905090565b600062069780905090565b60006117b66115cf565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a3060006040518363ffffffff1660e01b81526004016117f19291906153ea565b602060405180830381865afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611832919061535e565b905090565b60008067ffffffffffffffff80168467ffffffffffffffff16036118625760016000915091506118c4565b60008061186f8686610cf8565b50509150915060008265ffffffffffff16141580156118bc5750600460009054906101000a900460ff16806118bb57506118a7613299565b65ffffffffffff168265ffffffffffff1611155b5b819350935050505b9250929050565b6118d3611d33565b6118dd82826132a9565b5050565b6000806118ec6123b2565b905060006118fa858561243a565b9050600061190a888888886113b2565b905060006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff160361198157806040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016119789190614a9f565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611a3b5760006119c1600085611837565b50905060006119e16119db6119d68b876110a9565b610a15565b86611837565b509050811580156119f0575080155b15611a3857848a8a866040517f3fe2751c000000000000000000000000000000000000000000000000000000008152600401611a2f9493929190615413565b60405180910390fd5b50505b6002600082815260200190815260200160002060000160006101000a81549065ffffffffffff021916905560006002600083815260200190815260200160002060000160069054906101000a900463ffffffff1690508063ffffffff16827fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f760405160405180910390a380945050505050949350505050565b6000806000611ae16123b2565b90506000611af1828989896123ba565b91505060008163ffffffff16611b05613299565b611b0f9190615458565b905060008263ffffffff161480611b49575060008665ffffffffffff16118015611b4857508065ffffffffffff168665ffffffffffff16105b5b15611b98578289611b5a8a8a61243a565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401611b8f93929190614fd9565b60405180910390fd5b611bb28665ffffffffffff168265ffffffffffff16613402565b9550611bc0838a8a8a6113b2565b9450611bcb8561341b565b60016002600087815260200190815260200160002060000160069054906101000a900463ffffffff16019350856002600087815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550836002600087815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508363ffffffff16857f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b488868d8d8d604051611ca4959493929190615492565b60405180910390a350505094509492505050565b611cc06123b2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f5f159e6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d2e82826130ad565b505050565b6000611d3d6123b2565b9050600080611d5383611d4e612c7b565b6134ad565b9150915081611ddb5760008163ffffffff1603611dbf576000611d7c611d77612c7b565b61359b565b5091505083816040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401611db69291906154e0565b60405180910390fd5b611dd9611dd48430611dcf612c7b565b6113b2565b612463565b505b505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde94915184604051611ee89190615509565b60405180910390a3505050565b600080611f11836dffffffffffffffffffffffffffff16612b0d565b5050905080915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f8e57816040517f5a068bc8000000000000000000000000000000000000000000000000000000008152600401611f859190614faf565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1388260405161202d91906149c1565b60405180910390a25050565b6120416115cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a590615570565b60405180910390fd5b565b60006001600460006101000a81548160ff02191690831515021790555060008380606001906120df919061525f565b6000906004926120f1939291906151e6565b906120fc91906155a8565b90507fb61d27f68746b0955d4867ce6e77d35c62208909547ca5c62d2a533c00d5b8377bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146121a057806040517fd4d202fb0000000000000000000000000000000000000000000000000000000081526004016121979190615509565b60405180910390fd5b60008480606001906121b2919061525f565b6004906024926121c4939291906151e6565b8101906121d19190615607565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612238576040517ffcd888ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061224385613983565b905060006122a4828880610100019061225c919061525f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506139b9565b90506122c1818880606001906122ba919061525f565b6000612c88565b6122d25760019450505050506122f2565b6122eb818880606001906122e6919061525f565b6139e5565b9450505050505b6000600460006101000a81548160ff02191690831515021790555092915050565b50565b600081146123af5760003373ffffffffffffffffffffffffffffffffffffffff16827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906040516123669061565a565b600060405180830381858888f193505050503d80600081146123a4576040519150601f19603f3d011682016040523d82523d6000602084013e6123a9565b606091505b50509050505b50565b600033905090565b6000803073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612404576123fb8685856134ad565b91509150612431565b6004848490501061242857612423868661241e878761243a565b611655565b61242c565b6000805b915091505b94509492505050565b60008282600090600492612450939291906151e6565b9061245b91906155a8565b905092915050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060006002600085815260200190815260200160002060000160069054906101000a900463ffffffff16905060008265ffffffffffff160361250957836040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016125009190614a9f565b60405180910390fd5b612511613299565b65ffffffffffff168265ffffffffffff16111561256557836040517f18cb6b7a00000000000000000000000000000000000000000000000000000000815260040161255c9190614a9f565b60405180910390fd5b61256e82612c3f565b156125b057836040517f78a5d6e40000000000000000000000000000000000000000000000000000000081526004016125a79190614a9f565b60405180910390fd5b6002600085815260200190815260200160002060000160006101000a81549065ffffffffffff02191690558063ffffffff16847f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d60405160405180910390a38092505050919050565b6000828260405160200161262e92919061566f565b60405160208183030381529060405280519060200120905092915050565b60608147101561269357306040517fcd78605900000000000000000000000000000000000000000000000000000000815260040161268a9190614faf565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516126bc9190615698565b60006040518083038185875af1925050503d80600081146126f9576040519150601f19603f3d011682016040523d82523d6000602084013e6126fe565b606091505b509150915061270e868383613a98565b925050509392505050565b600067ffffffffffffffff80168567ffffffffffffffff160361277357846040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161276a919061431f565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115612931578463ffffffff16612815613299565b61281f9190615458565b905060405180604001604052808265ffffffffffff1681526020016128498663ffffffff16613b27565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550905050612a80565b6129db846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613b379092919063ffffffff16565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051612ad5939291906156af565b60405180910390a38192505050949350505050565b6000806000612b0084612afb613bc9565b613bde565b9250925092509193909250565b6000806000612b2384612b1e613299565b613c3b565b9250925092509193909250565b600067ffffffffffffffff168267ffffffffffffffff161480612b66575067ffffffffffffffff80168267ffffffffffffffff16145b15612ba857816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612b9f919061431f565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e634060405160405180910390a35050565b6000612c49613299565b65ffffffffffff16612c59610ebb565b63ffffffff1683612c6a9190615458565b65ffffffffffff1611159050919050565b3660008036915091509091565b6000806000612cb687308888600090600492612ca6939291906151e6565b90612cb191906155a8565b611655565b9150915081612d775760008163ffffffff161115612d00576040517f99ec076b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8315612d6c5786612d2f308888600090600492612d1f939291906151e6565b90612d2a91906155a8565b6110a9565b6040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401612d639291906154e0565b60405180910390fd5b600092505050612d7e565b6001925050505b949350505050565b600067ffffffffffffffff168267ffffffffffffffff161480612dbc575067ffffffffffffffff80168267ffffffffffffffff16145b15612dfe57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612df5919061431f565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae260405160405180910390a35050565b67ffffffffffffffff80168267ffffffffffffffff1603612eed57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612ee4919061431f565b60405180910390fd5b6000612f5f82612efb6117a1565b600160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613b379092919063ffffffff16565b600160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160108294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508267ffffffffffffffff167ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b488383604051612fff9291906156e6565b60405180910390a2505050565b600090565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161303b9190615698565b600060405180830381855af49150503d8060008114613076576040519150601f19603f3d011682016040523d82523d6000602084013e61307b565b606091505b509150915061308b858383613a98565b9250505092915050565b60006130a18383612619565b60035414905092915050565b600067ffffffffffffffff80168367ffffffffffffffff160361310757826040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016130fe919061431f565b60405180910390fd5b6000600160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff160361319c5760009050613293565b600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549065ffffffffffff02191690556000820160066101000a8154906dffffffffffffffffffffffffffff021916905550508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16660405160405180910390a3600190505b92915050565b60006132a442613c98565b905090565b6000613332826132b76117a1565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613b379092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508273ffffffffffffffffffffffffffffffffffffffff167fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c83836040516133f59291906156e6565b60405180910390a2505050565b60008183116134115781613413565b825b905092915050565b60006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060008165ffffffffffff1614158015613467575061346581612c3f565b155b156134a957816040517f813e94590000000000000000000000000000000000000000000000000000000081526004016134a09190614a9f565b60405180910390fd5b5050565b60008060048484905010156134c85760008091509150613593565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036135195761350e30613509868661243a565b613095565b600091509150613593565b6000806000613528878761359b565b925092509250826135425760008094509450505050613593565b60008061354f848b611837565b915091508161356957600080965096505050505050613593565b61357f8363ffffffff168263ffffffff16613402565b955060008663ffffffff1614965050505050505b935093915050565b600080600060048585905010156135bc57600080600092509250925061397c565b60006135c8868661243a565b905063853551b860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061366157506330cae18760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806136b05750635296295260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806136ff575063a64d95ce60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061374e575063d22b598960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156137645760016000809350935093505061397c565b6318ff183c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806137fb575063167bd39560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061384a57506308d6122d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156138945760008686600490602492613865939291906151e6565b8101906138729190615607565b9050600061387f82610f3b565b9050600160008295509550955050505061397c565b6325c471a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061392b575063b7d2b16260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561396f5760008686600490602492613946939291906151e6565b81019061395391906142e3565b9050600161396082611061565b6000945094509450505061397c565b6000806000935093509350505b9250925092565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b6000806000806139c98686613cf2565b9250925092506139d98282613d4e565b82935050505092915050565b600080600084846004906004888890506139ff91906151a8565b92613a0c939291906151e6565b810190613a199190615801565b9250509150600080613a3f8885613a3a600087613eb290919063ffffffff16565b611655565b915091508180613a55575060008163ffffffff16145b15613a745781613a66576001613a69565b60005b945050505050613a91565b613a87613a82898686613f19565b612463565b5060009450505050505b9392505050565b606082613aad57613aa882613f4f565b613b1f565b60008251148015613ad5575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15613b1757836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401613b0e9190614faf565b60405180910390fd5b819050613b20565b5b9392505050565b60008163ffffffff169050919050565b6000806000613b55866dffffffffffffffffffffffffffff16611ef5565b90506000613b958563ffffffff168763ffffffff168463ffffffff1611613b7d576000613b8a565b8784613b899190615870565b5b63ffffffff16613402565b90508063ffffffff16613ba6613299565b613bb09190615458565b9250613bbd828785613f94565b93505050935093915050565b6000613bd96407915ecc00613c98565b905090565b600080600080600080613c00886dffffffffffffffffffffffffffff16613fe0565b9250925092508665ffffffffffff168165ffffffffffff161115613c2657828282613c2b565b816000805b9550955095505050509250925092565b600080600080600080613c5d886dffffffffffffffffffffffffffff16614022565b9250925092508665ffffffffffff168165ffffffffffff161115613c8357828282613c88565b816000805b9550955095505050509250925092565b600065ffffffffffff8016821115613cea576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401613ce19291906158f0565b60405180910390fd5b819050919050565b60008060006041845103613d375760008060006020870151925060408701519150606087015160001a9050613d2988828585614064565b955095509550505050613d47565b60006002855160001b9250925092505b9250925092565b60006003811115613d6257613d61615919565b5b826003811115613d7557613d74615919565b5b0315613eae5760016003811115613d8f57613d8e615919565b5b826003811115613da257613da1615919565b5b03613dd9576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115613ded57613dec615919565b5b826003811115613e0057613dff615919565b5b03613e45578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401613e3c919061453b565b60405180910390fd5b600380811115613e5857613e57615919565b5b826003811115613e6b57613e6a615919565b5b03613ead57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613ea49190614a9f565b60405180910390fd5b5b5050565b6000602082613ec19190615948565b83511015613f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613efb906159c8565b60405180910390fd5b60008260208501015190508091505092915050565b6000838383604051602001613f3093929190615a21565b6040516020818303038152906040528051906020012090509392505050565b600081511115613f625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c11156140a457600060038592509250925061414e565b6000600188888888604051600081526020016040526040516140c99493929190615a6e565b6020604051602081039080840390855afa1580156140eb573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361413f57600060016000801b9350935093505061414e565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141978261416c565b9050919050565b6141a78161418c565b81146141b257600080fd5b50565b6000813590506141c48161419e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126141ef576141ee6141ca565b5b8235905067ffffffffffffffff81111561420c5761420b6141cf565b5b602083019150836020820283011115614228576142276141d4565b5b9250929050565b600067ffffffffffffffff82169050919050565b61424c8161422f565b811461425757600080fd5b50565b60008135905061426981614243565b92915050565b6000806000806060858703121561428957614288614162565b5b6000614297878288016141b5565b945050602085013567ffffffffffffffff8111156142b8576142b7614167565b5b6142c4878288016141d9565b935093505060406142d78782880161425a565b91505092959194509250565b6000602082840312156142f9576142f8614162565b5b60006143078482850161425a565b91505092915050565b6143198161422f565b82525050565b60006020820190506143346000830184614310565b92915050565b600063ffffffff82169050919050565b6143538161433a565b82525050565b600060208201905061436e600083018461434a565b92915050565b60008115159050919050565b61438981614374565b811461439457600080fd5b50565b6000813590506143a681614380565b92915050565b600080604083850312156143c3576143c2614162565b5b60006143d1858286016141b5565b92505060206143e285828601614397565b9150509250929050565b6000806040838503121561440357614402614162565b5b6000614411858286016141b5565b9250506020614422858286016141b5565b9150509250929050565b600080fd5b600061012082840312156144485761444761442c565b5b81905092915050565b6000819050919050565b61446481614451565b811461446f57600080fd5b50565b6000813590506144818161445b565b92915050565b6000819050919050565b61449a81614487565b81146144a557600080fd5b50565b6000813590506144b781614491565b92915050565b6000806000606084860312156144d6576144d5614162565b5b600084013567ffffffffffffffff8111156144f4576144f3614167565b5b61450086828701614431565b935050602061451186828701614472565b9250506040614522868287016144a8565b9150509250925092565b61453581614487565b82525050565b6000602082019050614550600083018461452c565b92915050565b60008083601f84011261456c5761456b6141ca565b5b8235905067ffffffffffffffff811115614589576145886141cf565b5b6020830191508360018202830111156145a5576145a46141d4565b5b9250929050565b6000806000604084860312156145c5576145c4614162565b5b60006145d3868287016141b5565b935050602084013567ffffffffffffffff8111156145f4576145f3614167565b5b61460086828701614556565b92509250509250925092565b6146158161433a565b811461462057600080fd5b50565b6000813590506146328161460c565b92915050565b60008060006060848603121561465157614650614162565b5b600061465f8682870161425a565b9350506020614670868287016141b5565b925050604061468186828701614623565b9150509250925092565b600080604083850312156146a2576146a1614162565b5b60006146b08582860161425a565b92505060206146c1858286016141b5565b9150509250929050565b600065ffffffffffff82169050919050565b6146e6816146cb565b82525050565b600060808201905061470160008301876146dd565b61470e602083018661434a565b61471b604083018561434a565b61472860608301846146dd565b95945050505050565b6000806040838503121561474857614747614162565b5b60006147568582860161425a565b92505060206147678582860161425a565b9150509250929050565b60006020828403121561478757614786614162565b5b600061479584828501614472565b91505092915050565b60006020820190506147b360008301846146dd565b92915050565b6000602082840312156147cf576147ce614162565b5b60006147dd848285016141b5565b91505092915050565b60006147f18261416c565b9050919050565b614801816147e6565b811461480c57600080fd5b50565b60008135905061481e816147f8565b92915050565b6000806040838503121561483b5761483a614162565b5b60006148498582860161480f565b925050602061485a858286016144a8565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61489981614864565b81146148a457600080fd5b50565b6000813590506148b681614890565b92915050565b600080604083850312156148d3576148d2614162565b5b60006148e1858286016141b5565b92505060206148f2858286016148a7565b9150509250929050565b60008083601f840112614912576149116141ca565b5b8235905067ffffffffffffffff81111561492f5761492e6141cf565b5b60208301915083600182028301111561494b5761494a6141d4565b5b9250929050565b60008060006040848603121561496b5761496a614162565b5b60006149798682870161425a565b935050602084013567ffffffffffffffff81111561499a57614999614167565b5b6149a6868287016148fc565b92509250509250925092565b6149bb81614374565b82525050565b60006020820190506149d660008301846149b2565b92915050565b600080604083850312156149f3576149f2614162565b5b6000614a018582860161425a565b9250506020614a1285828601614623565b9150509250929050565b60008060008060608587031215614a3657614a35614162565b5b6000614a44878288016141b5565b9450506020614a55878288016141b5565b935050604085013567ffffffffffffffff811115614a7657614a75614167565b5b614a8287828801614556565b925092505092959194509250565b614a9981614451565b82525050565b6000602082019050614ab46000830184614a90565b92915050565b60008083601f840112614ad057614acf6141ca565b5b8235905067ffffffffffffffff811115614aed57614aec6141cf565b5b602083019150836020820283011115614b0957614b086141d4565b5b9250929050565b60008060208385031215614b2757614b26614162565b5b600083013567ffffffffffffffff811115614b4557614b44614167565b5b614b5185828601614aba565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614bc3578082015181840152602081019050614ba8565b60008484015250505050565b6000601f19601f8301169050919050565b6000614beb82614b89565b614bf58185614b94565b9350614c05818560208601614ba5565b614c0e81614bcf565b840191505092915050565b6000614c258383614be0565b905092915050565b6000602082019050919050565b6000614c4582614b5d565b614c4f8185614b68565b935083602082028501614c6185614b79565b8060005b85811015614c9d5784840389528151614c7e8582614c19565b9450614c8983614c2d565b925060208a01995050600181019050614c65565b50829750879550505050505092915050565b60006020820190508181036000830152614cc98184614c3a565b905092915050565b6000819050919050565b6000614cf6614cf1614cec8461416c565b614cd1565b61416c565b9050919050565b6000614d0882614cdb565b9050919050565b6000614d1a82614cfd565b9050919050565b614d2a81614d0f565b82525050565b6000602082019050614d456000830184614d21565b92915050565b60008060008060608587031215614d6557614d64614162565b5b6000614d73878288016141b5565b9450506020614d84878288016144a8565b935050604085013567ffffffffffffffff811115614da557614da4614167565b5b614db187828801614556565b925092505092959194509250565b600080600060608486031215614dd857614dd7614162565b5b6000614de6868287016141b5565b9350506020614df7868287016141b5565b9250506040614e08868287016148a7565b9150509250925092565b6000604082019050614e2760008301856149b2565b614e34602083018461434a565b9392505050565b60008060408385031215614e5257614e51614162565b5b6000614e60858286016141b5565b9250506020614e7185828601614623565b9150509250929050565b614e84816146cb565b8114614e8f57600080fd5b50565b600081359050614ea181614e7b565b92915050565b60008060008060608587031215614ec157614ec0614162565b5b6000614ecf878288016141b5565b945050602085013567ffffffffffffffff811115614ef057614eef614167565b5b614efc87828801614556565b93509350506040614f0f87828801614e92565b91505092959194509250565b6000604082019050614f306000830185614a90565b614f3d602083018461434a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215614f8957614f88614162565b5b6000614f97848285016148a7565b91505092915050565b614fa98161418c565b82525050565b6000602082019050614fc46000830184614fa0565b92915050565b614fd381614864565b82525050565b6000606082019050614fee6000830186614fa0565b614ffb6020830185614fa0565b6150086040830184614fca565b949350505050565b615019816147e6565b82525050565b60006040820190506150346000830185615010565b615041602083018461452c565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b60006150748385615048565b9350615081838584615059565b61508a83614bcf565b840190509392505050565b600060208201905081810360008301526150b0818486615068565b90509392505050565b6000815190506150c881614890565b92915050565b6000602082840312156150e4576150e3614162565b5b60006150f2848285016150b9565b91505092915050565b600082825260208201905092915050565b600061511883856150fb565b9350615125838584615059565b61512e83614bcf565b840190509392505050565b600060608201905061514e6000830187614fa0565b61515b6020830186614fa0565b818103604083015261516e81848661510c565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006151b382614487565b91506151be83614487565b92508282039050818111156151d6576151d5615179565b5b92915050565b600080fd5b600080fd5b600080858511156151fa576151f96151dc565b5b8386111561520b5761520a6151e1565b5b6001850283019150848603905094509492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261527c5761527b615250565b5b80840192508235915067ffffffffffffffff82111561529e5761529d615255565b5b6020830192506001820236038313156152ba576152b961525a565b5b509250929050565b600081905092915050565b60006152d983856152c2565b93506152e6838584615059565b82840190509392505050565b60006152fd82614b89565b61530781856152c2565b9350615317818560208601614ba5565b80840191505092915050565b60006153308285876152cd565b915061533c82846152f2565b9150819050949350505050565b60008151905061535881614491565b92915050565b60006020828403121561537457615373614162565b5b600061538284828501615349565b91505092915050565b6000819050919050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b60006153d46153cf6153ca8461538b565b614cd1565b615395565b9050919050565b6153e4816153b9565b82525050565b60006040820190506153ff6000830185614fa0565b61540c60208301846153db565b9392505050565b60006080820190506154286000830187614fa0565b6154356020830186614fa0565b6154426040830185614fa0565b61544f6060830184614fca565b95945050505050565b6000615463826146cb565b915061546e836146cb565b9250828201905065ffffffffffff81111561548c5761548b615179565b5b92915050565b60006080820190506154a760008301886146dd565b6154b46020830187614fa0565b6154c16040830186614fa0565b81810360608301526154d481848661510c565b90509695505050505050565b60006040820190506154f56000830185614fa0565b6155026020830184614310565b9392505050565b600060208201905061551e6000830184614fca565b92915050565b7f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000600082015250565b600061555a601c83615048565b915061556582615524565b602082019050919050565b600060208201905081810360008301526155898161554d565b9050919050565b600082905092915050565b600082821b905092915050565b60006155b48383615590565b826155bf8135614864565b925060048210156155ff576155fa7fffffffff000000000000000000000000000000000000000000000000000000008360040360080261559b565b831692505b505092915050565b60006020828403121561561d5761561c614162565b5b600061562b8482850161480f565b91505092915050565b50565b60006156446000836152c2565b915061564f82615634565b600082019050919050565b600061566582615637565b9150819050919050565b60006040820190506156846000830185614fa0565b6156916020830184614fca565b9392505050565b60006156a482846152f2565b915081905092915050565b60006060820190506156c4600083018661434a565b6156d160208301856146dd565b6156de60408301846149b2565b949350505050565b60006040820190506156fb600083018561434a565b61570860208301846146dd565b9392505050565b600080fd5b61571d82614bcf565b810181811067ffffffffffffffff8211171561573c5761573b615221565b5b80604052505050565b600061574f614158565b905061575b8282615714565b919050565b600067ffffffffffffffff82111561577b5761577a615221565b5b61578482614bcf565b9050602081019050919050565b60006157a461579f84615760565b615745565b9050828152602081018484840111156157c0576157bf61570f565b5b6157cb848285615059565b509392505050565b600082601f8301126157e8576157e76141ca565b5b81356157f8848260208601615791565b91505092915050565b60008060006060848603121561581a57615819614162565b5b60006158288682870161480f565b9350506020615839868287016144a8565b925050604084013567ffffffffffffffff81111561585a57615859614167565b5b615866868287016157d3565b9150509250925092565b600061587b8261433a565b91506158868361433a565b9250828203905063ffffffff8111156158a2576158a1615179565b5b92915050565b6000819050919050565b600060ff82169050919050565b60006158da6158d56158d0846158a8565b614cd1565b6158b2565b9050919050565b6158ea816158bf565b82525050565b600060408201905061590560008301856158e1565b615912602083018461452c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600061595382614487565b915061595e83614487565b925082820190508082111561597657615975615179565b5b92915050565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b60006159b2601583615048565b91506159bd8261597c565b602082019050919050565b600060208201905081810360008301526159e1816159a5565b9050919050565b60006159f382614b89565b6159fd81856150fb565b9350615a0d818560208601614ba5565b615a1681614bcf565b840191505092915050565b6000606082019050615a366000830186614fa0565b615a436020830185614fa0565b8181036040830152615a5581846159e8565b9050949350505050565b615a68816158b2565b82525050565b6000608082019050615a836000830187614a90565b615a906020830186615a5f565b615a9d6040830185614a90565b615aaa6060830184614a90565b9594505050505056fea26469706673582212201963f6f9d62bad0d624fd627c4c520d52c674f48d874a39cde0443fdeca628cf64736f6c63430008180033",
1398
- "deployedBytecode": "0x6080604052600436106102345760003560e01c80636d5115bd1161012e578063b7009613116100ab578063d1f856ee1161006f578063d1f856ee146108b0578063d22b5989146108ee578063d6bb62c614610917578063f801a69814610954578063fe0776f5146109925761023b565b8063b7009613146107c8578063b7d2b16214610806578063c399ec881461082f578063cc1b6c811461085a578063d087d288146108855761023b565b8063a64d95ce116100f2578063a64d95ce146106d1578063abd9bd2a146106fa578063ac9650d814610737578063b0d691fe14610774578063b61d27f61461079f5761023b565b80636d5115bd146105da57806375b238fc14610617578063853551b81461064257806394c7d7ee1461066b578063a166aa89146106945761023b565b806330cae187116101bc5780634a58db19116101805780634a58db19146105045780634c1da1e21461050e5780634d44560d1461054b5780635296295214610574578063530dd4561461059d5761023b565b806330cae1871461040b5780633adc277a146104345780633ca7c02a146104715780634136a33c1461049c5780634665096d146104d95761023b565b806318ff183c1161020357806318ff183c1461030c57806319822f7c146103355780631cff79cd1461037257806325c471a0146103a25780633078f114146103cb5761023b565b806308d6122d146102405780630b0a93ba1461026957806312be8727146102a6578063167bd395146102e35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102676004803603810190610262919061426f565b6109bb565b005b34801561027557600080fd5b50610290600480360381019061028b91906142e3565b610a15565b60405161029d919061431f565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906142e3565b610a5d565b6040516102da9190614359565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906143ac565b610ac3565b005b34801561031857600080fd5b50610333600480360381019061032e91906143ec565b610ad9565b005b34801561034157600080fd5b5061035c600480360381019061035791906144bd565b610b50565b604051610369919061453b565b60405180910390f35b61038c600480360381019061038791906145ac565b610b83565b6040516103999190614359565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190614638565b610cd6565b005b3480156103d757600080fd5b506103f260048036038101906103ed919061468b565b610cf8565b60405161040294939291906146ec565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190614731565b610e1d565b005b34801561044057600080fd5b5061045b60048036038101906104569190614771565b610e33565b604051610468919061479e565b60405180910390f35b34801561047d57600080fd5b50610486610e7f565b604051610493919061431f565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190614771565b610e8b565b6040516104d09190614359565b60405180910390f35b3480156104e557600080fd5b506104ee610ebb565b6040516104fb9190614359565b60405180910390f35b61050c610ec6565b005b34801561051a57600080fd5b50610535600480360381019061053091906147b9565b610f3b565b6040516105429190614359565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190614824565b610fb8565b005b34801561058057600080fd5b5061059b60048036038101906105969190614731565b61104b565b005b3480156105a957600080fd5b506105c460048036038101906105bf91906142e3565b611061565b6040516105d1919061431f565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc91906148bc565b6110a9565b60405161060e919061431f565b60405180910390f35b34801561062357600080fd5b5061062c611158565b604051610639919061431f565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190614952565b61115d565b005b34801561067757600080fd5b50610692600480360381019061068d91906145ac565b611226565b005b3480156106a057600080fd5b506106bb60048036038101906106b691906147b9565b611344565b6040516106c891906149c1565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f391906149dc565b61139c565b005b34801561070657600080fd5b50610721600480360381019061071c9190614a1c565b6113b2565b60405161072e9190614a9f565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190614b10565b6113eb565b60405161076b9190614caf565b60405180910390f35b34801561078057600080fd5b506107896115cf565b6040516107969190614d30565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614d4b565b6115f7565b005b3480156107d457600080fd5b506107ef60048036038101906107ea9190614dbf565b611655565b6040516107fd929190614e12565b60405180910390f35b34801561081257600080fd5b5061082d6004803603810190610828919061468b565b611702565b005b34801561083b57600080fd5b50610844611719565b604051610851919061453b565b60405180910390f35b34801561086657600080fd5b5061086f6117a1565b60405161087c9190614359565b60405180910390f35b34801561089157600080fd5b5061089a6117ac565b6040516108a7919061453b565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d2919061468b565b611837565b6040516108e5929190614e12565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614e3b565b6118cb565b005b34801561092357600080fd5b5061093e60048036038101906109399190614a1c565b6118e1565b60405161094b9190614359565b60405180910390f35b34801561096057600080fd5b5061097b60048036038101906109769190614ea7565b611ad4565b604051610989929190614f1b565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b4919061468b565b611cb8565b005b6109c3611d33565b60005b83839050811015610a0e57610a03858585848181106109e8576109e7614f44565b5b90506020020160208101906109fd9190614f73565b84611de0565b8060010190506109c6565b5050505050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160089054906101000a900467ffffffffffffffff169050919050565b6000610abc600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611ef5565b9050919050565b610acb611d33565b610ad58282611f1e565b5050565b610ae1611d33565b8173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401610b1a9190614faf565b600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b505050505050565b6000610b5a612039565b610b6484846120b0565b9050610b738460200135612313565b610b7c82612316565b9392505050565b600080610b8e6123b2565b9050600080610b9f838888886123ba565b9150915081158015610bb7575060008163ffffffff16145b15610c06578287610bc8888861243a565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401610bfd93929190614fd9565b60405180910390fd5b6000610c14848989896113b2565b90506000808363ffffffff16141580610c3e57506000610c3383610e33565b65ffffffffffff1614155b15610c4f57610c4c82612463565b90505b60006003549050610c698a610c648b8b61243a565b612619565b600381905550610cbe8a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503461264c565b50806003819055508196505050505050509392505050565b610cde611d33565b610cf28383610cec86610a5d565b84612719565b50505050565b6000806000806000600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900465ffffffffffff169450600460009054906101000a900460ff1615610dcf57610dbe8160000160069054906101000a90046dffffffffffffffffffffffffffff16612aea565b809450819550829650505050610e13565b610e068160000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612b0d565b8094508195508296505050505b5092959194509250565b610e25611d33565b610e2f8282612b30565b5050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff169050610e6a81612c3f565b610e745780610e77565b60005b915050919050565b67ffffffffffffffff81565b60006002600083815260200190815260200160002060000160069054906101000a900463ffffffff169050919050565b600062093a80905090565b610ece6115cf565b73ffffffffffffffffffffffffffffffffffffffff1663b760faf934306040518363ffffffff1660e01b8152600401610f079190614faf565b6000604051808303818588803b158015610f2057600080fd5b505af1158015610f34573d6000803e3d6000fd5b5050505050565b6000610fb16000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611ef5565b9050919050565b610fd2610fc36123b2565b610fcb612c7b565b6001612c88565b50610fdb6115cf565b73ffffffffffffffffffffffffffffffffffffffff1663205c287883836040518363ffffffff1660e01b815260040161101592919061501f565b600060405180830381600087803b15801561102f57600080fd5b505af1158015611043573d6000803e3d6000fd5b505050505050565b611053611d33565b61105d8282612d86565b5050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160009054906101000a900467ffffffffffffffff169050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900467ffffffffffffffff16905092915050565b600081565b611165611d33565b600067ffffffffffffffff168367ffffffffffffffff16148061119b575067ffffffffffffffff80168367ffffffffffffffff16145b156111dd57826040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016111d4919061431f565b60405180910390fd5b8267ffffffffffffffff167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051611219929190615095565b60405180910390a2505050565b60006112306123b2565b9050638fb3603760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff16638fb360376040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c891906150ce565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461132957806040517f320ff7480000000000000000000000000000000000000000000000000000000081526004016113209190614faf565b60405180910390fd5b61133d611338858386866113b2565b612463565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e9054906101000a900460ff169050919050565b6113a4611d33565b6113ae8282612e95565b5050565b6000848484846040516020016113cb9493929190615139565b604051602081830303815290604052805190602001209050949350505050565b606060006113f76123b2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461149a5760003661143461300c565b600036905061144391906151a8565b908092611452939291906151e6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114e9565b600067ffffffffffffffff8111156114b5576114b4615221565b5b6040519080825280601f01601f1916602001820160405280156114e75781602001600182028036833780820191505090505b505b90508383905067ffffffffffffffff81111561150857611507615221565b5b60405190808252806020026020018201604052801561153b57816020015b60608152602001906001900390816115265790505b50915060005b848490508110156115c75761159c3086868481811061156357611562614f44565b5b9050602002810190611575919061525f565b8560405160200161158893929190615323565b604051602081830303815290604052613011565b8382815181106115af576115ae614f44565b5b60200260200101819052508080600101915050611541565b505092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6115ff612039565b61164e8483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508561264c565b5050505050565b60008061166184611344565b1561167257600080915091506116fa565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036116ba576116af8484613095565b6000915091506116fa565b60006116c685856110a9565b90506000806116d58389611837565b91509150816116e6576000806116f2565b60008163ffffffff1614815b945094505050505b935093915050565b61170a611d33565b61171482826130ad565b505050565b60006117236115cf565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161175b9190614faf565b602060405180830381865afa158015611778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179c919061535e565b905090565b600062069780905090565b60006117b66115cf565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a3060006040518363ffffffff1660e01b81526004016117f19291906153ea565b602060405180830381865afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611832919061535e565b905090565b60008067ffffffffffffffff80168467ffffffffffffffff16036118625760016000915091506118c4565b60008061186f8686610cf8565b50509150915060008265ffffffffffff16141580156118bc5750600460009054906101000a900460ff16806118bb57506118a7613299565b65ffffffffffff168265ffffffffffff1611155b5b819350935050505b9250929050565b6118d3611d33565b6118dd82826132a9565b5050565b6000806118ec6123b2565b905060006118fa858561243a565b9050600061190a888888886113b2565b905060006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff160361198157806040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016119789190614a9f565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611a3b5760006119c1600085611837565b50905060006119e16119db6119d68b876110a9565b610a15565b86611837565b509050811580156119f0575080155b15611a3857848a8a866040517f3fe2751c000000000000000000000000000000000000000000000000000000008152600401611a2f9493929190615413565b60405180910390fd5b50505b6002600082815260200190815260200160002060000160006101000a81549065ffffffffffff021916905560006002600083815260200190815260200160002060000160069054906101000a900463ffffffff1690508063ffffffff16827fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f760405160405180910390a380945050505050949350505050565b6000806000611ae16123b2565b90506000611af1828989896123ba565b91505060008163ffffffff16611b05613299565b611b0f9190615458565b905060008263ffffffff161480611b49575060008665ffffffffffff16118015611b4857508065ffffffffffff168665ffffffffffff16105b5b15611b98578289611b5a8a8a61243a565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401611b8f93929190614fd9565b60405180910390fd5b611bb28665ffffffffffff168265ffffffffffff16613402565b9550611bc0838a8a8a6113b2565b9450611bcb8561341b565b60016002600087815260200190815260200160002060000160069054906101000a900463ffffffff16019350856002600087815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550836002600087815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508363ffffffff16857f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b488868d8d8d604051611ca4959493929190615492565b60405180910390a350505094509492505050565b611cc06123b2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f5f159e6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d2e82826130ad565b505050565b6000611d3d6123b2565b9050600080611d5383611d4e612c7b565b6134ad565b9150915081611ddb5760008163ffffffff1603611dbf576000611d7c611d77612c7b565b61359b565b5091505083816040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401611db69291906154e0565b60405180910390fd5b611dd9611dd48430611dcf612c7b565b6113b2565b612463565b505b505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde94915184604051611ee89190615509565b60405180910390a3505050565b600080611f11836dffffffffffffffffffffffffffff16612b0d565b5050905080915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f8e57816040517f5a068bc8000000000000000000000000000000000000000000000000000000008152600401611f859190614faf565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1388260405161202d91906149c1565b60405180910390a25050565b6120416115cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a590615570565b60405180910390fd5b565b60006001600460006101000a81548160ff02191690831515021790555060008380606001906120df919061525f565b6000906004926120f1939291906151e6565b906120fc91906155a8565b90507fb61d27f68746b0955d4867ce6e77d35c62208909547ca5c62d2a533c00d5b8377bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146121a057806040517fd4d202fb0000000000000000000000000000000000000000000000000000000081526004016121979190615509565b60405180910390fd5b60008480606001906121b2919061525f565b6004906024926121c4939291906151e6565b8101906121d19190615607565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612238576040517ffcd888ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061224385613983565b905060006122a4828880610100019061225c919061525f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506139b9565b90506122c1818880606001906122ba919061525f565b6000612c88565b6122d25760019450505050506122f2565b6122eb818880606001906122e6919061525f565b6139e5565b9450505050505b6000600460006101000a81548160ff02191690831515021790555092915050565b50565b600081146123af5760003373ffffffffffffffffffffffffffffffffffffffff16827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906040516123669061565a565b600060405180830381858888f193505050503d80600081146123a4576040519150601f19603f3d011682016040523d82523d6000602084013e6123a9565b606091505b50509050505b50565b600033905090565b6000803073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612404576123fb8685856134ad565b91509150612431565b6004848490501061242857612423868661241e878761243a565b611655565b61242c565b6000805b915091505b94509492505050565b60008282600090600492612450939291906151e6565b9061245b91906155a8565b905092915050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060006002600085815260200190815260200160002060000160069054906101000a900463ffffffff16905060008265ffffffffffff160361250957836040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016125009190614a9f565b60405180910390fd5b612511613299565b65ffffffffffff168265ffffffffffff16111561256557836040517f18cb6b7a00000000000000000000000000000000000000000000000000000000815260040161255c9190614a9f565b60405180910390fd5b61256e82612c3f565b156125b057836040517f78a5d6e40000000000000000000000000000000000000000000000000000000081526004016125a79190614a9f565b60405180910390fd5b6002600085815260200190815260200160002060000160006101000a81549065ffffffffffff02191690558063ffffffff16847f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d60405160405180910390a38092505050919050565b6000828260405160200161262e92919061566f565b60405160208183030381529060405280519060200120905092915050565b60608147101561269357306040517fcd78605900000000000000000000000000000000000000000000000000000000815260040161268a9190614faf565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516126bc9190615698565b60006040518083038185875af1925050503d80600081146126f9576040519150601f19603f3d011682016040523d82523d6000602084013e6126fe565b606091505b509150915061270e868383613a98565b925050509392505050565b600067ffffffffffffffff80168567ffffffffffffffff160361277357846040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161276a919061431f565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115612931578463ffffffff16612815613299565b61281f9190615458565b905060405180604001604052808265ffffffffffff1681526020016128498663ffffffff16613b27565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550905050612a80565b6129db846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613b379092919063ffffffff16565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051612ad5939291906156af565b60405180910390a38192505050949350505050565b6000806000612b0084612afb613bc9565b613bde565b9250925092509193909250565b6000806000612b2384612b1e613299565b613c3b565b9250925092509193909250565b600067ffffffffffffffff168267ffffffffffffffff161480612b66575067ffffffffffffffff80168267ffffffffffffffff16145b15612ba857816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612b9f919061431f565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e634060405160405180910390a35050565b6000612c49613299565b65ffffffffffff16612c59610ebb565b63ffffffff1683612c6a9190615458565b65ffffffffffff1611159050919050565b3660008036915091509091565b6000806000612cb687308888600090600492612ca6939291906151e6565b90612cb191906155a8565b611655565b9150915081612d775760008163ffffffff161115612d00576040517f99ec076b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8315612d6c5786612d2f308888600090600492612d1f939291906151e6565b90612d2a91906155a8565b6110a9565b6040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401612d639291906154e0565b60405180910390fd5b600092505050612d7e565b6001925050505b949350505050565b600067ffffffffffffffff168267ffffffffffffffff161480612dbc575067ffffffffffffffff80168267ffffffffffffffff16145b15612dfe57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612df5919061431f565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae260405160405180910390a35050565b67ffffffffffffffff80168267ffffffffffffffff1603612eed57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612ee4919061431f565b60405180910390fd5b6000612f5f82612efb6117a1565b600160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613b379092919063ffffffff16565b600160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160108294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508267ffffffffffffffff167ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b488383604051612fff9291906156e6565b60405180910390a2505050565b600090565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161303b9190615698565b600060405180830381855af49150503d8060008114613076576040519150601f19603f3d011682016040523d82523d6000602084013e61307b565b606091505b509150915061308b858383613a98565b9250505092915050565b60006130a18383612619565b60035414905092915050565b600067ffffffffffffffff80168367ffffffffffffffff160361310757826040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016130fe919061431f565b60405180910390fd5b6000600160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff160361319c5760009050613293565b600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549065ffffffffffff02191690556000820160066101000a8154906dffffffffffffffffffffffffffff021916905550508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16660405160405180910390a3600190505b92915050565b60006132a442613c98565b905090565b6000613332826132b76117a1565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613b379092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508273ffffffffffffffffffffffffffffffffffffffff167fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c83836040516133f59291906156e6565b60405180910390a2505050565b60008183116134115781613413565b825b905092915050565b60006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060008165ffffffffffff1614158015613467575061346581612c3f565b155b156134a957816040517f813e94590000000000000000000000000000000000000000000000000000000081526004016134a09190614a9f565b60405180910390fd5b5050565b60008060048484905010156134c85760008091509150613593565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036135195761350e30613509868661243a565b613095565b600091509150613593565b6000806000613528878761359b565b925092509250826135425760008094509450505050613593565b60008061354f848b611837565b915091508161356957600080965096505050505050613593565b61357f8363ffffffff168263ffffffff16613402565b955060008663ffffffff1614965050505050505b935093915050565b600080600060048585905010156135bc57600080600092509250925061397c565b60006135c8868661243a565b905063853551b860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061366157506330cae18760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806136b05750635296295260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806136ff575063a64d95ce60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061374e575063d22b598960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156137645760016000809350935093505061397c565b6318ff183c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806137fb575063167bd39560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061384a57506308d6122d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156138945760008686600490602492613865939291906151e6565b8101906138729190615607565b9050600061387f82610f3b565b9050600160008295509550955050505061397c565b6325c471a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061392b575063b7d2b16260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561396f5760008686600490602492613946939291906151e6565b81019061395391906142e3565b9050600161396082611061565b6000945094509450505061397c565b6000806000935093509350505b9250925092565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b6000806000806139c98686613cf2565b9250925092506139d98282613d4e565b82935050505092915050565b600080600084846004906004888890506139ff91906151a8565b92613a0c939291906151e6565b810190613a199190615801565b9250509150600080613a3f8885613a3a600087613eb290919063ffffffff16565b611655565b915091508180613a55575060008163ffffffff16145b15613a745781613a66576001613a69565b60005b945050505050613a91565b613a87613a82898686613f19565b612463565b5060009450505050505b9392505050565b606082613aad57613aa882613f4f565b613b1f565b60008251148015613ad5575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15613b1757836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401613b0e9190614faf565b60405180910390fd5b819050613b20565b5b9392505050565b60008163ffffffff169050919050565b6000806000613b55866dffffffffffffffffffffffffffff16611ef5565b90506000613b958563ffffffff168763ffffffff168463ffffffff1611613b7d576000613b8a565b8784613b899190615870565b5b63ffffffff16613402565b90508063ffffffff16613ba6613299565b613bb09190615458565b9250613bbd828785613f94565b93505050935093915050565b6000613bd96407915ecc00613c98565b905090565b600080600080600080613c00886dffffffffffffffffffffffffffff16613fe0565b9250925092508665ffffffffffff168165ffffffffffff161115613c2657828282613c2b565b816000805b9550955095505050509250925092565b600080600080600080613c5d886dffffffffffffffffffffffffffff16614022565b9250925092508665ffffffffffff168165ffffffffffff161115613c8357828282613c88565b816000805b9550955095505050509250925092565b600065ffffffffffff8016821115613cea576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401613ce19291906158f0565b60405180910390fd5b819050919050565b60008060006041845103613d375760008060006020870151925060408701519150606087015160001a9050613d2988828585614064565b955095509550505050613d47565b60006002855160001b9250925092505b9250925092565b60006003811115613d6257613d61615919565b5b826003811115613d7557613d74615919565b5b0315613eae5760016003811115613d8f57613d8e615919565b5b826003811115613da257613da1615919565b5b03613dd9576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115613ded57613dec615919565b5b826003811115613e0057613dff615919565b5b03613e45578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401613e3c919061453b565b60405180910390fd5b600380811115613e5857613e57615919565b5b826003811115613e6b57613e6a615919565b5b03613ead57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613ea49190614a9f565b60405180910390fd5b5b5050565b6000602082613ec19190615948565b83511015613f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613efb906159c8565b60405180910390fd5b60008260208501015190508091505092915050565b6000838383604051602001613f3093929190615a21565b6040516020818303038152906040528051906020012090509392505050565b600081511115613f625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c11156140a457600060038592509250925061414e565b6000600188888888604051600081526020016040526040516140c99493929190615a6e565b6020604051602081039080840390855afa1580156140eb573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361413f57600060016000801b9350935093505061414e565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141978261416c565b9050919050565b6141a78161418c565b81146141b257600080fd5b50565b6000813590506141c48161419e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126141ef576141ee6141ca565b5b8235905067ffffffffffffffff81111561420c5761420b6141cf565b5b602083019150836020820283011115614228576142276141d4565b5b9250929050565b600067ffffffffffffffff82169050919050565b61424c8161422f565b811461425757600080fd5b50565b60008135905061426981614243565b92915050565b6000806000806060858703121561428957614288614162565b5b6000614297878288016141b5565b945050602085013567ffffffffffffffff8111156142b8576142b7614167565b5b6142c4878288016141d9565b935093505060406142d78782880161425a565b91505092959194509250565b6000602082840312156142f9576142f8614162565b5b60006143078482850161425a565b91505092915050565b6143198161422f565b82525050565b60006020820190506143346000830184614310565b92915050565b600063ffffffff82169050919050565b6143538161433a565b82525050565b600060208201905061436e600083018461434a565b92915050565b60008115159050919050565b61438981614374565b811461439457600080fd5b50565b6000813590506143a681614380565b92915050565b600080604083850312156143c3576143c2614162565b5b60006143d1858286016141b5565b92505060206143e285828601614397565b9150509250929050565b6000806040838503121561440357614402614162565b5b6000614411858286016141b5565b9250506020614422858286016141b5565b9150509250929050565b600080fd5b600061012082840312156144485761444761442c565b5b81905092915050565b6000819050919050565b61446481614451565b811461446f57600080fd5b50565b6000813590506144818161445b565b92915050565b6000819050919050565b61449a81614487565b81146144a557600080fd5b50565b6000813590506144b781614491565b92915050565b6000806000606084860312156144d6576144d5614162565b5b600084013567ffffffffffffffff8111156144f4576144f3614167565b5b61450086828701614431565b935050602061451186828701614472565b9250506040614522868287016144a8565b9150509250925092565b61453581614487565b82525050565b6000602082019050614550600083018461452c565b92915050565b60008083601f84011261456c5761456b6141ca565b5b8235905067ffffffffffffffff811115614589576145886141cf565b5b6020830191508360018202830111156145a5576145a46141d4565b5b9250929050565b6000806000604084860312156145c5576145c4614162565b5b60006145d3868287016141b5565b935050602084013567ffffffffffffffff8111156145f4576145f3614167565b5b61460086828701614556565b92509250509250925092565b6146158161433a565b811461462057600080fd5b50565b6000813590506146328161460c565b92915050565b60008060006060848603121561465157614650614162565b5b600061465f8682870161425a565b9350506020614670868287016141b5565b925050604061468186828701614623565b9150509250925092565b600080604083850312156146a2576146a1614162565b5b60006146b08582860161425a565b92505060206146c1858286016141b5565b9150509250929050565b600065ffffffffffff82169050919050565b6146e6816146cb565b82525050565b600060808201905061470160008301876146dd565b61470e602083018661434a565b61471b604083018561434a565b61472860608301846146dd565b95945050505050565b6000806040838503121561474857614747614162565b5b60006147568582860161425a565b92505060206147678582860161425a565b9150509250929050565b60006020828403121561478757614786614162565b5b600061479584828501614472565b91505092915050565b60006020820190506147b360008301846146dd565b92915050565b6000602082840312156147cf576147ce614162565b5b60006147dd848285016141b5565b91505092915050565b60006147f18261416c565b9050919050565b614801816147e6565b811461480c57600080fd5b50565b60008135905061481e816147f8565b92915050565b6000806040838503121561483b5761483a614162565b5b60006148498582860161480f565b925050602061485a858286016144a8565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61489981614864565b81146148a457600080fd5b50565b6000813590506148b681614890565b92915050565b600080604083850312156148d3576148d2614162565b5b60006148e1858286016141b5565b92505060206148f2858286016148a7565b9150509250929050565b60008083601f840112614912576149116141ca565b5b8235905067ffffffffffffffff81111561492f5761492e6141cf565b5b60208301915083600182028301111561494b5761494a6141d4565b5b9250929050565b60008060006040848603121561496b5761496a614162565b5b60006149798682870161425a565b935050602084013567ffffffffffffffff81111561499a57614999614167565b5b6149a6868287016148fc565b92509250509250925092565b6149bb81614374565b82525050565b60006020820190506149d660008301846149b2565b92915050565b600080604083850312156149f3576149f2614162565b5b6000614a018582860161425a565b9250506020614a1285828601614623565b9150509250929050565b60008060008060608587031215614a3657614a35614162565b5b6000614a44878288016141b5565b9450506020614a55878288016141b5565b935050604085013567ffffffffffffffff811115614a7657614a75614167565b5b614a8287828801614556565b925092505092959194509250565b614a9981614451565b82525050565b6000602082019050614ab46000830184614a90565b92915050565b60008083601f840112614ad057614acf6141ca565b5b8235905067ffffffffffffffff811115614aed57614aec6141cf565b5b602083019150836020820283011115614b0957614b086141d4565b5b9250929050565b60008060208385031215614b2757614b26614162565b5b600083013567ffffffffffffffff811115614b4557614b44614167565b5b614b5185828601614aba565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614bc3578082015181840152602081019050614ba8565b60008484015250505050565b6000601f19601f8301169050919050565b6000614beb82614b89565b614bf58185614b94565b9350614c05818560208601614ba5565b614c0e81614bcf565b840191505092915050565b6000614c258383614be0565b905092915050565b6000602082019050919050565b6000614c4582614b5d565b614c4f8185614b68565b935083602082028501614c6185614b79565b8060005b85811015614c9d5784840389528151614c7e8582614c19565b9450614c8983614c2d565b925060208a01995050600181019050614c65565b50829750879550505050505092915050565b60006020820190508181036000830152614cc98184614c3a565b905092915050565b6000819050919050565b6000614cf6614cf1614cec8461416c565b614cd1565b61416c565b9050919050565b6000614d0882614cdb565b9050919050565b6000614d1a82614cfd565b9050919050565b614d2a81614d0f565b82525050565b6000602082019050614d456000830184614d21565b92915050565b60008060008060608587031215614d6557614d64614162565b5b6000614d73878288016141b5565b9450506020614d84878288016144a8565b935050604085013567ffffffffffffffff811115614da557614da4614167565b5b614db187828801614556565b925092505092959194509250565b600080600060608486031215614dd857614dd7614162565b5b6000614de6868287016141b5565b9350506020614df7868287016141b5565b9250506040614e08868287016148a7565b9150509250925092565b6000604082019050614e2760008301856149b2565b614e34602083018461434a565b9392505050565b60008060408385031215614e5257614e51614162565b5b6000614e60858286016141b5565b9250506020614e7185828601614623565b9150509250929050565b614e84816146cb565b8114614e8f57600080fd5b50565b600081359050614ea181614e7b565b92915050565b60008060008060608587031215614ec157614ec0614162565b5b6000614ecf878288016141b5565b945050602085013567ffffffffffffffff811115614ef057614eef614167565b5b614efc87828801614556565b93509350506040614f0f87828801614e92565b91505092959194509250565b6000604082019050614f306000830185614a90565b614f3d602083018461434a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215614f8957614f88614162565b5b6000614f97848285016148a7565b91505092915050565b614fa98161418c565b82525050565b6000602082019050614fc46000830184614fa0565b92915050565b614fd381614864565b82525050565b6000606082019050614fee6000830186614fa0565b614ffb6020830185614fa0565b6150086040830184614fca565b949350505050565b615019816147e6565b82525050565b60006040820190506150346000830185615010565b615041602083018461452c565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b60006150748385615048565b9350615081838584615059565b61508a83614bcf565b840190509392505050565b600060208201905081810360008301526150b0818486615068565b90509392505050565b6000815190506150c881614890565b92915050565b6000602082840312156150e4576150e3614162565b5b60006150f2848285016150b9565b91505092915050565b600082825260208201905092915050565b600061511883856150fb565b9350615125838584615059565b61512e83614bcf565b840190509392505050565b600060608201905061514e6000830187614fa0565b61515b6020830186614fa0565b818103604083015261516e81848661510c565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006151b382614487565b91506151be83614487565b92508282039050818111156151d6576151d5615179565b5b92915050565b600080fd5b600080fd5b600080858511156151fa576151f96151dc565b5b8386111561520b5761520a6151e1565b5b6001850283019150848603905094509492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261527c5761527b615250565b5b80840192508235915067ffffffffffffffff82111561529e5761529d615255565b5b6020830192506001820236038313156152ba576152b961525a565b5b509250929050565b600081905092915050565b60006152d983856152c2565b93506152e6838584615059565b82840190509392505050565b60006152fd82614b89565b61530781856152c2565b9350615317818560208601614ba5565b80840191505092915050565b60006153308285876152cd565b915061533c82846152f2565b9150819050949350505050565b60008151905061535881614491565b92915050565b60006020828403121561537457615373614162565b5b600061538284828501615349565b91505092915050565b6000819050919050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b60006153d46153cf6153ca8461538b565b614cd1565b615395565b9050919050565b6153e4816153b9565b82525050565b60006040820190506153ff6000830185614fa0565b61540c60208301846153db565b9392505050565b60006080820190506154286000830187614fa0565b6154356020830186614fa0565b6154426040830185614fa0565b61544f6060830184614fca565b95945050505050565b6000615463826146cb565b915061546e836146cb565b9250828201905065ffffffffffff81111561548c5761548b615179565b5b92915050565b60006080820190506154a760008301886146dd565b6154b46020830187614fa0565b6154c16040830186614fa0565b81810360608301526154d481848661510c565b90509695505050505050565b60006040820190506154f56000830185614fa0565b6155026020830184614310565b9392505050565b600060208201905061551e6000830184614fca565b92915050565b7f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000600082015250565b600061555a601c83615048565b915061556582615524565b602082019050919050565b600060208201905081810360008301526155898161554d565b9050919050565b600082905092915050565b600082821b905092915050565b60006155b48383615590565b826155bf8135614864565b925060048210156155ff576155fa7fffffffff000000000000000000000000000000000000000000000000000000008360040360080261559b565b831692505b505092915050565b60006020828403121561561d5761561c614162565b5b600061562b8482850161480f565b91505092915050565b50565b60006156446000836152c2565b915061564f82615634565b600082019050919050565b600061566582615637565b9150819050919050565b60006040820190506156846000830185614fa0565b6156916020830184614fca565b9392505050565b60006156a482846152f2565b915081905092915050565b60006060820190506156c4600083018661434a565b6156d160208301856146dd565b6156de60408301846149b2565b949350505050565b60006040820190506156fb600083018561434a565b61570860208301846146dd565b9392505050565b600080fd5b61571d82614bcf565b810181811067ffffffffffffffff8211171561573c5761573b615221565b5b80604052505050565b600061574f614158565b905061575b8282615714565b919050565b600067ffffffffffffffff82111561577b5761577a615221565b5b61578482614bcf565b9050602081019050919050565b60006157a461579f84615760565b615745565b9050828152602081018484840111156157c0576157bf61570f565b5b6157cb848285615059565b509392505050565b600082601f8301126157e8576157e76141ca565b5b81356157f8848260208601615791565b91505092915050565b60008060006060848603121561581a57615819614162565b5b60006158288682870161480f565b9350506020615839868287016144a8565b925050604084013567ffffffffffffffff81111561585a57615859614167565b5b615866868287016157d3565b9150509250925092565b600061587b8261433a565b91506158868361433a565b9250828203905063ffffffff8111156158a2576158a1615179565b5b92915050565b6000819050919050565b600060ff82169050919050565b60006158da6158d56158d0846158a8565b614cd1565b6158b2565b9050919050565b6158ea816158bf565b82525050565b600060408201905061590560008301856158e1565b615912602083018461452c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600061595382614487565b915061595e83614487565b925082820190508082111561597657615975615179565b5b92915050565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b60006159b2601583615048565b91506159bd8261597c565b602082019050919050565b600060208201905081810360008301526159e1816159a5565b9050919050565b60006159f382614b89565b6159fd81856150fb565b9350615a0d818560208601614ba5565b615a1681614bcf565b840191505092915050565b6000606082019050615a366000830186614fa0565b615a436020830185614fa0565b8181036040830152615a5581846159e8565b9050949350505050565b615a68816158b2565b82525050565b6000608082019050615a836000830187614a90565b615a906020830186615a5f565b615a9d6040830185614a90565b615aaa6060830184614a90565b9594505050505056fea26469706673582212201963f6f9d62bad0d624fd627c4c520d52c674f48d874a39cde0443fdeca628cf64736f6c63430008180033",
1437
+ "bytecode": "0x60a060405234801561000f575f5ffd5b50604051613aef380380613aef83398101604081905261002e91610466565b806001600160a01b03811661005d57604051630409d6d160e11b81525f60048201526024015b60405180910390fd5b6100695f82818061007d565b5050506001600160a01b03166080526104ec565b5f6002600160401b03196001600160401b038616016100ba5760405163061c6a4360e21b81526001600160401b0386166004820152602401610054565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff16159081156101af5763ffffffff85166101056102c3565b61010f91906104b2565b905060405180604001604052808265ffffffffffff16815260200161013f8663ffffffff166102d260201b60201c565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c16845282529091208351815494909201519092166601000000000000026001600160a01b031990931665ffffffffffff90911617919091179055610255565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a1684529091528120546101fb9166010000000000009091046001600160701b03169086906102db565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316660100000000000002600160301b600160a01b03199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f6102cd42610381565b905090565b63ffffffff1690565b5f80806102f06001600160701b0387166103b7565b90505f61032b8563ffffffff168763ffffffff168463ffffffff1611610316575f610320565b61032088856104d0565b63ffffffff166103d5565b905063ffffffff811661033c6102c3565b61034691906104b2565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b5f65ffffffffffff8211156103b3576040516306dfcc6560e41b81526030600482015260248101839052604401610054565b5090565b5f806103cb6001600160701b0384166103e5565b5090949350505050565b8082118183180281185b92915050565b5f80806103f9846103f46102c3565b610406565b9250925092509193909250565b6001600160501b03602083901c166001600160701b03831665ffffffffffff604085901c811690841681111561043e57828282610442565b815f5f5b9250925092509250925092565b6001600160a01b0381168114610463575f5ffd5b50565b5f5f60408385031215610477575f5ffd5b82516104828161044f565b60208401519092506104938161044f565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff81811683821601908111156103df576103df61049e565b63ffffffff82811682821603908111156103df576103df61049e565b6080516135c86105275f395f818161068801528181610c5201528181610d2601528181611139015281816111ce01526116e201526135c85ff3fe608060405260043610610236575f3560e01c80636d5115bd11610129578063b7009613116100a8578063d1f856ee1161006d578063d1f856ee14610768578063d22b598914610787578063d6bb62c6146107a6578063f801a698146107c5578063fe0776f5146107fe575f5ffd5b8063b7009613146106d1578063b7d2b1621461070c578063c399ec881461072b578063cc1b6c811461073f578063d087d28814610754575f5ffd5b8063a64d95ce116100ee578063a64d95ce14610605578063abd9bd2a14610624578063ac9650d814610643578063b0d691fe1461066f578063b61d27f6146106b2575f5ffd5b80636d5115bd1461056657806375b238fc14610585578063853551b81461059857806394c7d7ee146105b7578063a166aa89146105d6575f5ffd5b806334fcd5be116101b55780634a58db191161017a5780634a58db19146104c65780634c1da1e2146104ce5780634d44560d146104ed578063529629521461050c578063530dd4561461052b575f5ffd5b806334fcd5be1461040a5780633adc277a146104295780633ca7c02a1461045f5780634136a33c146104795780634665096d146104b1575f5ffd5b806319822f7c116101fb57806319822f7c146103335780631cff79cd1461036057806325c471a0146103735780633078f1141461039257806330cae187146103eb575f5ffd5b806308d6122d146102415780630b0a93ba1461026257806312be8727146102c1578063167bd395146102f557806318ff183c14610314575f5ffd5b3661023d57005b5f5ffd5b34801561024c575f5ffd5b5061026061025b366004612c6c565b61081d565b005b34801561026d575f5ffd5b506102a461027c366004612cce565b6001600160401b039081165f9081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b3480156102cc575f5ffd5b506102e06102db366004612cce565b61086f565b60405163ffffffff90911681526020016102b8565b348015610300575f5ffd5b5061026061030f366004612ce7565b6108a9565b34801561031f575f5ffd5b5061026061032e366004612d22565b6108bf565b34801561033e575f5ffd5b5061035261034d366004612d4e565b610922565b6040519081526020016102b8565b6102e061036e366004612dd9565b610947565b34801561037e575f5ffd5b5061026061038d366004612e3c565b610a71565b34801561039d575f5ffd5b506103b16103ac366004612e7e565b610a93565b6040516102b8949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b3480156103f6575f5ffd5b50610260610405366004612e98565b610b2c565b348015610415575f5ffd5b50610260610424366004612ec9565b610b3e565b348015610434575f5ffd5b50610448610443366004612f07565b610c1f565b60405165ffffffffffff90911681526020016102b8565b34801561046a575f5ffd5b506102a46001600160401b0381565b348015610484575f5ffd5b506102e0610493366004612f07565b5f90815260026020526040902054600160301b900463ffffffff1690565b3480156104bc575f5ffd5b5062093a806102e0565b610260610c50565b3480156104d9575f5ffd5b506102e06104e8366004612f1e565b610cc5565b3480156104f8575f5ffd5b50610260610507366004612f39565b610cf2565b348015610517575f5ffd5b50610260610526366004612e98565b610d55565b348015610536575f5ffd5b506102a4610545366004612cce565b6001600160401b039081165f90815260016020819052604090912001541690565b348015610571575f5ffd5b506102a4610580366004612f78565b610d67565b348015610590575f5ffd5b506102a45f81565b3480156105a3575f5ffd5b506102606105b2366004612fa4565b610da1565b3480156105c2575f5ffd5b506102606105d1366004612dd9565b610e38565b3480156105e1575f5ffd5b506105f56105f0366004612f1e565b610ee2565b60405190151581526020016102b8565b348015610610575f5ffd5b5061026061061f366004612fbf565b610f09565b34801561062f575f5ffd5b5061035261063e366004612fe7565b610f1b565b34801561064e575f5ffd5b5061066261065d366004612ec9565b610f54565b6040516102b89190613075565b34801561067a575f5ffd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016102b8565b3480156106bd575f5ffd5b506102606106cc3660046130d8565b611039565b3480156106dc575f5ffd5b506106f06106eb366004613117565b611082565b60408051921515835263ffffffff9091166020830152016102b8565b348015610717575f5ffd5b50610260610726366004612e7e565b611103565b348015610736575f5ffd5b5061035261111a565b34801561074a575f5ffd5b50620697806102e0565b34801561075f575f5ffd5b506103526111a8565b348015610773575f5ffd5b506106f0610782366004612e7e565b6111fd565b348015610792575f5ffd5b506102606107a136600461315f565b611281565b3480156107b1575f5ffd5b506102e06107c0366004612fe7565b611293565b3480156107d0575f5ffd5b506107e46107df36600461317b565b6113e6565b6040805192835263ffffffff9091166020830152016102b8565b348015610809575f5ffd5b50610260610818366004612e7e565b611527565b610825611550565b5f5b828110156108685761086085858584818110610845576108456131e8565b905060200201602081019061085a91906131fc565b846115c7565b600101610827565b5050505050565b6001600160401b0381165f908152600160208190526040822001546108a390600160801b90046001600160701b0316611648565b92915050565b6108b1611550565b6108bb8282611666565b5050565b6108c7611550565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b906024015b5f604051808303815f87803b158015610908575f5ffd5b505af115801561091a573d5f5f3e3d5ffd5b505050505050565b5f61092b6116d7565b6109358484611751565b9050610940826118ec565b9392505050565b5f33818061095783888888611931565b915091508115801561096d575063ffffffff8116155b156109c057828761097e8888611982565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b5f6109cd84898989610f1b565b90505f63ffffffff83161515806109f357506109e882610c1f565b65ffffffffffff1615155b15610a0457610a0182611999565b90505b600354610a1a8a610a158b8b611982565b611a97565b600381905550610a618a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250349250611ad9915050565b5060035598975050505050505050565b610a79611550565b610a8d8383610a878661086f565b84611ba5565b50505050565b6001600160401b0382165f9081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff1691908190819060ff825c1615610aff578054610af390600160301b90046001600160701b0316611deb565b91955093509150610b22565b8054610b1a90600160301b90046001600160701b0316611e0c565b919550935091505b5092959194509250565b610b34611550565b6108bb8282611e20565b610b46611ec3565b805f5b81811015610a8d5736848483818110610b6457610b646131e8565b9050602002810190610b769190613217565b90505f610bd4610b896020840184612f1e565b6020840135610b9b6040860186613235565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611ecb565b905080610c155783600103610bf057610beb611ee1565b610c15565b82610bfa5f611ef2565b604051635a15467560e01b81526004016109b7929190613277565b5050600101610b49565b5f8181526002602052604081205465ffffffffffff16610c3e81611f23565b610c485780610940565b5f9392505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b158015610cb3575f5ffd5b505af1158015610868573d5f5f3e3d5ffd5b6001600160a01b0381165f908152602081905260408120600101546108a3906001600160701b0316611648565b610cff335f366001611f51565b5060405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c2878906044016108f1565b610d5d611550565b6108bb8282612008565b6001600160a01b0382165f908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610da9611550565b6001600160401b0383161580610dc757506001600160401b03838116145b15610df05760405163061c6a4360e21b81526001600160401b03841660048201526024016109b7565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610e2b9291906132b7565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610e77573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9b91906132ca565b6001600160e01b03191614610ece57604051630641fee960e31b81526001600160a01b03821660048201526024016109b7565b610868610edd85838686610f1b565b611999565b6001600160a01b03165f90815260208190526040902060010154600160701b900460ff1690565b610f11611550565b6108bb82826120b9565b5f84848484604051602001610f3394939291906132e5565b6040516020818303038152906040528051906020012090505b949350505050565b604080515f815260208101909152606090826001600160401b03811115610f7d57610f7d613369565b604051908082528060200260200182016040528015610fb057816020015b6060815260200190600190039081610f9b5790505b5091505f5b838110156110315761100c30868684818110610fd357610fd36131e8565b9050602002810190610fe59190613235565b85604051602001610ff89392919061337d565b6040516020818303038152906040526121c8565b83828151811061101e5761101e6131e8565b6020908102919091010152600101610fb5565b505092915050565b6110416116d7565b6108688483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250611ad9915050565b5f5f61108d84610ee2565b1561109c57505f9050806110fb565b306001600160a01b038616036110c0576110b6848461224a565b5f915091506110fb565b5f6110cb8585610d67565b90505f5f6110d983896111fd565b91509150816110e9575f5f6110f3565b63ffffffff811615815b945094505050505b935093915050565b61110b611550565b6111158282612260565b505050565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561117f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a391906133a0565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401611164565b5f8067fffffffffffffffe196001600160401b038516016112235750600190505f61127a565b5f5f61122f8686610a93565b5050915091508165ffffffffffff165f1415801561126f575060ff5f5c168061126f575061125b612349565b65ffffffffffff168265ffffffffffff1611155b9350915061127a9050565b9250929050565b611289611550565b6108bb8282612353565b5f33816112a08585611982565b90505f6112af88888888610f1b565b5f8181526002602052604081205491925065ffffffffffff90911690036112ec5760405163060a299b60e41b8152600481018290526024016109b7565b826001600160a01b0316886001600160a01b031614611385575f6113105f856111fd565b5090505f61132a61132461027c8b87610d67565b866111fd565b50905081158015611339575080155b1561138257604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b0319851660648201526084016109b7565b50505b5f81815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b5f8033816113f682898989611931565b9150505f8163ffffffff16611409612349565b61141391906133b7565b905063ffffffff8216158061144957505f8665ffffffffffff1611801561144957508065ffffffffffff168665ffffffffffff16105b1561145a57828961097e8a8a611982565b6114748665ffffffffffff168265ffffffffffff1661240e565b9550611482838a8a8a610f1b565b945061148d8561241d565b5f8581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b490611513908a9088908f908f908f906133d5565b60405180910390a350505094509492505050565b6001600160a01b038116331461110b57604051635f159e6360e01b815260040160405180910390fd5b335f8061155e838236612469565b9150915081611115578063ffffffff165f036115b8575f61157f813661252c565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b038216602482015290925060440190506109b7565b610a8d610edd84305f36610f1b565b6001600160a01b0383165f818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b5f5f61165c836001600160701b0316611e0c565b5090949350505050565b6001600160a01b0382165f81815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb138906116cb90841515815260200190565b60405180910390a25050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461174f5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109b7565b565b5f600160ff19825c168117825d505f61176d6060850185613235565b61177b916004915f91613342565b6117849161341a565b90506001600160e01b03198116635b0e93fb60e11b146117c35760405163d4d202fb60e01b81526001600160e01b0319821660048201526024016109b7565b5f6117d16060860186613235565b6117e091602491600491613342565b8101906117ed9190612f1e565b9050306001600160a01b0382160361181857604051637e6c446560e11b815260040160405180910390fd5b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c812090611892826118596101008a018a613235565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061271292505050565b90506118ab816118a560608a018a613235565b5f611f51565b6118bc5760019450505050506118d9565b6118d2816118cd60608a018a613235565b612730565b9450505050505b5f60ff19815c16815d5092915050565b50565b80156118e9576040515f90339083908381818185875af1925050503d805f8114610868576040519150601f19603f3d011682016040523d82523d5f602084013e610868565b5f80306001600160a01b038616036119575761194e868585612469565b91509150611979565b600483106119735761196e86866106eb8787611982565b61194e565b505f9050805b94509492505050565b5f6119906004828486613342565b6109409161341a565b5f8181526002602052604081205465ffffffffffff811690600160301b900463ffffffff168183036119e15760405163060a299b60e41b8152600481018590526024016109b7565b6119e9612349565b65ffffffffffff168265ffffffffffff161115611a1c57604051630c65b5bd60e11b8152600481018590526024016109b7565b611a2582611f23565b15611a4657604051631e2975b960e21b8152600481018590526024016109b7565b5f84815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b604080516001600160a01b03939093166020808501919091526001600160e01b0319929092168382015280518084038201815260609093019052815191012090565b606081471015611b055760405163cf47918160e01b8152476004820152602481018390526044016109b7565b5f611b118584866127c8565b9050808015611b3257505f3d1180611b3257505f856001600160a01b03163b115b15611b4757611b3f6127dd565b915050610940565b8015611b7157604051639996b31560e01b81526001600160a01b03861660048201526024016109b7565b3d15611b8457611b7f6127f6565b611b9d565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b5f67fffffffffffffffe196001600160401b03861601611be35760405163061c6a4360e21b81526001600160401b03861660048201526024016109b7565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff1615908115611cd3578463ffffffff16611c2e612349565b611c3891906133b7565b905060405180604001604052808265ffffffffffff168152602001611c668663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff90911617919091179055611d7d565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a168452909152812054611d1c91600160301b9091046001600160701b0316908690612801565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f5f5f611dff84611dfa6128a7565b6128b6565b9250925092509193909250565b5f5f5f611dff84611e1b612349565b612908565b6001600160401b0382161580611e3e57506001600160401b03828116145b15611e675760405163061c6a4360e21b81526001600160401b03831660048201526024016109b7565b6001600160401b038281165f818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b61174f6116d7565b5f5f5f845160208601878987f195945050505050565b61174f611eed5f611ef2565b612954565b60603d8215611f065782811115611f065750815b604051602082018101604052818152815f602083013e9392505050565b5f611f2c612349565b65ffffffffffff16611f4162093a80846133b7565b65ffffffffffff16111592915050565b5f8080611f6f8730611f666004858a8c613342565b6106eb9161341a565b9150915081611ffb5763ffffffff811615611f9d576040516399ec076b60e01b815260040160405180910390fd5b8315611ff15786611fbe30611fb560045f8a8c613342565b6105809161341a565b60405163f07e038f60e01b81526001600160a01b0390921660048301526001600160401b031660248201526044016109b7565b5f92505050610f4c565b5060019695505050505050565b6001600160401b038216158061202657506001600160401b03828116145b1561204f5760405163061c6a4360e21b81526001600160401b03831660048201526024016109b7565b6001600160401b038281165f81815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b038316016120f65760405163061c6a4360e21b81526001600160401b03831660048201526024016109b7565b6001600160401b0382165f9081526001602081905260408220015461212f90600160801b90046001600160701b03168362069780612801565b6001600160401b0385165f818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610e2b908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b60605f6121d5848461295c565b90508080156121f657505f3d11806121f657505f846001600160a01b03163b115b1561220b576122036127dd565b9150506108a3565b801561223557604051639996b31560e01b81526001600160a01b03851660048201526024016109b7565b3d15611b84576122436127f6565b5092915050565b5f6122558383611a97565b600354149392505050565b5f67fffffffffffffffe196001600160401b0384160161229e5760405163061c6a4360e21b81526001600160401b03841660048201526024016109b7565b6001600160401b0383165f9081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff1690036122df57505f6108a3565b6001600160401b0383165f8181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b5f6111a34261296f565b6001600160a01b0382165f90815260208190526040812060010154612385906001600160701b03168362069780612801565b6001600160a01b0385165f818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610e2b565b5f828218828411028218610940565b5f8181526002602052604090205465ffffffffffff168015801590612448575061244681611f23565b155b156108bb5760405163813e945960e01b8152600481018390526024016109b7565b5f80600483101561247e57505f9050806110fb565b306001600160a01b038616036124a1576110b63061249c8686611982565b61224a565b5f5f5f6124ae878761252c565b925092509250821580156124c657506124c630610ee2565b156124d9575f5f945094505050506110fb565b5f5f6124e5848b6111fd565b91509150816124fe575f5f9650965050505050506110fb565b6125148363ffffffff168263ffffffff1661240e565b63ffffffff8116159b909a5098505050505050505050565b5f8080600484101561254557505f91508190508061270b565b5f6125508686611982565b90506001600160e01b031981166310a6aa3760e31b148061258157506001600160e01b031981166330cae18760e01b145b8061259c57506001600160e01b0319811663294b14a960e11b145b806125b757506001600160e01b03198116635326cae760e11b145b806125d257506001600160e01b0319811663d22b598960e01b145b156125e75760015f5f9350935093505061270b565b6001600160e01b0319811663063fc60f60e21b148061261657506001600160e01b0319811663167bd39560e01b145b8061263157506001600160e01b031981166308d6122d60e01b145b15612670575f61264560246004888a613342565b8101906126529190612f1e565b90505f61265e82610cc5565b600196505f9550935061270b92505050565b6001600160e01b0319811663012e238d60e51b148061269f57506001600160e01b03198116635be958b160e11b145b156126f7575f6126b360246004888a613342565b8101906126c09190612cce565b905060016126e9826001600160401b039081165f90815260016020819052604090912001541690565b5f945094509450505061270b565b5f6127023083610d67565b5f935093509350505b9250925092565b5f5f5f5f61272086866129a5565b92509250925061165c82826129eb565b5f808084600485612741828261332f565b9261274e93929190613342565b81019061275b9190613450565b92505091505f5f61277a88856106eb5f87612aa390919063ffffffff16565b91509150818061278e575063ffffffff8116155b156127ac578161279f5760016127a1565b5f5b945050505050610940565b6127ba610edd898686612b00565b505f98975050505050505050565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f612816866001600160701b0316611648565b90505f6128518563ffffffff168763ffffffff168463ffffffff161161283c575f612846565b612846888561351b565b63ffffffff1661240e565b90508063ffffffff16612862612349565b61286c91906133b7565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b5f6111a36407915ecc0061296f565b5f808069ffffffffffffffffffff602086901c166001600160701b03861665ffffffffffff604088901c81169087168111156128f4578282826128f8565b815f5f5b9550955095505050509250925092565b69ffffffffffffffffffff602083901c166001600160701b03831665ffffffffffff604085901c811690841681111561294357828282612947565b815f5f5b9250925092509250925092565b805160208201fd5b5f5f5f835160208501865af49392505050565b5f65ffffffffffff8211156129a1576040516306dfcc6560e41b815260306004820152602481018390526044016109b7565b5090565b5f5f5f83516041036129dc576020840151604085015160608601515f1a6129ce88828585612b35565b95509550955050505061270b565b505081515f915060029061270b565b5f8260038111156129fe576129fe613537565b03612a07575050565b6001826003811115612a1b57612a1b613537565b03612a395760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612a4d57612a4d613537565b03612a6e5760405163fce698f760e01b8152600481018290526024016109b7565b6003826003811115612a8257612a82613537565b036108bb576040516335e2f38360e21b8152600481018290526024016109b7565b5f612aaf82602061354b565b83511015612af75760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b60448201526064016109b7565b50016020015190565b5f838383604051602001612b169392919061355e565b6040516020818303038152906040528051906020012090509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612b6e57505f91506003905082612bf3565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612bbf573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612bea57505f925060019150829050612bf3565b92505f91508190505b9450945094915050565b6001600160a01b03811681146118e9575f5ffd5b5f5f83601f840112612c21575f5ffd5b5081356001600160401b03811115612c37575f5ffd5b6020830191508360208260051b850101111561127a575f5ffd5b80356001600160401b0381168114612c67575f5ffd5b919050565b5f5f5f5f60608587031215612c7f575f5ffd5b8435612c8a81612bfd565b935060208501356001600160401b03811115612ca4575f5ffd5b612cb087828801612c11565b9094509250612cc3905060408601612c51565b905092959194509250565b5f60208284031215612cde575f5ffd5b61094082612c51565b5f5f60408385031215612cf8575f5ffd5b8235612d0381612bfd565b915060208301358015158114612d17575f5ffd5b809150509250929050565b5f5f60408385031215612d33575f5ffd5b8235612d3e81612bfd565b91506020830135612d1781612bfd565b5f5f5f60608486031215612d60575f5ffd5b83356001600160401b03811115612d75575f5ffd5b84016101208187031215612d87575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f840112612dac575f5ffd5b5081356001600160401b03811115612dc2575f5ffd5b60208301915083602082850101111561127a575f5ffd5b5f5f5f60408486031215612deb575f5ffd5b8335612df681612bfd565b925060208401356001600160401b03811115612e10575f5ffd5b612e1c86828701612d9c565b9497909650939450505050565b803563ffffffff81168114612c67575f5ffd5b5f5f5f60608486031215612e4e575f5ffd5b612e5784612c51565b92506020840135612e6781612bfd565b9150612e7560408501612e29565b90509250925092565b5f5f60408385031215612e8f575f5ffd5b612d3e83612c51565b5f5f60408385031215612ea9575f5ffd5b612eb283612c51565b9150612ec060208401612c51565b90509250929050565b5f5f60208385031215612eda575f5ffd5b82356001600160401b03811115612eef575f5ffd5b612efb85828601612c11565b90969095509350505050565b5f60208284031215612f17575f5ffd5b5035919050565b5f60208284031215612f2e575f5ffd5b813561094081612bfd565b5f5f60408385031215612f4a575f5ffd5b8235612f5581612bfd565b946020939093013593505050565b6001600160e01b0319811681146118e9575f5ffd5b5f5f60408385031215612f89575f5ffd5b8235612f9481612bfd565b91506020830135612d1781612f63565b5f5f5f60408486031215612fb6575f5ffd5b612df684612c51565b5f5f60408385031215612fd0575f5ffd5b612fd983612c51565b9150612ec060208401612e29565b5f5f5f5f60608587031215612ffa575f5ffd5b843561300581612bfd565b9350602085013561301581612bfd565b925060408501356001600160401b0381111561302f575f5ffd5b61303b87828801612d9c565b95989497509550505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156130cc57603f198786030184526130b7858351613047565b9450602093840193919091019060010161309b565b50929695505050505050565b5f5f5f5f606085870312156130eb575f5ffd5b84356130f681612bfd565b93506020850135925060408501356001600160401b0381111561302f575f5ffd5b5f5f5f60608486031215613129575f5ffd5b833561313481612bfd565b9250602084013561314481612bfd565b9150604084013561315481612f63565b809150509250925092565b5f5f60408385031215613170575f5ffd5b8235612fd981612bfd565b5f5f5f5f6060858703121561318e575f5ffd5b843561319981612bfd565b935060208501356001600160401b038111156131b3575f5ffd5b6131bf87828801612d9c565b909450925050604085013565ffffffffffff811681146131dd575f5ffd5b939692955090935050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561320c575f5ffd5b813561094081612f63565b5f8235605e1983360301811261322b575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261324a575f5ffd5b8301803591506001600160401b03821115613263575f5ffd5b60200191503681900382131561127a575f5ffd5b828152604060208201525f610f4c6040830184613047565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610f4c60208301848661328f565b5f602082840312156132da575f5ffd5b815161094081612f63565b6001600160a01b038581168252841660208201526060604082018190525f90613311908301848661328f565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a3576108a361331b565b5f5f85851115613350575f5ffd5b8386111561335c575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f602082840312156133b0575f5ffd5b5051919050565b65ffffffffffff81811683821601908111156108a3576108a361331b565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190525f9061340f908301848661328f565b979650505050505050565b80356001600160e01b03198116906004841015612243576001600160e01b031960049490940360031b84901b1690921692915050565b5f5f5f60608486031215613462575f5ffd5b833561346d81612bfd565b92506020840135915060408401356001600160401b0381111561348e575f5ffd5b8401601f8101861361349e575f5ffd5b80356001600160401b038111156134b7576134b7613369565b604051601f8201601f19908116603f011681016001600160401b03811182821017156134e5576134e5613369565b6040528181528282016020018810156134fc575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b63ffffffff82811682821603908111156108a3576108a361331b565b634e487b7160e01b5f52602160045260245ffd5b808201808211156108a3576108a361331b565b6001600160a01b038481168252831660208201526060604082018190525f9061358990830184613047565b9594505050505056fea2646970667358221220fbb8331fd2c088fe935f246f484ac181ab19a275a04067986cfcefae4efd44a064736f6c634300081e0033",
1438
+ "deployedBytecode": "0x608060405260043610610236575f3560e01c80636d5115bd11610129578063b7009613116100a8578063d1f856ee1161006d578063d1f856ee14610768578063d22b598914610787578063d6bb62c6146107a6578063f801a698146107c5578063fe0776f5146107fe575f5ffd5b8063b7009613146106d1578063b7d2b1621461070c578063c399ec881461072b578063cc1b6c811461073f578063d087d28814610754575f5ffd5b8063a64d95ce116100ee578063a64d95ce14610605578063abd9bd2a14610624578063ac9650d814610643578063b0d691fe1461066f578063b61d27f6146106b2575f5ffd5b80636d5115bd1461056657806375b238fc14610585578063853551b81461059857806394c7d7ee146105b7578063a166aa89146105d6575f5ffd5b806334fcd5be116101b55780634a58db191161017a5780634a58db19146104c65780634c1da1e2146104ce5780634d44560d146104ed578063529629521461050c578063530dd4561461052b575f5ffd5b806334fcd5be1461040a5780633adc277a146104295780633ca7c02a1461045f5780634136a33c146104795780634665096d146104b1575f5ffd5b806319822f7c116101fb57806319822f7c146103335780631cff79cd1461036057806325c471a0146103735780633078f1141461039257806330cae187146103eb575f5ffd5b806308d6122d146102415780630b0a93ba1461026257806312be8727146102c1578063167bd395146102f557806318ff183c14610314575f5ffd5b3661023d57005b5f5ffd5b34801561024c575f5ffd5b5061026061025b366004612c6c565b61081d565b005b34801561026d575f5ffd5b506102a461027c366004612cce565b6001600160401b039081165f9081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b3480156102cc575f5ffd5b506102e06102db366004612cce565b61086f565b60405163ffffffff90911681526020016102b8565b348015610300575f5ffd5b5061026061030f366004612ce7565b6108a9565b34801561031f575f5ffd5b5061026061032e366004612d22565b6108bf565b34801561033e575f5ffd5b5061035261034d366004612d4e565b610922565b6040519081526020016102b8565b6102e061036e366004612dd9565b610947565b34801561037e575f5ffd5b5061026061038d366004612e3c565b610a71565b34801561039d575f5ffd5b506103b16103ac366004612e7e565b610a93565b6040516102b8949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b3480156103f6575f5ffd5b50610260610405366004612e98565b610b2c565b348015610415575f5ffd5b50610260610424366004612ec9565b610b3e565b348015610434575f5ffd5b50610448610443366004612f07565b610c1f565b60405165ffffffffffff90911681526020016102b8565b34801561046a575f5ffd5b506102a46001600160401b0381565b348015610484575f5ffd5b506102e0610493366004612f07565b5f90815260026020526040902054600160301b900463ffffffff1690565b3480156104bc575f5ffd5b5062093a806102e0565b610260610c50565b3480156104d9575f5ffd5b506102e06104e8366004612f1e565b610cc5565b3480156104f8575f5ffd5b50610260610507366004612f39565b610cf2565b348015610517575f5ffd5b50610260610526366004612e98565b610d55565b348015610536575f5ffd5b506102a4610545366004612cce565b6001600160401b039081165f90815260016020819052604090912001541690565b348015610571575f5ffd5b506102a4610580366004612f78565b610d67565b348015610590575f5ffd5b506102a45f81565b3480156105a3575f5ffd5b506102606105b2366004612fa4565b610da1565b3480156105c2575f5ffd5b506102606105d1366004612dd9565b610e38565b3480156105e1575f5ffd5b506105f56105f0366004612f1e565b610ee2565b60405190151581526020016102b8565b348015610610575f5ffd5b5061026061061f366004612fbf565b610f09565b34801561062f575f5ffd5b5061035261063e366004612fe7565b610f1b565b34801561064e575f5ffd5b5061066261065d366004612ec9565b610f54565b6040516102b89190613075565b34801561067a575f5ffd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016102b8565b3480156106bd575f5ffd5b506102606106cc3660046130d8565b611039565b3480156106dc575f5ffd5b506106f06106eb366004613117565b611082565b60408051921515835263ffffffff9091166020830152016102b8565b348015610717575f5ffd5b50610260610726366004612e7e565b611103565b348015610736575f5ffd5b5061035261111a565b34801561074a575f5ffd5b50620697806102e0565b34801561075f575f5ffd5b506103526111a8565b348015610773575f5ffd5b506106f0610782366004612e7e565b6111fd565b348015610792575f5ffd5b506102606107a136600461315f565b611281565b3480156107b1575f5ffd5b506102e06107c0366004612fe7565b611293565b3480156107d0575f5ffd5b506107e46107df36600461317b565b6113e6565b6040805192835263ffffffff9091166020830152016102b8565b348015610809575f5ffd5b50610260610818366004612e7e565b611527565b610825611550565b5f5b828110156108685761086085858584818110610845576108456131e8565b905060200201602081019061085a91906131fc565b846115c7565b600101610827565b5050505050565b6001600160401b0381165f908152600160208190526040822001546108a390600160801b90046001600160701b0316611648565b92915050565b6108b1611550565b6108bb8282611666565b5050565b6108c7611550565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b906024015b5f604051808303815f87803b158015610908575f5ffd5b505af115801561091a573d5f5f3e3d5ffd5b505050505050565b5f61092b6116d7565b6109358484611751565b9050610940826118ec565b9392505050565b5f33818061095783888888611931565b915091508115801561096d575063ffffffff8116155b156109c057828761097e8888611982565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b5f6109cd84898989610f1b565b90505f63ffffffff83161515806109f357506109e882610c1f565b65ffffffffffff1615155b15610a0457610a0182611999565b90505b600354610a1a8a610a158b8b611982565b611a97565b600381905550610a618a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250349250611ad9915050565b5060035598975050505050505050565b610a79611550565b610a8d8383610a878661086f565b84611ba5565b50505050565b6001600160401b0382165f9081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff1691908190819060ff825c1615610aff578054610af390600160301b90046001600160701b0316611deb565b91955093509150610b22565b8054610b1a90600160301b90046001600160701b0316611e0c565b919550935091505b5092959194509250565b610b34611550565b6108bb8282611e20565b610b46611ec3565b805f5b81811015610a8d5736848483818110610b6457610b646131e8565b9050602002810190610b769190613217565b90505f610bd4610b896020840184612f1e565b6020840135610b9b6040860186613235565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611ecb565b905080610c155783600103610bf057610beb611ee1565b610c15565b82610bfa5f611ef2565b604051635a15467560e01b81526004016109b7929190613277565b5050600101610b49565b5f8181526002602052604081205465ffffffffffff16610c3e81611f23565b610c485780610940565b5f9392505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b158015610cb3575f5ffd5b505af1158015610868573d5f5f3e3d5ffd5b6001600160a01b0381165f908152602081905260408120600101546108a3906001600160701b0316611648565b610cff335f366001611f51565b5060405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c2878906044016108f1565b610d5d611550565b6108bb8282612008565b6001600160a01b0382165f908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610da9611550565b6001600160401b0383161580610dc757506001600160401b03838116145b15610df05760405163061c6a4360e21b81526001600160401b03841660048201526024016109b7565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610e2b9291906132b7565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610e77573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9b91906132ca565b6001600160e01b03191614610ece57604051630641fee960e31b81526001600160a01b03821660048201526024016109b7565b610868610edd85838686610f1b565b611999565b6001600160a01b03165f90815260208190526040902060010154600160701b900460ff1690565b610f11611550565b6108bb82826120b9565b5f84848484604051602001610f3394939291906132e5565b6040516020818303038152906040528051906020012090505b949350505050565b604080515f815260208101909152606090826001600160401b03811115610f7d57610f7d613369565b604051908082528060200260200182016040528015610fb057816020015b6060815260200190600190039081610f9b5790505b5091505f5b838110156110315761100c30868684818110610fd357610fd36131e8565b9050602002810190610fe59190613235565b85604051602001610ff89392919061337d565b6040516020818303038152906040526121c8565b83828151811061101e5761101e6131e8565b6020908102919091010152600101610fb5565b505092915050565b6110416116d7565b6108688483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250611ad9915050565b5f5f61108d84610ee2565b1561109c57505f9050806110fb565b306001600160a01b038616036110c0576110b6848461224a565b5f915091506110fb565b5f6110cb8585610d67565b90505f5f6110d983896111fd565b91509150816110e9575f5f6110f3565b63ffffffff811615815b945094505050505b935093915050565b61110b611550565b6111158282612260565b505050565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561117f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a391906133a0565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401611164565b5f8067fffffffffffffffe196001600160401b038516016112235750600190505f61127a565b5f5f61122f8686610a93565b5050915091508165ffffffffffff165f1415801561126f575060ff5f5c168061126f575061125b612349565b65ffffffffffff168265ffffffffffff1611155b9350915061127a9050565b9250929050565b611289611550565b6108bb8282612353565b5f33816112a08585611982565b90505f6112af88888888610f1b565b5f8181526002602052604081205491925065ffffffffffff90911690036112ec5760405163060a299b60e41b8152600481018290526024016109b7565b826001600160a01b0316886001600160a01b031614611385575f6113105f856111fd565b5090505f61132a61132461027c8b87610d67565b866111fd565b50905081158015611339575080155b1561138257604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b0319851660648201526084016109b7565b50505b5f81815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b5f8033816113f682898989611931565b9150505f8163ffffffff16611409612349565b61141391906133b7565b905063ffffffff8216158061144957505f8665ffffffffffff1611801561144957508065ffffffffffff168665ffffffffffff16105b1561145a57828961097e8a8a611982565b6114748665ffffffffffff168265ffffffffffff1661240e565b9550611482838a8a8a610f1b565b945061148d8561241d565b5f8581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b490611513908a9088908f908f908f906133d5565b60405180910390a350505094509492505050565b6001600160a01b038116331461110b57604051635f159e6360e01b815260040160405180910390fd5b335f8061155e838236612469565b9150915081611115578063ffffffff165f036115b8575f61157f813661252c565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b038216602482015290925060440190506109b7565b610a8d610edd84305f36610f1b565b6001600160a01b0383165f818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b5f5f61165c836001600160701b0316611e0c565b5090949350505050565b6001600160a01b0382165f81815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb138906116cb90841515815260200190565b60405180910390a25050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461174f5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109b7565b565b5f600160ff19825c168117825d505f61176d6060850185613235565b61177b916004915f91613342565b6117849161341a565b90506001600160e01b03198116635b0e93fb60e11b146117c35760405163d4d202fb60e01b81526001600160e01b0319821660048201526024016109b7565b5f6117d16060860186613235565b6117e091602491600491613342565b8101906117ed9190612f1e565b9050306001600160a01b0382160361181857604051637e6c446560e11b815260040160405180910390fd5b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c812090611892826118596101008a018a613235565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061271292505050565b90506118ab816118a560608a018a613235565b5f611f51565b6118bc5760019450505050506118d9565b6118d2816118cd60608a018a613235565b612730565b9450505050505b5f60ff19815c16815d5092915050565b50565b80156118e9576040515f90339083908381818185875af1925050503d805f8114610868576040519150601f19603f3d011682016040523d82523d5f602084013e610868565b5f80306001600160a01b038616036119575761194e868585612469565b91509150611979565b600483106119735761196e86866106eb8787611982565b61194e565b505f9050805b94509492505050565b5f6119906004828486613342565b6109409161341a565b5f8181526002602052604081205465ffffffffffff811690600160301b900463ffffffff168183036119e15760405163060a299b60e41b8152600481018590526024016109b7565b6119e9612349565b65ffffffffffff168265ffffffffffff161115611a1c57604051630c65b5bd60e11b8152600481018590526024016109b7565b611a2582611f23565b15611a4657604051631e2975b960e21b8152600481018590526024016109b7565b5f84815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b604080516001600160a01b03939093166020808501919091526001600160e01b0319929092168382015280518084038201815260609093019052815191012090565b606081471015611b055760405163cf47918160e01b8152476004820152602481018390526044016109b7565b5f611b118584866127c8565b9050808015611b3257505f3d1180611b3257505f856001600160a01b03163b115b15611b4757611b3f6127dd565b915050610940565b8015611b7157604051639996b31560e01b81526001600160a01b03861660048201526024016109b7565b3d15611b8457611b7f6127f6565b611b9d565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b5f67fffffffffffffffe196001600160401b03861601611be35760405163061c6a4360e21b81526001600160401b03861660048201526024016109b7565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff1615908115611cd3578463ffffffff16611c2e612349565b611c3891906133b7565b905060405180604001604052808265ffffffffffff168152602001611c668663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff90911617919091179055611d7d565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a168452909152812054611d1c91600160301b9091046001600160701b0316908690612801565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f5f5f611dff84611dfa6128a7565b6128b6565b9250925092509193909250565b5f5f5f611dff84611e1b612349565b612908565b6001600160401b0382161580611e3e57506001600160401b03828116145b15611e675760405163061c6a4360e21b81526001600160401b03831660048201526024016109b7565b6001600160401b038281165f818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b61174f6116d7565b5f5f5f845160208601878987f195945050505050565b61174f611eed5f611ef2565b612954565b60603d8215611f065782811115611f065750815b604051602082018101604052818152815f602083013e9392505050565b5f611f2c612349565b65ffffffffffff16611f4162093a80846133b7565b65ffffffffffff16111592915050565b5f8080611f6f8730611f666004858a8c613342565b6106eb9161341a565b9150915081611ffb5763ffffffff811615611f9d576040516399ec076b60e01b815260040160405180910390fd5b8315611ff15786611fbe30611fb560045f8a8c613342565b6105809161341a565b60405163f07e038f60e01b81526001600160a01b0390921660048301526001600160401b031660248201526044016109b7565b5f92505050610f4c565b5060019695505050505050565b6001600160401b038216158061202657506001600160401b03828116145b1561204f5760405163061c6a4360e21b81526001600160401b03831660048201526024016109b7565b6001600160401b038281165f81815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b038316016120f65760405163061c6a4360e21b81526001600160401b03831660048201526024016109b7565b6001600160401b0382165f9081526001602081905260408220015461212f90600160801b90046001600160701b03168362069780612801565b6001600160401b0385165f818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610e2b908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b60605f6121d5848461295c565b90508080156121f657505f3d11806121f657505f846001600160a01b03163b115b1561220b576122036127dd565b9150506108a3565b801561223557604051639996b31560e01b81526001600160a01b03851660048201526024016109b7565b3d15611b84576122436127f6565b5092915050565b5f6122558383611a97565b600354149392505050565b5f67fffffffffffffffe196001600160401b0384160161229e5760405163061c6a4360e21b81526001600160401b03841660048201526024016109b7565b6001600160401b0383165f9081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff1690036122df57505f6108a3565b6001600160401b0383165f8181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b5f6111a34261296f565b6001600160a01b0382165f90815260208190526040812060010154612385906001600160701b03168362069780612801565b6001600160a01b0385165f818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610e2b565b5f828218828411028218610940565b5f8181526002602052604090205465ffffffffffff168015801590612448575061244681611f23565b155b156108bb5760405163813e945960e01b8152600481018390526024016109b7565b5f80600483101561247e57505f9050806110fb565b306001600160a01b038616036124a1576110b63061249c8686611982565b61224a565b5f5f5f6124ae878761252c565b925092509250821580156124c657506124c630610ee2565b156124d9575f5f945094505050506110fb565b5f5f6124e5848b6111fd565b91509150816124fe575f5f9650965050505050506110fb565b6125148363ffffffff168263ffffffff1661240e565b63ffffffff8116159b909a5098505050505050505050565b5f8080600484101561254557505f91508190508061270b565b5f6125508686611982565b90506001600160e01b031981166310a6aa3760e31b148061258157506001600160e01b031981166330cae18760e01b145b8061259c57506001600160e01b0319811663294b14a960e11b145b806125b757506001600160e01b03198116635326cae760e11b145b806125d257506001600160e01b0319811663d22b598960e01b145b156125e75760015f5f9350935093505061270b565b6001600160e01b0319811663063fc60f60e21b148061261657506001600160e01b0319811663167bd39560e01b145b8061263157506001600160e01b031981166308d6122d60e01b145b15612670575f61264560246004888a613342565b8101906126529190612f1e565b90505f61265e82610cc5565b600196505f9550935061270b92505050565b6001600160e01b0319811663012e238d60e51b148061269f57506001600160e01b03198116635be958b160e11b145b156126f7575f6126b360246004888a613342565b8101906126c09190612cce565b905060016126e9826001600160401b039081165f90815260016020819052604090912001541690565b5f945094509450505061270b565b5f6127023083610d67565b5f935093509350505b9250925092565b5f5f5f5f61272086866129a5565b92509250925061165c82826129eb565b5f808084600485612741828261332f565b9261274e93929190613342565b81019061275b9190613450565b92505091505f5f61277a88856106eb5f87612aa390919063ffffffff16565b91509150818061278e575063ffffffff8116155b156127ac578161279f5760016127a1565b5f5b945050505050610940565b6127ba610edd898686612b00565b505f98975050505050505050565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f612816866001600160701b0316611648565b90505f6128518563ffffffff168763ffffffff168463ffffffff161161283c575f612846565b612846888561351b565b63ffffffff1661240e565b90508063ffffffff16612862612349565b61286c91906133b7565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b5f6111a36407915ecc0061296f565b5f808069ffffffffffffffffffff602086901c166001600160701b03861665ffffffffffff604088901c81169087168111156128f4578282826128f8565b815f5f5b9550955095505050509250925092565b69ffffffffffffffffffff602083901c166001600160701b03831665ffffffffffff604085901c811690841681111561294357828282612947565b815f5f5b9250925092509250925092565b805160208201fd5b5f5f5f835160208501865af49392505050565b5f65ffffffffffff8211156129a1576040516306dfcc6560e41b815260306004820152602481018390526044016109b7565b5090565b5f5f5f83516041036129dc576020840151604085015160608601515f1a6129ce88828585612b35565b95509550955050505061270b565b505081515f915060029061270b565b5f8260038111156129fe576129fe613537565b03612a07575050565b6001826003811115612a1b57612a1b613537565b03612a395760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612a4d57612a4d613537565b03612a6e5760405163fce698f760e01b8152600481018290526024016109b7565b6003826003811115612a8257612a82613537565b036108bb576040516335e2f38360e21b8152600481018290526024016109b7565b5f612aaf82602061354b565b83511015612af75760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b60448201526064016109b7565b50016020015190565b5f838383604051602001612b169392919061355e565b6040516020818303038152906040528051906020012090509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612b6e57505f91506003905082612bf3565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612bbf573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612bea57505f925060019150829050612bf3565b92505f91508190505b9450945094915050565b6001600160a01b03811681146118e9575f5ffd5b5f5f83601f840112612c21575f5ffd5b5081356001600160401b03811115612c37575f5ffd5b6020830191508360208260051b850101111561127a575f5ffd5b80356001600160401b0381168114612c67575f5ffd5b919050565b5f5f5f5f60608587031215612c7f575f5ffd5b8435612c8a81612bfd565b935060208501356001600160401b03811115612ca4575f5ffd5b612cb087828801612c11565b9094509250612cc3905060408601612c51565b905092959194509250565b5f60208284031215612cde575f5ffd5b61094082612c51565b5f5f60408385031215612cf8575f5ffd5b8235612d0381612bfd565b915060208301358015158114612d17575f5ffd5b809150509250929050565b5f5f60408385031215612d33575f5ffd5b8235612d3e81612bfd565b91506020830135612d1781612bfd565b5f5f5f60608486031215612d60575f5ffd5b83356001600160401b03811115612d75575f5ffd5b84016101208187031215612d87575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f840112612dac575f5ffd5b5081356001600160401b03811115612dc2575f5ffd5b60208301915083602082850101111561127a575f5ffd5b5f5f5f60408486031215612deb575f5ffd5b8335612df681612bfd565b925060208401356001600160401b03811115612e10575f5ffd5b612e1c86828701612d9c565b9497909650939450505050565b803563ffffffff81168114612c67575f5ffd5b5f5f5f60608486031215612e4e575f5ffd5b612e5784612c51565b92506020840135612e6781612bfd565b9150612e7560408501612e29565b90509250925092565b5f5f60408385031215612e8f575f5ffd5b612d3e83612c51565b5f5f60408385031215612ea9575f5ffd5b612eb283612c51565b9150612ec060208401612c51565b90509250929050565b5f5f60208385031215612eda575f5ffd5b82356001600160401b03811115612eef575f5ffd5b612efb85828601612c11565b90969095509350505050565b5f60208284031215612f17575f5ffd5b5035919050565b5f60208284031215612f2e575f5ffd5b813561094081612bfd565b5f5f60408385031215612f4a575f5ffd5b8235612f5581612bfd565b946020939093013593505050565b6001600160e01b0319811681146118e9575f5ffd5b5f5f60408385031215612f89575f5ffd5b8235612f9481612bfd565b91506020830135612d1781612f63565b5f5f5f60408486031215612fb6575f5ffd5b612df684612c51565b5f5f60408385031215612fd0575f5ffd5b612fd983612c51565b9150612ec060208401612e29565b5f5f5f5f60608587031215612ffa575f5ffd5b843561300581612bfd565b9350602085013561301581612bfd565b925060408501356001600160401b0381111561302f575f5ffd5b61303b87828801612d9c565b95989497509550505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156130cc57603f198786030184526130b7858351613047565b9450602093840193919091019060010161309b565b50929695505050505050565b5f5f5f5f606085870312156130eb575f5ffd5b84356130f681612bfd565b93506020850135925060408501356001600160401b0381111561302f575f5ffd5b5f5f5f60608486031215613129575f5ffd5b833561313481612bfd565b9250602084013561314481612bfd565b9150604084013561315481612f63565b809150509250925092565b5f5f60408385031215613170575f5ffd5b8235612fd981612bfd565b5f5f5f5f6060858703121561318e575f5ffd5b843561319981612bfd565b935060208501356001600160401b038111156131b3575f5ffd5b6131bf87828801612d9c565b909450925050604085013565ffffffffffff811681146131dd575f5ffd5b939692955090935050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561320c575f5ffd5b813561094081612f63565b5f8235605e1983360301811261322b575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261324a575f5ffd5b8301803591506001600160401b03821115613263575f5ffd5b60200191503681900382131561127a575f5ffd5b828152604060208201525f610f4c6040830184613047565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610f4c60208301848661328f565b5f602082840312156132da575f5ffd5b815161094081612f63565b6001600160a01b038581168252841660208201526060604082018190525f90613311908301848661328f565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108a3576108a361331b565b5f5f85851115613350575f5ffd5b8386111561335c575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f602082840312156133b0575f5ffd5b5051919050565b65ffffffffffff81811683821601908111156108a3576108a361331b565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190525f9061340f908301848661328f565b979650505050505050565b80356001600160e01b03198116906004841015612243576001600160e01b031960049490940360031b84901b1690921692915050565b5f5f5f60608486031215613462575f5ffd5b833561346d81612bfd565b92506020840135915060408401356001600160401b0381111561348e575f5ffd5b8401601f8101861361349e575f5ffd5b80356001600160401b038111156134b7576134b7613369565b604051601f8201601f19908116603f011681016001600160401b03811182821017156134e5576134e5613369565b6040528181528282016020018810156134fc575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b63ffffffff82811682821603908111156108a3576108a361331b565b634e487b7160e01b5f52602160045260245ffd5b808201808211156108a3576108a361331b565b6001600160a01b038481168252831660208201526060604082018190525f9061358990830184613047565b9594505050505056fea2646970667358221220fbb8331fd2c088fe935f246f484ac181ab19a275a04067986cfcefae4efd44a064736f6c634300081e0033",
1399
1439
  "linkReferences": {},
1400
- "deployedLinkReferences": {}
1401
- }
1440
+ "deployedLinkReferences": {},
1441
+ "immutableReferences": {
1442
+ "11905": [
1443
+ {
1444
+ "length": 32,
1445
+ "start": 1672
1446
+ },
1447
+ {
1448
+ "length": 32,
1449
+ "start": 3154
1450
+ },
1451
+ {
1452
+ "length": 32,
1453
+ "start": 3366
1454
+ },
1455
+ {
1456
+ "length": 32,
1457
+ "start": 4409
1458
+ },
1459
+ {
1460
+ "length": 32,
1461
+ "start": 4558
1462
+ },
1463
+ {
1464
+ "length": 32,
1465
+ "start": 5858
1466
+ }
1467
+ ]
1468
+ },
1469
+ "inputSourceName": "project/contracts/AccessManagerAccount.sol",
1470
+ "buildInfoId": "solc-0_8_30-95f43f1788cfd8898b8023be4a1aea1d69744865"
1471
+ }