@latticexyz/world 2.0.0-alpha.1.21 → 2.0.0-alpha.1.22
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.
- package/abi/AccessControl.sol/AccessControl.json +241 -241
- package/abi/AccessManagementSystem.sol/AccessManagementSystem.json +157 -157
- package/abi/AddressArray.sol/AddressArray.json +1124 -1124
- package/abi/ArrayLib.sol/ArrayLib.json +139 -139
- package/abi/Bool.sol/Bool.json +704 -704
- package/abi/Bytes.sol/Bytes.json +6 -6
- package/abi/Call.sol/Call.json +112 -112
- package/abi/Callbacks.sol/Callbacks.json +1100 -1100
- package/abi/CoreModule.sol/CoreModule.json +542 -542
- package/abi/CoreSystem.sol/CoreSystem.json +92 -92
- package/abi/DecodeSlice.sol/DecodeSlice.json +3891 -3891
- package/abi/EncodeArray.sol/EncodeArray.json +3344 -3344
- package/abi/FunctionSelectors.sol/FunctionSelectors.json +1678 -1678
- package/abi/Hooks.sol/Hooks.json +1100 -1100
- package/abi/IAccessManagementSystem.sol/IAccessManagementSystem.json +32 -32
- package/abi/IBaseWorld.sol/IBaseWorld.json +224 -99
- package/abi/ICoreSystem.sol/ICoreSystem.json +6 -6
- package/abi/IModule.sol/IModule.json +28 -28
- package/abi/IModuleInstallationSystem.sol/IModuleInstallationSystem.json +40 -40
- package/abi/IStore.sol/IStore.json +551 -349
- package/abi/IStore.sol/IStoreData.json +551 -349
- package/abi/IStore.sol/IStoreHook.json +495 -349
- package/abi/IStore.sol/IStoreRead.json +495 -349
- package/abi/IStore.sol/IStoreRegistration.json +495 -349
- package/abi/IStore.sol/IStoreWrite.json +551 -349
- package/abi/IStoreRegistrationSystem.sol/IStoreRegistrationSystem.json +80 -80
- package/abi/ISystemHook.sol/ISystemHook.json +19 -19
- package/abi/IUniqueEntitySystem.sol/IUniqueEntitySystem.json +13 -13
- package/abi/IWorldKernel.sol/IWorldCall.json +455 -276
- package/abi/IWorldKernel.sol/IWorldData.json +524 -276
- package/abi/IWorldKernel.sol/IWorldKernel.json +524 -276
- package/abi/IWorldKernel.sol/IWorldModuleInstallation.json +455 -276
- package/abi/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.json +198 -198
- package/abi/InstalledModules.sol/InstalledModules.json +1351 -1351
- package/abi/KeysWithValue.sol/KeysWithValue.json +1124 -1124
- package/abi/KeysWithValueHook.sol/KeysWithValueHook.json +416 -416
- package/abi/KeysWithValueModule.sol/KeysWithValueModule.json +293 -293
- package/abi/Memory.sol/Memory.json +131 -131
- package/abi/Mixed.sol/Mixed.json +2781 -2781
- package/abi/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +138 -138
- package/abi/NamespaceOwner.sol/NamespaceOwner.json +782 -782
- package/abi/PackedCounter.sol/PackedCounterLib.json +665 -665
- package/abi/ResourceAccess.sol/ResourceAccess.json +926 -926
- package/abi/ResourceSelector.sol/ResourceSelector.json +253 -253
- package/abi/ResourceType.sol/ResourceType.json +831 -831
- package/abi/Schema.sol/SchemaLib.json +1469 -1469
- package/abi/SchemaType.sol/SchemaType.json +315 -315
- package/abi/Slice.sol/SliceInstance.json +429 -429
- package/abi/Slice.sol/SliceLib.json +429 -429
- package/abi/Storage.sol/Storage.json +1024 -1061
- package/abi/StoreCore.sol/StoreCore.json +10434 -7652
- package/abi/StoreCore.sol/StoreCoreExtended.json +10434 -7652
- package/abi/StoreCore.sol/StoreCoreInternal.json +10434 -7652
- package/abi/StoreMetadata.sol/StoreMetadata.json +2116 -2116
- package/abi/StoreRead.sol/StoreRead.json +247 -247
- package/abi/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +339 -339
- package/abi/StoreSwitch.sol/StoreSwitch.json +1814 -1359
- package/abi/System.sol/System.json +31 -31
- package/abi/SystemRegistry.sol/SystemRegistry.json +794 -794
- package/abi/Systems.sol/Systems.json +1412 -1412
- package/abi/TableId.sol/TableId.json +27 -27
- package/abi/Tables.sol/Tables.json +92 -92
- package/abi/TightCoder.sol/TightCoder.json +275 -275
- package/abi/Types.sol/Types.json +8 -8
- package/abi/UniqueEntity.sol/UniqueEntity.json +683 -683
- package/abi/UniqueEntityModule.sol/UniqueEntityModule.json +232 -232
- package/abi/UniqueEntitySystem.sol/UniqueEntitySystem.json +114 -114
- package/abi/Utils.sol/Utils.json +67 -67
- package/abi/Vector2.sol/Vector2.json +1473 -1473
- package/abi/World.sol/World.json +2426 -1491
- package/abi/WorldContext.sol/WorldContext.json +65 -65
- package/abi/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1140 -1140
- package/abi/console.sol/console.json +11417 -11417
- package/abi/constants.sol/constants.json +34 -34
- package/abi/getKeysWithValue.sol/getKeysWithValue.json +129 -129
- package/abi/getTargetTableSelector.sol/getTargetTableSelector.json +75 -75
- package/abi/getUniqueEntity.sol/getUniqueEntity.json +88 -88
- package/abi/interfaces/IErrors.sol/IErrors.json +57 -57
- package/abi/src/Bytes.sol/Bytes.json +1225 -1225
- package/abi/src/IStore.sol/IStore.json +727 -525
- package/abi/src/IStore.sol/IStoreData.json +727 -525
- package/abi/src/IStore.sol/IStoreHook.json +671 -525
- package/abi/src/IStore.sol/IStoreRead.json +671 -525
- package/abi/src/IStore.sol/IStoreRegistration.json +671 -525
- package/abi/src/IStore.sol/IStoreWrite.json +727 -525
- package/abi/src/Memory.sol/Memory.json +131 -131
- package/abi/src/PackedCounter.sol/PackedCounterLib.json +683 -683
- package/abi/src/Schema.sol/SchemaLib.json +1493 -1493
- package/abi/src/Slice.sol/SliceInstance.json +429 -429
- package/abi/src/Slice.sol/SliceLib.json +429 -429
- package/abi/src/StoreCore.sol/StoreCore.json +12500 -9718
- package/abi/src/StoreCore.sol/StoreCoreExtended.json +12500 -9718
- package/abi/src/StoreCore.sol/StoreCoreInternal.json +12500 -9718
- package/abi/src/StoreSwitch.sol/StoreSwitch.json +1822 -1367
- package/abi/tightcoder/EncodeArray.sol/EncodeArray.json +3344 -3344
- package/package.json +6 -6
- package/src/World.sol +32 -0
- package/src/interfaces/IWorldKernel.sol +12 -0
- package/types/ethers-contracts/IBaseWorld.ts +116 -0
- package/types/ethers-contracts/IStore.sol/IStore.ts +55 -0
- package/types/ethers-contracts/IStore.sol/IStoreData.ts +55 -0
- package/types/ethers-contracts/IStore.sol/IStoreWrite.ts +55 -0
- package/types/ethers-contracts/IWorldKernel.sol/IWorldData.ts +61 -0
- package/types/ethers-contracts/IWorldKernel.sol/IWorldKernel.ts +61 -0
- package/types/ethers-contracts/World.ts +116 -0
- package/types/ethers-contracts/factories/AccessManagementSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/CoreModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/CoreSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/IBaseWorld__factory.ts +61 -0
- package/types/ethers-contracts/factories/IStore.sol/IStoreData__factory.ts +28 -0
- package/types/ethers-contracts/factories/IStore.sol/IStoreWrite__factory.ts +28 -0
- package/types/ethers-contracts/factories/IStore.sol/IStore__factory.ts +28 -0
- package/types/ethers-contracts/factories/IWorldKernel.sol/IWorldData__factory.ts +33 -0
- package/types/ethers-contracts/factories/IWorldKernel.sol/IWorldKernel__factory.ts +33 -0
- package/types/ethers-contracts/factories/KeysWithValueHook__factory.ts +1 -1
- package/types/ethers-contracts/factories/KeysWithValueModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/ModuleInstallationSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreCore__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreRead__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreRegistrationSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreSwitch__factory.ts +1 -1
- package/types/ethers-contracts/factories/UniqueEntityModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/UniqueEntitySystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/WorldRegistrationSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/World__factory.ts +62 -1
- package/types/ethers-contracts/factories/src/IStore.sol/IStoreData__factory.ts +28 -0
- package/types/ethers-contracts/factories/src/IStore.sol/IStoreWrite__factory.ts +28 -0
- package/types/ethers-contracts/factories/src/IStore.sol/IStore__factory.ts +28 -0
- package/types/ethers-contracts/factories/src/StoreCore__factory.ts +1 -1
- package/types/ethers-contracts/factories/src/StoreSwitch__factory.ts +1 -1
- package/types/ethers-contracts/src/IStore.sol/IStore.ts +55 -0
- package/types/ethers-contracts/src/IStore.sol/IStoreData.ts +55 -0
- package/types/ethers-contracts/src/IStore.sol/IStoreWrite.ts +55 -0
|
@@ -148,7 +148,7 @@ const _abi = [
|
|
|
148
148
|
] as const;
|
|
149
149
|
|
|
150
150
|
const _bytecode =
|
|
151
|
-
"0x60a0604052604051620000129062000050565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b506200005e565b614a918062003a1a83390190565b6080516139996200008160003960008181610165015261049a01526139996000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313861fb51461003b57806317d7de7c14610050575b600080fd5b61004e610049366004613372565b610083565b005b604080517f636f72652e6d0000000000000000000000000000000000000000000000000000815290519081900360200190f35b61008b61009e565b610093610128565b61009b610236565b50565b6100a66105ae565b6100ae610615565b6100b6610678565b6100be6106c4565b6100c6610722565b6100da60006100d361076e565b60016107a0565b6100e2610896565b6100ea6108f4565b6100f2610940565b6100fa61099e565b6101026109ea565b61010a610a48565b610112610a94565b61011a610aea565b61012660006001610b36565b565b61009b61013361076e565b604051600060248201527f636f72652e73000000000000000000000000000000000000000000000000000060448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8116606483015260016084830152907f4c9e9f11000000000000000000000000000000000000000000000000000000009060a4015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260016000610c1b565b604080516101e0810182527fa886545e0000000000000000000000000000000000000000000000000000000081527f31b99d890000000000000000000000000000000000000000000000000000000060208201527f096fcaa900000000000000000000000000000000000000000000000000000000918101919091527f7a58dce40000000000000000000000000000000000000000000000000000000060608201527f8ae710e90000000000000000000000000000000000000000000000000000000060808201527f3ca90f220000000000000000000000000000000000000000000000000000000060a08201527f4c9e9f110000000000000000000000000000000000000000000000000000000060c08201527fca4c1f5e0000000000000000000000000000000000000000000000000000000060e08201527f56f55a97000000000000000000000000000000000000000000000000000000006101008201527fd5933686000000000000000000000000000000000000000000000000000000006101208201527ffe86a89f000000000000000000000000000000000000000000000000000000006101408201527f6e81fd71000000000000000000000000000000000000000000000000000000006101608201527f8da798da000000000000000000000000000000000000000000000000000000006101808201527ff227e653000000000000000000000000000000000000000000000000000000006101a08201527f1e42269e000000000000000000000000000000000000000000000000000000006101c082015260005b600f8110156105aa5761059761049861076e565b7f00000000000000000000000000000000000000000000000000000000000000007f56f55a970000000000000000000000000000000000000000000000000000000060007f636f72652e7300000000000000000000000000000000000000000000000000008787600f811061050f5761050f6133f2565b60200201518888600f8110610526576105266133f2565b60200201516040517fffffffffffffffffffffffffffffffff0000000000000000000000000000000094851660248201529390921660448401527fffffffff00000000000000000000000000000000000000000000000000000000908116606484015216608482015260a4016101ce565b50806105a28161341e565b915050610484565b5050565b6000806105b9610d45565b60408051600060208201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201529294509092506105aa91015b60405160208183030381529060405261060e90613438565b8383610e0d565b60408051600060208201527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030820152610126910160405160208183030381529060405261066390613438565b61066b610e9c565b610673610f14565b610f93565b600080610683610ff6565b60408051600060208201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201529294509092506105aa91016105f6565b60408051600060208201527f5265736f757263654163636573730000000000000000000000000000000000006030820152610126910160405160208183030381529060405261071290613438565b61071a6110be565b6106736110f8565b60008061072d611177565b60408051600060208201527f5265736f7572636541636365737300000000000000000000000000000000000060308201529294509092506105aa91016105f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c8061079d5750335b90565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106107d5576107d56133f2565b6020026020010181815250508260601b6bffffffffffffffffffffffff191681600181518110610807576108076133f2565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526108909061086190613438565b8260008560405160200161087c91151560f81b815260010190565b60405160208183030381529060405261123f565b50505050565b60408051600060208201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261012691016040516020818303038152906040526108e490613438565b6108ec6112d7565b610673611356565b6000806108ff611390565b60408051600060208201527f53797374656d730000000000000000000000000000000000000000000000000060308201529294509092506105aa91016105f6565b60408051600060208201527f66756e6353656c6563746f7273000000000000000000000000000000000000006030820152610126910160405160208183030381529060405261098e90613438565b6109966114ab565b610673611570565b6000806109a96115aa565b60408051600060208201527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201529294509092506105aa91016105f6565b60408051600060208201527f53797374656d526567697374727900000000000000000000000000000000000060308201526101269101604051602081830303815290604052610a3890613438565b610a40611356565b610673610e9c565b600080610a5361171b565b60408051600060208201527f53797374656d526567697374727900000000000000000000000000000000000060308201529294509092506105aa91016105f6565b60408051600060208201527f5265736f7572636554797065000000000000000000000000000000000000000060308201526101269101604051602081830303815290604052610ae290613438565b6108ec6117e3565b600080610af561181d565b60408051600060208201527f5265736f7572636554797065000000000000000000000000000000000000000060308201529294509092506105aa91016105f6565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610b6c57610b6c6133f2565b602090810291909101810191909152604080516000818401527f5265736f7572636554797065000000000000000000000000000000000000000060308201528151808203909301835281019052610c1690610bc690613438565b826000856003811115610bdb57610bdb61345f565b60405160200161087c919060f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b505050565b606060008487604051602001610c329291906134a1565b604051602081830303815290604052905060008085610cb9578773ffffffffffffffffffffffffffffffffffffffff168584604051610c7191906134eb565b60006040518083038185875af1925050503d8060008114610cae576040519150601f19603f3d011682016040523d82523d6000602084013e610cb3565b606091505b50610d20565b8773ffffffffffffffffffffffffffffffffffffffff1683604051610cde91906134eb565b600060405180830381855af49150503d8060008114610d19576040519150601f19603f3d011682016040523d82523d6000602084013e610d1e565b606091505b505b915091508115610d34579250610d3c915050565b805160208201fd5b95945050505050565b6040805160018082528183019092526060918291600091816020015b6060815260200190600190039081610d615790505090506040518060400160405280600581526020017f6f776e657200000000000000000000000000000000000000000000000000000081525081600081518110610dc157610dc16133f2565b6020026020010181905250806040518060400160405280600e81526020017f4e616d6573706163654f776e65720000000000000000000000000000000000008152509092509250509091565b610e156118e5565b15610e2557610c16838383611963565b6040517ffe86a89f000000000000000000000000000000000000000000000000000000008152339063fe86a89f90610e6590869086908690600401613588565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110610ed657610ed66133f2565b602002602001019060c5811115610eef57610eef61345f565b908160c5811115610f0257610f0261345f565b905250610f0e81611a06565b91505090565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110610f4e57610f4e6133f2565b602002602001019060c5811115610f6757610f6761345f565b908160c5811115610f7a57610f7a61345f565b81525050605f81600181518110610ed657610ed66133f2565b610f9b6118e5565b15610fab57610c16838383611c60565b6040517fd5933686000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260448101829052339063d593368690606401610e65565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816110125790505090506040518060400160405280600d81526020017f6d6f64756c65416464726573730000000000000000000000000000000000000081525081600081518110611072576110726133f2565b6020026020010181905250806040518060400160405280601081526020017f496e7374616c6c65644d6f64756c6573000000000000000000000000000000008152509092509250509091565b60408051600180825281830190925260009182919060208083019080368337019050509050606081600081518110610ed657610ed66133f2565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611132576111326133f2565b602002602001019060c581111561114b5761114b61345f565b908160c581111561115e5761115e61345f565b81525050606181600181518110610ed657610ed66133f2565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816111935790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106111f3576111f36133f2565b6020026020010181905250806040518060400160405280600e81526020017f5265736f757263654163636573730000000000000000000000000000000000008152509092509250509091565b6112476118e5565b1561125d5761125884848484611ccd565b610890565b6040517f114a7266000000000000000000000000000000000000000000000000000000008152339063114a72669061129f9087908790879087906004016135f8565b600060405180830381600087803b1580156112b957600080fd5b505af11580156112cd573d6000803e3d6000fd5b5050505050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611311576113116133f2565b602002602001019060c581111561132a5761132a61345f565b908160c581111561133d5761133d61345f565b81525050606081600181518110610ed657610ed66133f2565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110610ed657610ed66133f2565b60408051600280825260608281019093528291600091816020015b60608152602001906001900390816113ab5790505090506040518060400160405280600681526020017f73797374656d00000000000000000000000000000000000000000000000000008152508160008151811061140b5761140b6133f2565b60200260200101819052506040518060400160405280600c81526020017f7075626c696341636365737300000000000000000000000000000000000000008152508160018151811061145f5761145f6133f2565b6020026020010181905250806040518060400160405280600781526020017f53797374656d73000000000000000000000000000000000000000000000000008152509092509250509091565b6040805160038082526080820190925260009182919060208201606080368337019050509050604f816000815181106114e6576114e66133f2565b602002602001019060c58111156114ff576114ff61345f565b908160c58111156115125761151261345f565b81525050604f8160018151811061152b5761152b6133f2565b602002602001019060c58111156115445761154461345f565b908160c58111156115575761155761345f565b81525050604381600281518110610ed657610ed66133f2565b60408051600180825281830190925260009182919060208083019080368337019050509050604381600081518110610ed657610ed66133f2565b604080516003808252608082019092526060918291600091816020015b60608152602001906001900390816115c75790505090506040518060400160405280600981526020017f6e616d657370616365000000000000000000000000000000000000000000000081525081600081518110611627576116276133f2565b60200260200101819052506040518060400160405280600481526020017f6e616d65000000000000000000000000000000000000000000000000000000008152508160018151811061167b5761167b6133f2565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816002815181106116cf576116cf6133f2565b6020026020010181905250806040518060400160405280601181526020017f46756e6374696f6e53656c6563746f72730000000000000000000000000000008152509092509250509091565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816117375790505090506040518060400160405280601081526020017f7265736f7572636553656c6563746f720000000000000000000000000000000081525081600081518110611797576117976133f2565b6020026020010181905250806040518060400160405280600e81526020017f53797374656d52656769737472790000000000000000000000000000000000008152509092509250509091565b60408051600180825281830190925260009182919060208083019080368337019050509050600081600081518110610ed657610ed66133f2565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816118395790505090506040518060400160405280600c81526020017f7265736f7572636554797065000000000000000000000000000000000000000081525081600081518110611899576118996133f2565b6020026020010181905250806040518060400160405280600c81526020017f5265736f757263655479706500000000000000000000000000000000000000008152509092509250509091565b6000303b8082036118f857600191505090565b3073ffffffffffffffffffffffffffffffffffffffff1663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b15801561193e57600080fd5b505afa92505050801561194f575060015b61195b57600091505090565b600191505090565b600061196e84611eb8565b905081516000148061198b575061198481611f0d565b60ff168251145b6119dc5761199881611f0d565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044015b60405180910390fd5b6108908484846040516020016119f2919061362c565b604051602081830303815290604052611f31565b6000601c82511115611a30578151604051635318beb960e01b81526004016119d391815260200190565b60008060008060005b8651811015611b5c576000611a77888381518110611a5957611a596133f2565b602002602001015160c5811115611a7257611a7261345f565b611fe9565b905061ffff811615611acd578215611abb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83611ac58161363f565b945050611ad2565b600192505b611adc818661365e565b9450611b5186611aed846004613684565b8a8581518110611aff57611aff6133f2565b602002602001015160c5811115611b1857611b1861345f565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101611a39565b506000828751611b6c919061369c565b9050600e8160ff161115611b9857604051635318beb960e01b815260ff821660048201526024016119d3565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b611c6b8260006120a1565b611c768160016120a1565b611c7f83612272565b15611cc25782611c8e8461228b565b6040517f147bbb8c0000000000000000000000000000000000000000000000000000000081526004016119d39291906136bf565b610c168383836122b6565b6000611cd885611eb8565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4685858585604051611d0f94939291906135f8565b60405180910390a16000611d228661242d565b905060005b8151811015611dd3576000828281518110611d4457611d446133f2565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663469b7ee2898989896040518563ffffffff1660e01b8152600401611d8d94939291906135f8565b600060405180830381600087803b158015611da757600080fd5b505af1158015611dbb573d6000803e3d6000fd5b50505050508080611dcb9061341e565b915050611d27565b50611ddd826124f5565b60ff168460ff161015611dfc57611df78686848787612506565b611e09565b611e0986868487876125ac565b60005b8151811015610e93576000828281518110611e2957611e296133f2565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16636b3d7d5f898989896040518563ffffffff1660e01b8152600401611e7294939291906135f8565b600060405180830381600087803b158015611e8c57600080fd5b505af1158015611ea0573d6000803e3d6000fd5b50505050508080611eb09061341e565b915050611e0c565b6000611ec3826125e9565b905080611f085781611ed48361228b565b6040517fd623a70d0000000000000000000000000000000000000000000000000000000081526004016119d39291906136bf565b919050565b6000611f1882612685565b611f21836124f5565b611f2b91906136d8565b92915050565b6000611f3d8383612691565b60408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110611f7757611f776133f2565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f53746f72654d657461646174610000000000000000000000000000000000000060308201528151808203909301835281019052611fe290611fdb90613438565b8284612747565b5050505050565b6000808260c5811115611ffe57611ffe61345f565b60ff169050602081101561201e57612017816001613684565b9392505050565b604081101561203e576020612034826001613684565b61201791906136fd565b6060811015612054576040612034826001613684565b60608360c58111156120685761206861345f565b036120765750600192915050565b60618360c581111561208a5761208a61345f565b036120985750601492915050565b50600092915050565b801580156120ad575081155b156120ce57604051635318beb960e01b8152600060048201526024016119d3565b60006120d983612685565b60ff169050600e81111561210357604051635318beb960e01b8152600481018290526024016119d3565b600061210e846124f5565b60ff169050601c61211f8383613684565b111561214b5761212f8282613684565b604051635318beb960e01b81526004016119d391815260200190565b60008060005b61215b8585613684565b811015612223576000612182612171898461279f565b60c5811115611a7257611a7261345f565b11156121d3578381106121c1576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826121cb8161341e565b93505061221b565b8381101561220d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816122178161341e565b9250505b600101612151565b5082821461224757604051635318beb960e01b8152600481018390526024016119d3565b83811461226a57604051635318beb960e01b8152600481018290526024016119d3565b505050505050565b6000612284612280836125e9565b1590565b1592915050565b6060816040516020016122a091815260200190565b6040516020818303038152906040529050919050565b6040805160018082528183019092526000916020808301908036833701905050905083816000815181106122ec576122ec6133f2565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d610000000000000000000000000000000000000000000000000000603083015260009161235f91015b60405160208183030381529060405261235990613438565b836127cb565b8481559050612377612372826020613684565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee3291016040516020818303038152906040526123ed90613438565b83868660408051602081019390935282015260600160408051601f198184030181529082905261241e939291613714565b60405180910390a15050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612467576124676133f2565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b73000000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906124d6906124ce90613438565b836000612821565b90506124ed6124e882600084516128c7565b612957565b949350505050565b6000601082901b5b60f81c92915050565b60006125158460ff851661279f565b9050815161252e8260c5811115611a7257611a7261345f565b14612585576125488160c5811115611a7257611a7261345f565b82516040517f521b3d33000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016119d3565b600061259187876127cb565b9050600061259f8686612968565b90506112cd8282866129ab565b60006125b7846124f5565b6125c1908461369c565b90506125d086868385516129c0565b60006125dd8787846129f2565b9050610e938184612a4b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110612622576126226133f2565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d610000000000000000000000000000000000000000000000000000603083015260009161267b9101612341565b90506124ed815490565b6000601882901b6124fd565b604080516002808252606080830184529260009291906020830190803683370190505090508351816000815181106126cb576126cb6133f2565b602002602001019061ffff16908161ffff16815250508251816001815181106126f6576126f66133f2565b602002602001019061ffff16908161ffff1681525050600061271782612a57565b905080858560405160200161272e9392919061373f565b6040516020818303038152906040529250505092915050565b61274f6118e5565b1561275f57610c16838383612b34565b6040517f8ed41f2f0000000000000000000000000000000000000000000000000000000081523390638ed41f2f90610e6590869086908690600401613714565b60006127b7836127b0846004613684565b6008021b90565b60f81c60c58111156120175761201761345f565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016128029392919061377c565b60408051601f1981840301815291905280516020909101209392505050565b606061282b6118e5565b156128425761283b848484612d96565b9050612017565b6040517fd03edb8c000000000000000000000000000000000000000000000000000000008152339063d03edb8c906128829087908790879060040161379b565b600060405180830381865afa15801561289f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261283b91908101906137c7565b60008183111580156128da575083518211155b612916578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016119d393929190613835565b602084016129248482613684565b9050600061293285856136fd565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006120178360146000612db1565b600080805b8360ff168110156129a357612985612171868361279f565b61298f9083613684565b91508061299b8161341e565b91505061296d565b509392505050565b60006020820190506108908484838551612ef4565b60006129cc8585612fb2565b905060006129d8825490565b90506129e88160ff861685612fe9565b808355905061226a565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9848484604051602001612a2b949392919061385a565b60408051601f198184030181529190528051602090910120949350505050565b6105aa826000836129ab565b6000806000805b8451811015612b0957612ad483612a7683600261388d565b612a81906004613684565b878481518110612a9357612a936133f2565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b9250848181518110612ae857612ae86133f2565b602002602001015161ffff1682612aff91906138ac565b9150600101612a5e565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b176124ed565b6000612b3f84611eb8565b90506000612b4d8260f01c90565b905080600080612b5c85612685565b60ff161115612b8a57506020848301015160e081901c612b7d906020613684565b612b879083613684565b91505b84518214612bd15784516040517f521b3d330000000000000000000000000000000000000000000000000000000081526119d3918491600401918252602082015260400190565b7f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32878787604051612c0493929190613714565b60405180910390a16000612c178861242d565b905060005b8151811015612cc6576000828281518110612c3957612c396133f2565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166382b6745f8b8b8b6040518463ffffffff1660e01b8152600401612c8093929190613714565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b50505050508080612cbe9061341e565b915050612c1c565b506000612cd389896127cb565b905060208701612ce68260008389612ef4565b612cf1866020613684565b612cfb9082613684565b9050612d0687612685565b60ff16600003612d1c5750505050505050505050565b6000612d288b8b612fb2565b858155905060008060005b612d3c8b612685565b60ff168160ff161015612d8657612d548e8e836129f2565b9250612d638860ff83166130c5565b9150612d728360008785612ef4565b612d7c8286613684565b9450600101612d33565b5050505050505050505050505050565b60606000612da385611eb8565b9050610d3c858585846130f7565b60606000612dbf8560801c90565b90506fffffffffffffffffffffffffffffffff8516600084612df757612de686600861388d565b612df2906101006136fd565b612dfa565b60005b90506000868381612e0d57612e0d6138cb565b049050612e1a87846138e1565b15612ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a6500000060648201526084016119d3565b602080820201604051955080860160405250808552600060208601855b83831015612ee6578051851c8252600192909201916020909101908901612ec4565b505050505050509392505050565b602083048401935060208381612f0c57612f0c6138cb565b0692508215612f655760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311612f50575050610890565b612f5b600187613684565b9550509182019190035b60208110612f8e5781518455612f7c600185613684565b935060209190910190601f1901612f65565b8015610890576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9838360405160200161280293929190613903565b60008381612ff78260e01c90565b90506000613008878760ff166130c5565b905080851061302c5761301b81866136fd565b6130259083613684565b9150613043565b61303685826136fd565b61304090836136fd565b91505b600061305087600261388d565b61305b906004613684565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c175b98975050505050505050565b6000806130d383600261388d565b6130de906004613684565b90506130ec84826008021b90565b60f01c949350505050565b6060613102826124f5565b60ff168360ff1610156131225761311b8585858561312e565b90506124ed565b61311b8585858561318e565b6060600061313f8360ff861661279f565b905060006131588260c5811115611a7257611a7261345f565b9050600061316688886127cb565b905060006131748688612968565b90506131818284836131db565b9998505050505050505050565b6060600061319b836124f5565b6131a5908561369c565b905060006131b48787846129f2565b905060006131cf8360ff166131c98a8a613233565b906130c5565b90506130b98282613240565b60608267ffffffffffffffff8111156131f6576131f6613303565b6040519080825280601f01601f191660200182016040528015613220576020820181803683370190505b509050602081016129a38585858461324e565b60008061267b8484612fb2565b6060612017838360006131db565b602082048401935060208281613266576132666138cb565b06915081156132b75760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116132a2575050610890565b6132ad600187613684565b9550509283900392015b602083106132df57835481526132ce600185613684565b9350601f19909201916020016132b7565b8215610890576000600019600885021c198251865482169119161782525050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561334257613342613303565b604052919050565b600067ffffffffffffffff82111561336457613364613303565b50601f01601f191660200190565b60006020828403121561338457600080fd5b813567ffffffffffffffff81111561339b57600080fd5b8201601f810184136133ac57600080fd5b80356133bf6133ba8261334a565b613319565b8181528560208385010111156133d457600080fd5b81602084016020830137600091810160200191909152949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361343157613431613408565b5060010190565b80516020808301519190811015613459576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052602160045260246000fd5b60005b83811015613490578181015183820152602001613478565b838111156108905750506000910152565b600083516134b3818460208801613475565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b600082516134fd818460208701613475565b9190910192915050565b6000815180845261351f816020860160208601613475565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b8581101561357b578284038952613569848351613507565b98850198935090840190600101613551565b5091979650505050505050565b8381526060602082015260006135a16060830185613507565b82810360408401526135b38185613533565b9695505050505050565b600081518084526020808501945080840160005b838110156135ed578151875295820195908201906001016135d1565b509495945050505050565b84815260806020820152600061361160808301866135bd565b60ff851660408401528281036060840152611c558185613507565b6020815260006120176020830184613533565b600060ff821660ff810361365557613655613408565b60010192915050565b600061ffff80831681851680830382111561367b5761367b613408565b01949350505050565b6000821982111561369757613697613408565b500190565b600060ff821660ff8416808210156136b6576136b6613408565b90039392505050565b8281526040602082015260006124ed6040830184613507565b600060ff821660ff84168060ff038211156136f5576136f5613408565b019392505050565b60008282101561370f5761370f613408565b500390565b83815260606020820152600061372d60608301856135bd565b82810360408401526135b38185613507565b83815260008351613757816020850160208801613475565b8083019050835161376f816020840160208801613475565b0160200195945050505050565b838152826020820152606060408201526000610d3c60608301846135bd565b8381526060602082015260006137b460608301856135bd565b905060ff83166040830152949350505050565b6000602082840312156137d957600080fd5b815167ffffffffffffffff8111156137f057600080fd5b8201601f8101841361380157600080fd5b805161380f6133ba8261334a565b81815285602083850101111561382457600080fd5b610d3c826020830160208601613475565b6060815260006138486060830186613507565b60208301949094525060400152919050565b84815283602082015260806040820152600061387960808301856135bd565b905060ff8316606083015295945050505050565b60008160001904831182151516156138a7576138a7613408565b500290565b600063ffffffff80831681851680830382111561367b5761367b613408565b634e487b7160e01b600052601260045260246000fd5b6000826138fe57634e487b7160e01b600052601260045260246000fd5b500690565b83815282602082015260806040820152600061392260808301846135bd565b8281036060840152600681527f6c656e677468000000000000000000000000000000000000000000000000000060208201526040810191505094935050505056fea2646970667358221220985115c808c53dcfa8d034647e3ba5ed35e13cfbd1d761e2d3869eff86d56a3664736f6c634300080d0033608060405234801561001057600080fd5b50614a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637a58dce411610097578063ca4c1f5e11610066578063ca4c1f5e14610211578063d593368614610224578063f227e65314610237578063fe86a89f1461024a57600080fd5b80637a58dce4146101c55780638ae710e9146101d85780638da798da146101eb578063a886545e146101fe57600080fd5b80633ca90f22116100d35780633ca90f22146101485780634c9e9f111461015b57806356f55a971461016e5780636e81fd71146101b257600080fd5b8063096fcaa9146100fa5780631e42269e1461010f57806331b99d8914610122575b600080fd5b61010d610108366004613d31565b61025d565b005b61010d61011d366004613ddb565b6102c8565b610135610130366004613e26565b6102e9565b6040519081526020015b60405180910390f35b61010d610156366004613ddb565b505050565b610135610169366004613e6c565b610416565b61018161017c366004613efd565b610537565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161013f565b61010d6101c0366004613f55565b6105f2565b61010d6101d3366004613ddb565b6106de565b61010d6101e6366004613ddb565b610751565b61010d6101f9366004614032565b61076c565b61010d61020c366004614096565b61086f565b61018161021f3660046140d3565b6108dd565b61010d61023236600461415c565b610a28565b61010d610245366004613ddb565b610ab6565b61010d610258366004614188565b610ad3565b6000610271878761026c610b42565b610b74565b90506102bf8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ba9250879150889050614202565b610c02565b50505050505050565b60006102d7848461026c610b42565b90506102e38183610ca0565b50505050565b60006001600160801b03198516608085901c1790506001600160801b031984166103525761031681610d67565b6040517fe56728c000000000000000000000000000000000000000000000000000000000815260040161034991906142de565b60405180910390fd5b60006103676001600160801b03198716610e3b565b6003811115610378576103786142f1565b0361038b576103868561086f565b61039b565b61039985600061026c610b42565b505b60006103a682610e3b565b60038111156103b7576103b76142f1565b146103f8576103c581610d67565b6040517f0f2fac6100000000000000000000000000000000000000000000000000000000815260040161034991906142de565b610403816002610ef7565b61040e818484610feb565b949350505050565b60006001600160801b03198516608085901c1790506001600160801b031984166104435761031681610d67565b61044c83611058565b1561048e576040517fb86487840000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610349565b60006104a36001600160801b03198716610e3b565b60038111156104b4576104b46142f1565b036104c7576104c28561086f565b6104d7565b6104d585600061026c610b42565b505b60006104e282610e3b565b60038111156104f3576104f36142f1565b14610501576103c581610d67565b61050c816003610ef7565b6105178184846110fb565b61052183826111d3565b61040e6001600160801b0319861684600161128b565b6000610546818061026c610b42565b50600061055284611367565b9050600061055f8561140a565b90506001600160801b0319821615801561058157506001600160801b03198116155b6105db576040517f9b2a16a90000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000086166004820152602401610349565b6105e7858888876114c8565b509295945050505050565b600061060d6f636f72652e73000000000000000000006115c8565b5090506102e361061b610b42565b827f8ae710e900000000000000000000000000000000000000000000000000000000866106488860801b90565b6040516001600160801b03199283166024820152911660448201526001600160a01b03871660648201526084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001600061168d565b60006106f96001600160801b03198516608085901c17610e3b565b9050600281600381111561070f5761070f6142f1565b0361071f576102e3848484610751565b6003816003811115610733576107336142f1565b146102e3576103166001600160801b03198516608085901c17610d67565b6000610760848461026c610b42565b90506102e3818361179d565b6107f8610777610b42565b836313861fb560e01b8460405160240161079191906142de565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260008061168d565b5061086b826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e9190614307565b82516020840120846117a7565b5050565b6001600160801b03198116600061088582610e3b565b6003811115610896576108966142f1565b146108a4576103c581610d67565b6108b96001600160801b031983166001610ef7565b6108ca826108c5610b42565b61186b565b61086b816108d6610b42565b600161128b565b60006108ec858561026c610b42565b5060006108f886611937565b9050600061090586611937565b90508181868660405160200161091e9493929190614324565b604051602081830303815290604052805190602001209250600061094184611367565b9050600061094e8561140a565b90506001600160801b0319821615158061097157506001600160801b0319811615155b156109cc576040517f9b2a16a90000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000086166004820152602401610349565b600087876040516020016109e19291906143b1565b604051602081830303815290604052905060008151600014610a095781516020830120610a0c565b60005b9050610a1a878c8c846114c8565b505050505050949350505050565b6000610a436f636f72652e73000000000000000000006115c8565b509050610aaf610a51610b42565b827f31b99d890000000000000000000000000000000000000000000000000000000087610a7e8960801b90565b6040516001600160801b0319928316602482015291166044820152606481018890526084810187905260a401610676565b5050505050565b6000610ac5848461026c610b42565b90506102e38183600161128b565b6000610aee6f636f72652e73000000000000000000006115c8565b5090506102bf610afc610b42565b827f096fcaa90000000000000000000000000000000000000000000000000000000089610b298b60801b90565b8a8a8a8a6040516024016106769695949392919061440b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c80610b715750335b90565b608082901c6001600160801b03198416176001600160a01b0382163014801590610bb85750816001600160a01b0316610bac856119b5565b6001600160a01b031614155b15610bfb57610bc681610d67565b826040517fe64c03480000000000000000000000000000000000000000000000000000000081526004016103499291906144f4565b9392505050565b6000610c0d84611a5b565b9050815160001480610c2a5750610c2381611ab0565b60ff168251145b610c7657610c3781611ab0565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff90921660048301526024820152604401610349565b6102e3848484604051602001610c8c919061451f565b604051602081830303815290604052611ad4565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610cd557610cd561459f565b6020026020010181815250508160601b6bffffffffffffffffffffffff191681600181518110610d0757610d0761459f565b602090810291909101810191909152604080516000818401527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261015690610d61906145b5565b82611b70565b606081608081901b6001600160801b0319821615610d855781610da7565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b6001600160801b0319821615610dbd5781610ddf565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040516001600160801b031992831660208201527f2f0000000000000000000000000000000000000000000000000000000000000060308201529116603182015260410160405160208183030381529060405292505050919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610e7457610e7461459f565b6020908102919091018101919091526040805160009281018390527f5265736f757263655479706500000000000000000000000000000000000000006030820152610edb91015b604051602081830303815290604052610ed3906145b5565b836000611bf3565b602081015190915060f81c600381111561040e5761040e6142f1565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610f2d57610f2d61459f565b602090810291909101810191909152604080516000818401527f5265736f757263655479706500000000000000000000000000000000000000006030820152815180820390930183528101905261015690610f87906145b5565b826000856003811115610f9c57610f9c6142f1565b604051602001610fd7919060f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b604051602081830303815290604052611c99565b610ff6826000611d31565b611001816001611d31565b61100a83611eff565b1561104d578261101984611f18565b6040517f147bbb8c0000000000000000000000000000000000000000000000000000000081526004016103499291906145dc565b610156838383611f43565b604080516001808252818301909252600091829190602080830190803683370190505090508260601b6bffffffffffffffffffffffff1916816000815181106110a3576110a361459f565b6020908102919091018101919091526040805160009281018390527f53797374656d526567697374727900000000000000000000000000000000000060308201526110ee9101610ebb565b602081015190915061040e565b60408051606084901b6bffffffffffffffffffffffff191660208083019190915283151560f81b603483015282518083036015018152600160358401818152607585019095529093600093909260559091019080368337019050509050848160008151811061116c5761116c61459f565b602090810291909101810191909152604080516000928101929092527f53797374656d73000000000000000000000000000000000000000000000000006030830152610aaf91015b6040516020818303038152906040526111cc906145b5565b82846120ba565b604080516001808252818301909252600091602080830190803683370190505090508260601b6bffffffffffffffffffffffff19168160008151811061121b5761121b61459f565b602090810291909101810191909152604080516000818401527f53797374656d52656769737472790000000000000000000000000000000000006030820152815180820390930183528101905261015690611275906145b5565b82600085604051602001610fd791815260200190565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106112c0576112c061459f565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106112f2576112f261459f565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526102e39061134c906145b5565b82600085604051602001610fd791151560f81b815260010190565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106113bf576113bf61459f565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526110ee9101610ebb565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106114625761146261459f565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526110ee91016040516020818303038152906040526114c0906145b5565b836001611bf3565b604080516001600160801b031985811660208084019190915290851660308301527fffffffff0000000000000000000000000000000000000000000000000000000084168284015282516024818403018152600160448401818152608485019095529093600093909260649091019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115745761157461459f565b602090810291909101810191909152604080516000928101929092527f66756e6353656c6563746f72730000000000000000000000000000000000000060308301526115c091016111b4565b505050505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106116025761160261459f565b6020908102919091018101919091526040805160009281018390527f53797374656d7300000000000000000000000000000000000000000000000000603082015261166e9101604051602081830303815290604052611660906145b5565b83611669612140565b6121fd565b6020810151603482015191925060601c9060f81c935093505050915091565b6060600084876040516020016116a49291906145f5565b60405160208183030381529060405290506000808561171e57876001600160a01b031685846040516116d6919061462c565b60006040518083038185875af1925050503d8060008114611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b50611778565b876001600160a01b031683604051611736919061462c565b600060405180830381855af49150503d8060008114611771576040519150601f19603f3d011682016040523d82523d6000602084013e611776565b606091505b505b91509150811561178c579250611794915050565b805160208201fd5b95945050505050565b61086b8282612257565b60006117b282612329565b6040805160028082526060820183529293506000929091602083019080368337019050509050846fffffffffffffffffffffffffffffffff1916816000815181106117ff576117ff61459f565b602002602001018181525050838160018151811061181f5761181f61459f565b602090810291909101810191909152604080516000928101929092527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610aaf91016111b4565b60408051600180825281830190925260009160208083019080368337019050509050826fffffffffffffffffffffffffffffffff1916816000815181106118b4576118b461459f565b602090810291909101810191909152604080516000818401527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526101569061190e906145b5565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401610fd7565b606060005b601081101561198e576001600160801b03198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561198e57806119868161465e565b91505061193c565b604080516001600160801b031985166020820152815160309091019091528181528061040e565b60408051600180825281830190925260009182919060208083019080368337019050509050826fffffffffffffffffffffffffffffffff191681600081518110611a0157611a0161459f565b6020908102919091018101919091526040805160009281018390527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152611a4c9101610ebb565b6020015160601c949350505050565b6000611a668261234e565b905080611aab5781611a7783611f18565b6040517fd623a70d0000000000000000000000000000000000000000000000000000000081526004016103499291906145dc565b919050565b6000611abb826123ea565b611ac4836123fb565b611ace9190614678565b92915050565b6000611ae08383612407565b60408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110611b1a57611b1a61459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f53746f72654d65746164617461000000000000000000000000000000000000006030830152610aaf91016111b4565b611b786124bd565b15611b875761086b828261252e565b6040517f505a181d000000000000000000000000000000000000000000000000000000008152339063505a181d90611bc590859085906004016146d8565b600060405180830381600087803b158015611bdf57600080fd5b505af11580156115c0573d6000803e3d6000fd5b6060611bfd6124bd565b15611c1457611c0d8484846126b7565b9050610bfb565b6040517fd03edb8c000000000000000000000000000000000000000000000000000000008152339063d03edb8c90611c54908790879087906004016146f1565b600060405180830381865afa158015611c71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c0d919081019061471d565b611ca16124bd565b15611cb757611cb2848484846126d2565b6102e3565b6040517f114a7266000000000000000000000000000000000000000000000000000000008152339063114a726690611cf990879087908790879060040161478b565b600060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b5050505050505050565b80158015611d3d575081155b15611d5e57604051635318beb960e01b815260006004820152602401610349565b6000611d69836123ea565b60ff169050600e811115611d9357604051635318beb960e01b815260048101829052602401610349565b6000611d9e846123fb565b60ff169050601c611daf83836147bf565b1115611ddb57611dbf82826147bf565b604051635318beb960e01b815260040161034991815260200190565b60008060005b611deb85856147bf565b811015611eb8576000611e17611e0189846128a3565b60c5811115611e1257611e126142f1565b6128cf565b1115611e6857838110611e56576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82611e608161465e565b935050611eb0565b83811015611ea2576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81611eac8161465e565b9250505b600101611de1565b50828214611edc57604051635318beb960e01b815260048101839052602401610349565b8381146115c057604051635318beb960e01b815260048101829052602401610349565b6000611f11611f0d8361234e565b1590565b1592915050565b606081604051602001611f2d91815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508381600081518110611f7957611f7961459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d6100000000000000000000000000000000000000000000000000006030830152600091611fec91015b604051602081830303815290604052611fe6906145b5565b83612980565b8481559050612004611fff8260206147bf565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32910160405160208183030381529060405261207a906145b5565b83868660408051602081019390935282015260600160408051601f19818403018152908290526120ab9392916147d7565b60405180910390a15050505050565b6120c26124bd565b156120d2576101568383836129d6565b6040517f8ed41f2f0000000000000000000000000000000000000000000000000000000081523390638ed41f2f90612112908690869086906004016147d7565b600060405180830381600087803b15801561212c57600080fd5b505af11580156102bf573d6000803e3d6000fd5b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061217a5761217a61459f565b602002602001019060c5811115612193576121936142f1565b908160c58111156121a6576121a66142f1565b815250506060816001815181106121bf576121bf61459f565b602002602001019060c58111156121d8576121d86142f1565b908160c58111156121eb576121eb6142f1565b9052506121f781612c2b565b91505090565b60606122076124bd565b1561221757611c0d848484612e80565b6040517f419b58fd000000000000000000000000000000000000000000000000000000008152339063419b58fd90611c549087908790879060040161480c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061228d5761228d61459f565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b7300000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052610156906122f1906145b5565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401604051602081830303815290604052612fe5565b604051606082811b6bffffffffffffffffffffffff1916602083015290603401611f2d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106123875761238761459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d61000000000000000000000000000000000000000000000000000060308301526000916123e09101611fce565b905061040e815490565b6000601882901b5b60f81c92915050565b6000601082901b6123f2565b604080516002808252606080830184529260009291906020830190803683370190505090508351816000815181106124415761244161459f565b602002602001019061ffff16908161ffff168152505082518160018151811061246c5761246c61459f565b602002602001019061ffff16908161ffff1681525050600061248d82613040565b90508085856040516020016124a493929190614835565b6040516020818303038152906040529250505092915050565b6000303b8082036124d057600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b15801561250957600080fd5b505afa92505050801561251a575060015b61252657600091505090565b600191505090565b600061253983611a5b565b90507f2cc8610b80ef19409ae51ecbdd9c137960fb22ae9ef2d817d36ec1b685d68ecd838360405161256c9291906146d8565b60405180910390a1600061257f8461311d565b905060005b815181101561261f5760008282815181106125a1576125a161459f565b60200260200101519050806001600160a01b031663b51fef6c87876040518363ffffffff1660e01b81526004016125d99291906146d8565b600060405180830381600087803b1580156125f357600080fd5b505af1158015612607573d6000803e3d6000fd5b505050505080806126179061465e565b915050612584565b50600061262c8585612980565b905061268681600061263e8660f01c90565b67ffffffffffffffff81111561265657612656613f85565b6040519080825280601f01601f191660200182016040528015612680576020820181803683370190505b506131c7565b61268f836123ea565b60ff166000036126a0575050505050565b60006126ac86866131dc565b6000815590506115c0565b606060006126c485611a5b565b905061179485858584613213565b60006126dd85611a5b565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4685858585604051612714949392919061478b565b60405180910390a160006127278661311d565b905060005b81518110156127cb5760008282815181106127495761274961459f565b60200260200101519050806001600160a01b031663469b7ee2898989896040518563ffffffff1660e01b8152600401612785949392919061478b565b600060405180830381600087803b15801561279f57600080fd5b505af11580156127b3573d6000803e3d6000fd5b505050505080806127c39061465e565b91505061272c565b506127d5826123fb565b60ff168460ff1610156127f4576127ef868684878761324a565b612801565b61280186868487876132f0565b60005b81518110156102bf5760008282815181106128215761282161459f565b60200260200101519050806001600160a01b0316636b3d7d5f898989896040518563ffffffff1660e01b815260040161285d949392919061478b565b600060405180830381600087803b15801561287757600080fd5b505af115801561288b573d6000803e3d6000fd5b5050505050808061289b9061465e565b915050612804565b60006128bb836128b48460046147bf565b6008021b90565b60f81c60c5811115610bfb57610bfb6142f1565b6000808260c58111156128e4576128e46142f1565b60ff16905060208110156128fd57610bfb8160016147bf565b604081101561291d5760206129138260016147bf565b610bfb9190614872565b60608110156129335760406129138260016147bf565b60608360c5811115612947576129476142f1565b036129555750600192915050565b60618360c5811115612969576129696142f1565b036129775750601492915050565b50600092915050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016129b793929190614889565b60408051601f1981840301815291905280516020909101209392505050565b60006129e184611a5b565b905060006129ef8260f01c90565b9050806000806129fe856123ea565b60ff161115612a2c57506020848301015160e081901c612a1f9060206147bf565b612a2990836147bf565b91505b84518214612a735784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610349918491600401918252602082015260400190565b7f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32878787604051612aa6939291906147d7565b60405180910390a16000612ab98861311d565b905060005b8151811015612b5b576000828281518110612adb57612adb61459f565b60200260200101519050806001600160a01b03166382b6745f8b8b8b6040518463ffffffff1660e01b8152600401612b15939291906147d7565b600060405180830381600087803b158015612b2f57600080fd5b505af1158015612b43573d6000803e3d6000fd5b50505050508080612b539061465e565b915050612abe565b506000612b688989612980565b905060208701612b7b826000838961332d565b612b868660206147bf565b612b9090826147bf565b9050612b9b876123ea565b60ff16600003612bb15750505050505050505050565b6000612bbd8b8b6131dc565b858155905060008060005b612bd18b6123ea565b60ff168160ff161015612c1b57612be98e8e836133eb565b9250612bf88860ff8316613444565b9150612c07836000878561332d565b612c1182866147bf565b9450600101612bc8565b5050505050505050505050505050565b6000601c82511115612c55578151604051635318beb960e01b815260040161034991815260200190565b60008060008060005b8651811015612d7c576000612c97888381518110612c7e57612c7e61459f565b602002602001015160c5811115611e1257611e126142f1565b905061ffff811615612ced578215612cdb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83612ce5816148a8565b945050612cf2565b600192505b612cfc81866148c7565b9450612d7186612d0d8460046147bf565b8a8581518110612d1f57612d1f61459f565b602002602001015160c5811115612d3857612d386142f1565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101612c5e565b506000828751612d8c91906148e4565b9050600e8160ff161115612db857604051635318beb960e01b815260ff82166004820152602401610349565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b60606000612e8e8360f01c90565b905080600080612e9d866123ea565b60ff1690508015612ee857612eb28888613476565b91506000612ec08360e01c90565b1115612ee857612ed08260e01c90565b612edb9060206147bf565b612ee590846147bf565b92505b60008367ffffffffffffffff811115612f0357612f03613f85565b6040519080825280601f01601f191660200182016040528015612f2d576020820181803683370190505b50905060208101612f408a8a8884613483565b612f4a8460e01c90565b600003612f5e57509450610bfb9350505050565b612f6886826147bf565b8481529050612f786020826147bf565b905060005b838160ff161015612fd6576000612f958c8c846133eb565b90506000612fa68760ff8516613444565b9050612fb582826000876134a0565b612fbf81856147bf565b935050508080612fce906148a8565b915050612f7d565b50909998505050505050505050565b612fed6124bd565b15612ffe57611cb284848484613555565b6040517f0c1a60000000000000000000000000000000000000000000000000000000000081523390630c1a600090611cf990879087908790879060040161478b565b6000806000805b84518110156130f2576130bd8361305f836002614907565b61306a9060046147bf565b87848151811061307c5761307c61459f565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b92508481815181106130d1576130d161459f565b602002602001015161ffff16826130e89190614926565b9150600101613047565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b1761040e565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106131575761315761459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f486f6f6b7300000000000000000000000000000000000000000000000000000060308301526000916131b09101610ebb565b905061040e6131c28260008451613777565b613807565b60006020820190506102e3848483855161332d565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016129b793929190614945565b606061321e826123fb565b60ff168360ff16101561323e5761323785858585613818565b905061040e565b61323785858585613878565b60006132598460ff85166128a3565b905081516132728260c5811115611e1257611e126142f1565b146132c95761328c8160c5811115611e1257611e126142f1565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610349565b60006132d58787612980565b905060006132e386866138d1565b9050611d278282866131c7565b60006132fb846123fb565b61330590846148e4565b90506133148686838551613914565b60006133218787846133eb565b90506102bf8184613946565b602083048401935060208381613345576133456149a5565b069250821561339e5760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116133895750506102e3565b6133946001876147bf565b9550509182019190035b602081106133c757815184556133b56001856147bf565b935060209190910190601f190161339e565b80156102e3576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d984848460405160200161342494939291906149bb565b60408051601f198184030181529190528051602090910120949350505050565b600080613452836002614907565b61345d9060046147bf565b905061346b84826008021b90565b60f01c949350505050565b6000806123e084846131dc565b81156102e35760006134958585612980565b9050610aaf81846000855b6020820484019350602082816134b8576134b86149a5565b06915081156135095760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116134f45750506102e3565b6134ff6001876147bf565b9550509283900392015b6020831061353157835481526135206001856147bf565b9350601f1990920191602001613509565b82156102e3576000600019600885021c198251865482169119161782525050505050565b600061356085611a5b565b905061356b816123fb565b60ff168360ff1610156135aa576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006135b886868685613878565b836040516020016135ca9291906143b1565b60405160208183030381529060405290507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4686868684604051613610949392919061478b565b60405180910390a160006136238761311d565b905060005b81518110156136c75760008282815181106136455761364561459f565b60200260200101519050806001600160a01b031663469b7ee28a8a8a886040518563ffffffff1660e01b8152600401613681949392919061478b565b600060405180830381600087803b15801561369b57600080fd5b505af11580156136af573d6000803e3d6000fd5b505050505080806136bf9061465e565b915050613628565b506136d58787858888613952565b60005b8151811015611d275760008282815181106136f5576136f561459f565b60200260200101519050806001600160a01b0316636b3d7d5f8a8a8a886040518563ffffffff1660e01b8152600401613731949392919061478b565b600060405180830381600087803b15801561374b57600080fd5b505af115801561375f573d6000803e3d6000fd5b5050505050808061376f9061465e565b9150506136d8565b600081831115801561378a575083518211155b6137c6578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610349939291906149ee565b602084016137d484826147bf565b905060006137e28585614872565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610bfb83601460006139cd565b606060006138298360ff86166128a3565b905060006138428260c5811115611e1257611e126142f1565b905060006138508888612980565b9050600061385e86886138d1565b905061386b828483613b10565b9998505050505050505050565b60606000613885836123fb565b61388f90856148e4565b9050600061389e8787846133eb565b905060006138b98360ff166138b38a8a613476565b90613444565b90506138c58282613b68565b98975050505050505050565b600080805b8360ff1681101561390c576138ee611e0186836128a3565b6138f890836147bf565b9150806139048161465e565b9150506138d6565b509392505050565b600061392085856131dc565b9050600061392c825490565b905061393c8160ff861685613b76565b80835590506115c0565b61086b826000836131c7565b600061395d846123fb565b61396790846148e4565b9050600061397587876131dc565b90506000613981825490565b905060006139928260ff8616613444565b90506139b08460ff168651836139a891906147bf565b849190613b76565b80845591506139c28989868489613c4a565b505050505050505050565b606060006139db8560801c90565b90506fffffffffffffffffffffffffffffffff8516600084613a1357613a02866008614907565b613a0e90610100614872565b613a16565b60005b90506000868381613a2957613a296149a5565b049050613a368784614a13565b15613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610349565b602080820201604051955080860160405250808552600060208601855b83831015613b02578051851c8252600192909201916020909101908901613ae0565b505050505050509392505050565b60608267ffffffffffffffff811115613b2b57613b2b613f85565b6040519080825280601f01601f191660200182016040528015613b55576020820181803683370190505b5090506020810161390c858585846134a0565b6060610bfb83836000613b10565b60008381613b848260e01c90565b90506000613b95878760ff16613444565b9050808510613bb957613ba88186614872565b613bb290836147bf565b9150613bd0565b613bc38582614872565b613bcd9083614872565b91505b6000613bdd876002614907565b613be89060046147bf565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c176138c5565b6000613c578686866133eb565b9050613c64602084614a27565b613c6e90826147bf565b90506000613c7d602085614a13565b90506102bf8282856131c7565b6001600160801b031981168114613ca057600080fd5b50565b60008083601f840112613cb557600080fd5b50813567ffffffffffffffff811115613ccd57600080fd5b602083019150836020828501011115613ce557600080fd5b9250929050565b60008083601f840112613cfe57600080fd5b50813567ffffffffffffffff811115613d1657600080fd5b6020830191508360208260051b8501011115613ce557600080fd5b60008060008060008060808789031215613d4a57600080fd5b8635613d5581613c8a565b95506020870135613d6581613c8a565b9450604087013567ffffffffffffffff80821115613d8257600080fd5b613d8e8a838b01613ca3565b90965094506060890135915080821115613da757600080fd5b50613db489828a01613cec565b979a9699509497509295939492505050565b6001600160a01b0381168114613ca057600080fd5b600080600060608486031215613df057600080fd5b8335613dfb81613c8a565b92506020840135613e0b81613c8a565b91506040840135613e1b81613dc6565b809150509250925092565b60008060008060808587031215613e3c57600080fd5b8435613e4781613c8a565b93506020850135613e5781613c8a565b93969395505050506040820135916060013590565b60008060008060808587031215613e8257600080fd5b8435613e8d81613c8a565b93506020850135613e9d81613c8a565b92506040850135613ead81613dc6565b915060608501358015158114613ec257600080fd5b939692955090935050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aab57600080fd5b60008060008060808587031215613f1357600080fd5b8435613f1e81613c8a565b93506020850135613f2e81613c8a565b9250613f3c60408601613ecd565b9150613f4a60608601613ecd565b905092959194509250565b60008060408385031215613f6857600080fd5b823591506020830135613f7a81613dc6565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613fc457613fc4613f85565b604052919050565b600067ffffffffffffffff821115613fe657613fe6613f85565b50601f01601f191660200190565b600061400761400284613fcc565b613f9b565b905082815283838301111561401b57600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561404557600080fd5b823561405081613dc6565b9150602083013567ffffffffffffffff81111561406c57600080fd5b8301601f8101851361407d57600080fd5b61408c85823560208401613ff4565b9150509250929050565b6000602082840312156140a857600080fd5b8135610bfb81613c8a565b600082601f8301126140c457600080fd5b610bfb83833560208501613ff4565b600080600080608085870312156140e957600080fd5b84356140f481613c8a565b9350602085013561410481613c8a565b9250604085013567ffffffffffffffff8082111561412157600080fd5b61412d888389016140b3565b9350606087013591508082111561414357600080fd5b50614150878288016140b3565b91505092959194509250565b60008060006060848603121561417157600080fd5b505081359360208301359350604090920135919050565b6000806000806000606086880312156141a057600080fd5b85359450602086013567ffffffffffffffff808211156141bf57600080fd5b6141cb89838a01613ca3565b909650945060408801359150808211156141e457600080fd5b506141f188828901613cec565b969995985093965092949392505050565b600067ffffffffffffffff8084111561421d5761421d613f85565b8360051b602061422e818301613f9b565b86815291850191818101903684111561424657600080fd5b865b8481101561427a578035868111156142605760008081fd5b61426c36828b016140b3565b845250918301918301614248565b50979650505050505050565b60005b838110156142a1578181015183820152602001614289565b838111156102e35750506000910152565b600081518084526142ca816020860160208601614286565b601f01601f19169290920160200192915050565b602081526000610bfb60208301846142b2565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561431957600080fd5b8151610bfb81613c8a565b60008551614336818460208a01614286565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528651614372816001850160208b01614286565b6001920191820152845161438d816002840160208901614286565b84519101906143a3816002840160208801614286565b016002019695505050505050565b600083516143c3818460208801614286565b8351908301906143d7818360208801614286565b01949350505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160801b031980891683526020818916818501526080604085015261443960808501888a6143e0565b84810360608601528581529150808201600586901b830182018760005b888110156144e257601f1986840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b360301811261449957600080fd5b8a01803567ffffffffffffffff8111156144b257600080fd5b8036038c13156144c157600080fd5b6144ce85828985016143e0565b958701959450505090840190600101614456565b50909c9b505050505050505050505050565b60408152600061450760408301856142b2565b90506001600160a01b03831660208301529392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614592577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526145808583516142b2565b94509285019290850190600101614546565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156145d6576000198160200360031b1b821691505b50919050565b82815260406020820152600061040e60408301846142b2565b60008351614607818460208801614286565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b6000825161463e818460208701614286565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b6000600019820361467157614671614648565b5060010190565b600060ff821660ff84168060ff0382111561469557614695614648565b019392505050565b600081518084526020808501945080840160005b838110156146cd578151875295820195908201906001016146b1565b509495945050505050565b82815260406020820152600061040e604083018461469d565b83815260606020820152600061470a606083018561469d565b905060ff83166040830152949350505050565b60006020828403121561472f57600080fd5b815167ffffffffffffffff81111561474657600080fd5b8201601f8101841361475757600080fd5b805161476561400282613fcc565b81815285602083850101111561477a57600080fd5b611794826020830160208601614286565b8481526080602082015260006147a4608083018661469d565b60ff851660408401528281036060840152612e7581856142b2565b600082198211156147d2576147d2614648565b500190565b8381526060602082015260006147f0606083018561469d565b828103604084015261480281856142b2565b9695505050505050565b838152606060208201526000614825606083018561469d565b9050826040830152949350505050565b8381526000835161484d816020850160208801614286565b80830190508351614865816020840160208801614286565b0160200195945050505050565b60008282101561488457614884614648565b500390565b838152826020820152606060408201526000611794606083018461469d565b600060ff821660ff81036148be576148be614648565b60010192915050565b600061ffff8083168185168083038211156143d7576143d7614648565b600060ff821660ff8416808210156148fe576148fe614648565b90039392505050565b600081600019048311821515161561492157614921614648565b500290565b600063ffffffff8083168185168083038211156143d7576143d7614648565b838152826020820152608060408201526000614964608083018461469d565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b634e487b7160e01b600052601260045260246000fd5b8481528360208201526080604082015260006149da608083018561469d565b905060ff8316606083015295945050505050565b606081526000614a0160608301866142b2565b60208301949094525060400152919050565b600082614a2257614a226149a5565b500690565b600082614a3657614a366149a5565b50049056fea264697066735822122010ceeb8b5f9de83bf940078c2717e60ca5d870f9600190b03cdcd9e6cbb455a164736f6c634300080d0033";
|
|
151
|
+
"0x60a0604052604051620000129062000050565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b506200005e565b614a918062003a1a83390190565b6080516139996200008160003960008181610165015261049a01526139996000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313861fb51461003b57806317d7de7c14610050575b600080fd5b61004e610049366004613372565b610083565b005b604080517f636f72652e6d0000000000000000000000000000000000000000000000000000815290519081900360200190f35b61008b61009e565b610093610128565b61009b610236565b50565b6100a66105ae565b6100ae610615565b6100b6610678565b6100be6106c4565b6100c6610722565b6100da60006100d361076e565b60016107a0565b6100e2610896565b6100ea6108f4565b6100f2610940565b6100fa61099e565b6101026109ea565b61010a610a48565b610112610a94565b61011a610aea565b61012660006001610b36565b565b61009b61013361076e565b604051600060248201527f636f72652e73000000000000000000000000000000000000000000000000000060448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8116606483015260016084830152907f4c9e9f11000000000000000000000000000000000000000000000000000000009060a4015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260016000610c1b565b604080516101e0810182527fa886545e0000000000000000000000000000000000000000000000000000000081527f31b99d890000000000000000000000000000000000000000000000000000000060208201527f096fcaa900000000000000000000000000000000000000000000000000000000918101919091527f7a58dce40000000000000000000000000000000000000000000000000000000060608201527f8ae710e90000000000000000000000000000000000000000000000000000000060808201527f3ca90f220000000000000000000000000000000000000000000000000000000060a08201527f4c9e9f110000000000000000000000000000000000000000000000000000000060c08201527fca4c1f5e0000000000000000000000000000000000000000000000000000000060e08201527f56f55a97000000000000000000000000000000000000000000000000000000006101008201527fd5933686000000000000000000000000000000000000000000000000000000006101208201527ffe86a89f000000000000000000000000000000000000000000000000000000006101408201527f6e81fd71000000000000000000000000000000000000000000000000000000006101608201527f8da798da000000000000000000000000000000000000000000000000000000006101808201527ff227e653000000000000000000000000000000000000000000000000000000006101a08201527f1e42269e000000000000000000000000000000000000000000000000000000006101c082015260005b600f8110156105aa5761059761049861076e565b7f00000000000000000000000000000000000000000000000000000000000000007f56f55a970000000000000000000000000000000000000000000000000000000060007f636f72652e7300000000000000000000000000000000000000000000000000008787600f811061050f5761050f6133f2565b60200201518888600f8110610526576105266133f2565b60200201516040517fffffffffffffffffffffffffffffffff0000000000000000000000000000000094851660248201529390921660448401527fffffffff00000000000000000000000000000000000000000000000000000000908116606484015216608482015260a4016101ce565b50806105a28161341e565b915050610484565b5050565b6000806105b9610d45565b60408051600060208201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201529294509092506105aa91015b60405160208183030381529060405261060e90613438565b8383610e0d565b60408051600060208201527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030820152610126910160405160208183030381529060405261066390613438565b61066b610e9c565b610673610f14565b610f93565b600080610683610ff6565b60408051600060208201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201529294509092506105aa91016105f6565b60408051600060208201527f5265736f757263654163636573730000000000000000000000000000000000006030820152610126910160405160208183030381529060405261071290613438565b61071a6110be565b6106736110f8565b60008061072d611177565b60408051600060208201527f5265736f7572636541636365737300000000000000000000000000000000000060308201529294509092506105aa91016105f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c8061079d5750335b90565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106107d5576107d56133f2565b6020026020010181815250508260601b6bffffffffffffffffffffffff191681600181518110610807576108076133f2565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526108909061086190613438565b8260008560405160200161087c91151560f81b815260010190565b60405160208183030381529060405261123f565b50505050565b60408051600060208201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261012691016040516020818303038152906040526108e490613438565b6108ec6112d7565b610673611356565b6000806108ff611390565b60408051600060208201527f53797374656d730000000000000000000000000000000000000000000000000060308201529294509092506105aa91016105f6565b60408051600060208201527f66756e6353656c6563746f7273000000000000000000000000000000000000006030820152610126910160405160208183030381529060405261098e90613438565b6109966114ab565b610673611570565b6000806109a96115aa565b60408051600060208201527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201529294509092506105aa91016105f6565b60408051600060208201527f53797374656d526567697374727900000000000000000000000000000000000060308201526101269101604051602081830303815290604052610a3890613438565b610a40611356565b610673610e9c565b600080610a5361171b565b60408051600060208201527f53797374656d526567697374727900000000000000000000000000000000000060308201529294509092506105aa91016105f6565b60408051600060208201527f5265736f7572636554797065000000000000000000000000000000000000000060308201526101269101604051602081830303815290604052610ae290613438565b6108ec6117e3565b600080610af561181d565b60408051600060208201527f5265736f7572636554797065000000000000000000000000000000000000000060308201529294509092506105aa91016105f6565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610b6c57610b6c6133f2565b602090810291909101810191909152604080516000818401527f5265736f7572636554797065000000000000000000000000000000000000000060308201528151808203909301835281019052610c1690610bc690613438565b826000856003811115610bdb57610bdb61345f565b60405160200161087c919060f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b505050565b606060008487604051602001610c329291906134a1565b604051602081830303815290604052905060008085610cb9578773ffffffffffffffffffffffffffffffffffffffff168584604051610c7191906134eb565b60006040518083038185875af1925050503d8060008114610cae576040519150601f19603f3d011682016040523d82523d6000602084013e610cb3565b606091505b50610d20565b8773ffffffffffffffffffffffffffffffffffffffff1683604051610cde91906134eb565b600060405180830381855af49150503d8060008114610d19576040519150601f19603f3d011682016040523d82523d6000602084013e610d1e565b606091505b505b915091508115610d34579250610d3c915050565b805160208201fd5b95945050505050565b6040805160018082528183019092526060918291600091816020015b6060815260200190600190039081610d615790505090506040518060400160405280600581526020017f6f776e657200000000000000000000000000000000000000000000000000000081525081600081518110610dc157610dc16133f2565b6020026020010181905250806040518060400160405280600e81526020017f4e616d6573706163654f776e65720000000000000000000000000000000000008152509092509250509091565b610e156118e5565b15610e2557610c16838383611963565b6040517ffe86a89f000000000000000000000000000000000000000000000000000000008152339063fe86a89f90610e6590869086908690600401613588565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110610ed657610ed66133f2565b602002602001019060c5811115610eef57610eef61345f565b908160c5811115610f0257610f0261345f565b905250610f0e81611a06565b91505090565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110610f4e57610f4e6133f2565b602002602001019060c5811115610f6757610f6761345f565b908160c5811115610f7a57610f7a61345f565b81525050605f81600181518110610ed657610ed66133f2565b610f9b6118e5565b15610fab57610c16838383611c60565b6040517fd5933686000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260448101829052339063d593368690606401610e65565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816110125790505090506040518060400160405280600d81526020017f6d6f64756c65416464726573730000000000000000000000000000000000000081525081600081518110611072576110726133f2565b6020026020010181905250806040518060400160405280601081526020017f496e7374616c6c65644d6f64756c6573000000000000000000000000000000008152509092509250509091565b60408051600180825281830190925260009182919060208083019080368337019050509050606081600081518110610ed657610ed66133f2565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611132576111326133f2565b602002602001019060c581111561114b5761114b61345f565b908160c581111561115e5761115e61345f565b81525050606181600181518110610ed657610ed66133f2565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816111935790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106111f3576111f36133f2565b6020026020010181905250806040518060400160405280600e81526020017f5265736f757263654163636573730000000000000000000000000000000000008152509092509250509091565b6112476118e5565b1561125d5761125884848484611ccd565b610890565b6040517f114a7266000000000000000000000000000000000000000000000000000000008152339063114a72669061129f9087908790879087906004016135f8565b600060405180830381600087803b1580156112b957600080fd5b505af11580156112cd573d6000803e3d6000fd5b5050505050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611311576113116133f2565b602002602001019060c581111561132a5761132a61345f565b908160c581111561133d5761133d61345f565b81525050606081600181518110610ed657610ed66133f2565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110610ed657610ed66133f2565b60408051600280825260608281019093528291600091816020015b60608152602001906001900390816113ab5790505090506040518060400160405280600681526020017f73797374656d00000000000000000000000000000000000000000000000000008152508160008151811061140b5761140b6133f2565b60200260200101819052506040518060400160405280600c81526020017f7075626c696341636365737300000000000000000000000000000000000000008152508160018151811061145f5761145f6133f2565b6020026020010181905250806040518060400160405280600781526020017f53797374656d73000000000000000000000000000000000000000000000000008152509092509250509091565b6040805160038082526080820190925260009182919060208201606080368337019050509050604f816000815181106114e6576114e66133f2565b602002602001019060c58111156114ff576114ff61345f565b908160c58111156115125761151261345f565b81525050604f8160018151811061152b5761152b6133f2565b602002602001019060c58111156115445761154461345f565b908160c58111156115575761155761345f565b81525050604381600281518110610ed657610ed66133f2565b60408051600180825281830190925260009182919060208083019080368337019050509050604381600081518110610ed657610ed66133f2565b604080516003808252608082019092526060918291600091816020015b60608152602001906001900390816115c75790505090506040518060400160405280600981526020017f6e616d657370616365000000000000000000000000000000000000000000000081525081600081518110611627576116276133f2565b60200260200101819052506040518060400160405280600481526020017f6e616d65000000000000000000000000000000000000000000000000000000008152508160018151811061167b5761167b6133f2565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816002815181106116cf576116cf6133f2565b6020026020010181905250806040518060400160405280601181526020017f46756e6374696f6e53656c6563746f72730000000000000000000000000000008152509092509250509091565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816117375790505090506040518060400160405280601081526020017f7265736f7572636553656c6563746f720000000000000000000000000000000081525081600081518110611797576117976133f2565b6020026020010181905250806040518060400160405280600e81526020017f53797374656d52656769737472790000000000000000000000000000000000008152509092509250509091565b60408051600180825281830190925260009182919060208083019080368337019050509050600081600081518110610ed657610ed66133f2565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816118395790505090506040518060400160405280600c81526020017f7265736f7572636554797065000000000000000000000000000000000000000081525081600081518110611899576118996133f2565b6020026020010181905250806040518060400160405280600c81526020017f5265736f757263655479706500000000000000000000000000000000000000008152509092509250509091565b6000303b8082036118f857600191505090565b3073ffffffffffffffffffffffffffffffffffffffff1663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b15801561193e57600080fd5b505afa92505050801561194f575060015b61195b57600091505090565b600191505090565b600061196e84611eb8565b905081516000148061198b575061198481611f0d565b60ff168251145b6119dc5761199881611f0d565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044015b60405180910390fd5b6108908484846040516020016119f2919061362c565b604051602081830303815290604052611f31565b6000601c82511115611a30578151604051635318beb960e01b81526004016119d391815260200190565b60008060008060005b8651811015611b5c576000611a77888381518110611a5957611a596133f2565b602002602001015160c5811115611a7257611a7261345f565b611fe9565b905061ffff811615611acd578215611abb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83611ac58161363f565b945050611ad2565b600192505b611adc818661365e565b9450611b5186611aed846004613684565b8a8581518110611aff57611aff6133f2565b602002602001015160c5811115611b1857611b1861345f565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101611a39565b506000828751611b6c919061369c565b9050600e8160ff161115611b9857604051635318beb960e01b815260ff821660048201526024016119d3565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b611c6b8260006120a1565b611c768160016120a1565b611c7f83612272565b15611cc25782611c8e8461228b565b6040517f147bbb8c0000000000000000000000000000000000000000000000000000000081526004016119d39291906136bf565b610c168383836122b6565b6000611cd885611eb8565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4685858585604051611d0f94939291906135f8565b60405180910390a16000611d228661242d565b905060005b8151811015611dd3576000828281518110611d4457611d446133f2565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663469b7ee2898989896040518563ffffffff1660e01b8152600401611d8d94939291906135f8565b600060405180830381600087803b158015611da757600080fd5b505af1158015611dbb573d6000803e3d6000fd5b50505050508080611dcb9061341e565b915050611d27565b50611ddd826124f5565b60ff168460ff161015611dfc57611df78686848787612506565b611e09565b611e0986868487876125ac565b60005b8151811015610e93576000828281518110611e2957611e296133f2565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16636b3d7d5f898989896040518563ffffffff1660e01b8152600401611e7294939291906135f8565b600060405180830381600087803b158015611e8c57600080fd5b505af1158015611ea0573d6000803e3d6000fd5b50505050508080611eb09061341e565b915050611e0c565b6000611ec3826125e9565b905080611f085781611ed48361228b565b6040517fd623a70d0000000000000000000000000000000000000000000000000000000081526004016119d39291906136bf565b919050565b6000611f1882612685565b611f21836124f5565b611f2b91906136d8565b92915050565b6000611f3d8383612691565b60408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110611f7757611f776133f2565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f53746f72654d657461646174610000000000000000000000000000000000000060308201528151808203909301835281019052611fe290611fdb90613438565b8284612747565b5050505050565b6000808260c5811115611ffe57611ffe61345f565b60ff169050602081101561201e57612017816001613684565b9392505050565b604081101561203e576020612034826001613684565b61201791906136fd565b6060811015612054576040612034826001613684565b60608360c58111156120685761206861345f565b036120765750600192915050565b60618360c581111561208a5761208a61345f565b036120985750601492915050565b50600092915050565b801580156120ad575081155b156120ce57604051635318beb960e01b8152600060048201526024016119d3565b60006120d983612685565b60ff169050600e81111561210357604051635318beb960e01b8152600481018290526024016119d3565b600061210e846124f5565b60ff169050601c61211f8383613684565b111561214b5761212f8282613684565b604051635318beb960e01b81526004016119d391815260200190565b60008060005b61215b8585613684565b811015612223576000612182612171898461279f565b60c5811115611a7257611a7261345f565b11156121d3578381106121c1576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826121cb8161341e565b93505061221b565b8381101561220d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816122178161341e565b9250505b600101612151565b5082821461224757604051635318beb960e01b8152600481018390526024016119d3565b83811461226a57604051635318beb960e01b8152600481018290526024016119d3565b505050505050565b6000612284612280836125e9565b1590565b1592915050565b6060816040516020016122a091815260200190565b6040516020818303038152906040529050919050565b6040805160018082528183019092526000916020808301908036833701905050905083816000815181106122ec576122ec6133f2565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d610000000000000000000000000000000000000000000000000000603083015260009161235f91015b60405160208183030381529060405261235990613438565b836127cb565b8481559050612377612372826020613684565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee3291016040516020818303038152906040526123ed90613438565b83868660408051602081019390935282015260600160408051601f198184030181529082905261241e939291613714565b60405180910390a15050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612467576124676133f2565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b73000000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906124d6906124ce90613438565b836000612821565b90506124ed6124e882600084516128c7565b612957565b949350505050565b6000601082901b5b60f81c92915050565b60006125158460ff851661279f565b9050815161252e8260c5811115611a7257611a7261345f565b14612585576125488160c5811115611a7257611a7261345f565b82516040517f521b3d33000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016119d3565b600061259187876127cb565b9050600061259f8686612968565b90506112cd8282866129ab565b60006125b7846124f5565b6125c1908461369c565b90506125d086868385516129c0565b60006125dd8787846129f2565b9050610e938184612a4b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110612622576126226133f2565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d610000000000000000000000000000000000000000000000000000603083015260009161267b9101612341565b90506124ed815490565b6000601882901b6124fd565b604080516002808252606080830184529260009291906020830190803683370190505090508351816000815181106126cb576126cb6133f2565b602002602001019061ffff16908161ffff16815250508251816001815181106126f6576126f66133f2565b602002602001019061ffff16908161ffff1681525050600061271782612a57565b905080858560405160200161272e9392919061373f565b6040516020818303038152906040529250505092915050565b61274f6118e5565b1561275f57610c16838383612b34565b6040517f8ed41f2f0000000000000000000000000000000000000000000000000000000081523390638ed41f2f90610e6590869086908690600401613714565b60006127b7836127b0846004613684565b6008021b90565b60f81c60c58111156120175761201761345f565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016128029392919061377c565b60408051601f1981840301815291905280516020909101209392505050565b606061282b6118e5565b156128425761283b848484612d96565b9050612017565b6040517fd03edb8c000000000000000000000000000000000000000000000000000000008152339063d03edb8c906128829087908790879060040161379b565b600060405180830381865afa15801561289f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261283b91908101906137c7565b60008183111580156128da575083518211155b612916578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016119d393929190613835565b602084016129248482613684565b9050600061293285856136fd565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006120178360146000612db1565b600080805b8360ff168110156129a357612985612171868361279f565b61298f9083613684565b91508061299b8161341e565b91505061296d565b509392505050565b60006020820190506108908484838551612ef4565b60006129cc8585612fb2565b905060006129d8825490565b90506129e88160ff861685612fe9565b808355905061226a565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9848484604051602001612a2b949392919061385a565b60408051601f198184030181529190528051602090910120949350505050565b6105aa826000836129ab565b6000806000805b8451811015612b0957612ad483612a7683600261388d565b612a81906004613684565b878481518110612a9357612a936133f2565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b9250848181518110612ae857612ae86133f2565b602002602001015161ffff1682612aff91906138ac565b9150600101612a5e565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b176124ed565b6000612b3f84611eb8565b90506000612b4d8260f01c90565b905080600080612b5c85612685565b60ff161115612b8a57506020848301015160e081901c612b7d906020613684565b612b879083613684565b91505b84518214612bd15784516040517f521b3d330000000000000000000000000000000000000000000000000000000081526119d3918491600401918252602082015260400190565b7f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32878787604051612c0493929190613714565b60405180910390a16000612c178861242d565b905060005b8151811015612cc6576000828281518110612c3957612c396133f2565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166382b6745f8b8b8b6040518463ffffffff1660e01b8152600401612c8093929190613714565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b50505050508080612cbe9061341e565b915050612c1c565b506000612cd389896127cb565b905060208701612ce68260008389612ef4565b612cf1866020613684565b612cfb9082613684565b9050612d0687612685565b60ff16600003612d1c5750505050505050505050565b6000612d288b8b612fb2565b858155905060008060005b612d3c8b612685565b60ff168160ff161015612d8657612d548e8e836129f2565b9250612d638860ff83166130c5565b9150612d728360008785612ef4565b612d7c8286613684565b9450600101612d33565b5050505050505050505050505050565b60606000612da385611eb8565b9050610d3c858585846130f7565b60606000612dbf8560801c90565b90506fffffffffffffffffffffffffffffffff8516600084612df757612de686600861388d565b612df2906101006136fd565b612dfa565b60005b90506000868381612e0d57612e0d6138cb565b049050612e1a87846138e1565b15612ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a6500000060648201526084016119d3565b602080820201604051955080860160405250808552600060208601855b83831015612ee6578051851c8252600192909201916020909101908901612ec4565b505050505050509392505050565b602083048401935060208381612f0c57612f0c6138cb565b0692508215612f655760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311612f50575050610890565b612f5b600187613684565b9550509182019190035b60208110612f8e5781518455612f7c600185613684565b935060209190910190601f1901612f65565b8015610890576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9838360405160200161280293929190613903565b60008381612ff78260e01c90565b90506000613008878760ff166130c5565b905080851061302c5761301b81866136fd565b6130259083613684565b9150613043565b61303685826136fd565b61304090836136fd565b91505b600061305087600261388d565b61305b906004613684565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c175b98975050505050505050565b6000806130d383600261388d565b6130de906004613684565b90506130ec84826008021b90565b60f01c949350505050565b6060613102826124f5565b60ff168360ff1610156131225761311b8585858561312e565b90506124ed565b61311b8585858561318e565b6060600061313f8360ff861661279f565b905060006131588260c5811115611a7257611a7261345f565b9050600061316688886127cb565b905060006131748688612968565b90506131818284836131db565b9998505050505050505050565b6060600061319b836124f5565b6131a5908561369c565b905060006131b48787846129f2565b905060006131cf8360ff166131c98a8a613233565b906130c5565b90506130b98282613240565b60608267ffffffffffffffff8111156131f6576131f6613303565b6040519080825280601f01601f191660200182016040528015613220576020820181803683370190505b509050602081016129a38585858461324e565b60008061267b8484612fb2565b6060612017838360006131db565b602082048401935060208281613266576132666138cb565b06915081156132b75760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116132a2575050610890565b6132ad600187613684565b9550509283900392015b602083106132df57835481526132ce600185613684565b9350601f19909201916020016132b7565b8215610890576000600019600885021c198251865482169119161782525050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561334257613342613303565b604052919050565b600067ffffffffffffffff82111561336457613364613303565b50601f01601f191660200190565b60006020828403121561338457600080fd5b813567ffffffffffffffff81111561339b57600080fd5b8201601f810184136133ac57600080fd5b80356133bf6133ba8261334a565b613319565b8181528560208385010111156133d457600080fd5b81602084016020830137600091810160200191909152949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361343157613431613408565b5060010190565b80516020808301519190811015613459576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052602160045260246000fd5b60005b83811015613490578181015183820152602001613478565b838111156108905750506000910152565b600083516134b3818460208801613475565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b600082516134fd818460208701613475565b9190910192915050565b6000815180845261351f816020860160208601613475565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b8581101561357b578284038952613569848351613507565b98850198935090840190600101613551565b5091979650505050505050565b8381526060602082015260006135a16060830185613507565b82810360408401526135b38185613533565b9695505050505050565b600081518084526020808501945080840160005b838110156135ed578151875295820195908201906001016135d1565b509495945050505050565b84815260806020820152600061361160808301866135bd565b60ff851660408401528281036060840152611c558185613507565b6020815260006120176020830184613533565b600060ff821660ff810361365557613655613408565b60010192915050565b600061ffff80831681851680830382111561367b5761367b613408565b01949350505050565b6000821982111561369757613697613408565b500190565b600060ff821660ff8416808210156136b6576136b6613408565b90039392505050565b8281526040602082015260006124ed6040830184613507565b600060ff821660ff84168060ff038211156136f5576136f5613408565b019392505050565b60008282101561370f5761370f613408565b500390565b83815260606020820152600061372d60608301856135bd565b82810360408401526135b38185613507565b83815260008351613757816020850160208801613475565b8083019050835161376f816020840160208801613475565b0160200195945050505050565b838152826020820152606060408201526000610d3c60608301846135bd565b8381526060602082015260006137b460608301856135bd565b905060ff83166040830152949350505050565b6000602082840312156137d957600080fd5b815167ffffffffffffffff8111156137f057600080fd5b8201601f8101841361380157600080fd5b805161380f6133ba8261334a565b81815285602083850101111561382457600080fd5b610d3c826020830160208601613475565b6060815260006138486060830186613507565b60208301949094525060400152919050565b84815283602082015260806040820152600061387960808301856135bd565b905060ff8316606083015295945050505050565b60008160001904831182151516156138a7576138a7613408565b500290565b600063ffffffff80831681851680830382111561367b5761367b613408565b634e487b7160e01b600052601260045260246000fd5b6000826138fe57634e487b7160e01b600052601260045260246000fd5b500690565b83815282602082015260806040820152600061392260808301846135bd565b8281036060840152600681527f6c656e677468000000000000000000000000000000000000000000000000000060208201526040810191505094935050505056fea2646970667358221220c82ab3a39f0d8f00c3fbf56a3b1ece823cd2cbecd8d1e12278e6e2bdba17d7db64736f6c634300080d0033608060405234801561001057600080fd5b50614a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637a58dce411610097578063ca4c1f5e11610066578063ca4c1f5e14610211578063d593368614610224578063f227e65314610237578063fe86a89f1461024a57600080fd5b80637a58dce4146101c55780638ae710e9146101d85780638da798da146101eb578063a886545e146101fe57600080fd5b80633ca90f22116100d35780633ca90f22146101485780634c9e9f111461015b57806356f55a971461016e5780636e81fd71146101b257600080fd5b8063096fcaa9146100fa5780631e42269e1461010f57806331b99d8914610122575b600080fd5b61010d610108366004613d31565b61025d565b005b61010d61011d366004613ddb565b6102c8565b610135610130366004613e26565b6102e9565b6040519081526020015b60405180910390f35b61010d610156366004613ddb565b505050565b610135610169366004613e6c565b610416565b61018161017c366004613efd565b610537565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161013f565b61010d6101c0366004613f55565b6105f2565b61010d6101d3366004613ddb565b6106de565b61010d6101e6366004613ddb565b610751565b61010d6101f9366004614032565b61076c565b61010d61020c366004614096565b61086f565b61018161021f3660046140d3565b6108dd565b61010d61023236600461415c565b610a28565b61010d610245366004613ddb565b610ab6565b61010d610258366004614188565b610ad3565b6000610271878761026c610b42565b610b74565b90506102bf8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ba9250879150889050614202565b610c02565b50505050505050565b60006102d7848461026c610b42565b90506102e38183610ca0565b50505050565b60006001600160801b03198516608085901c1790506001600160801b031984166103525761031681610d67565b6040517fe56728c000000000000000000000000000000000000000000000000000000000815260040161034991906142de565b60405180910390fd5b60006103676001600160801b03198716610e3b565b6003811115610378576103786142f1565b0361038b576103868561086f565b61039b565b61039985600061026c610b42565b505b60006103a682610e3b565b60038111156103b7576103b76142f1565b146103f8576103c581610d67565b6040517f0f2fac6100000000000000000000000000000000000000000000000000000000815260040161034991906142de565b610403816002610ef7565b61040e818484610feb565b949350505050565b60006001600160801b03198516608085901c1790506001600160801b031984166104435761031681610d67565b61044c83611058565b1561048e576040517fb86487840000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610349565b60006104a36001600160801b03198716610e3b565b60038111156104b4576104b46142f1565b036104c7576104c28561086f565b6104d7565b6104d585600061026c610b42565b505b60006104e282610e3b565b60038111156104f3576104f36142f1565b14610501576103c581610d67565b61050c816003610ef7565b6105178184846110fb565b61052183826111d3565b61040e6001600160801b0319861684600161128b565b6000610546818061026c610b42565b50600061055284611367565b9050600061055f8561140a565b90506001600160801b0319821615801561058157506001600160801b03198116155b6105db576040517f9b2a16a90000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000086166004820152602401610349565b6105e7858888876114c8565b509295945050505050565b600061060d6f636f72652e73000000000000000000006115c8565b5090506102e361061b610b42565b827f8ae710e900000000000000000000000000000000000000000000000000000000866106488860801b90565b6040516001600160801b03199283166024820152911660448201526001600160a01b03871660648201526084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001600061168d565b60006106f96001600160801b03198516608085901c17610e3b565b9050600281600381111561070f5761070f6142f1565b0361071f576102e3848484610751565b6003816003811115610733576107336142f1565b146102e3576103166001600160801b03198516608085901c17610d67565b6000610760848461026c610b42565b90506102e3818361179d565b6107f8610777610b42565b836313861fb560e01b8460405160240161079191906142de565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260008061168d565b5061086b826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e9190614307565b82516020840120846117a7565b5050565b6001600160801b03198116600061088582610e3b565b6003811115610896576108966142f1565b146108a4576103c581610d67565b6108b96001600160801b031983166001610ef7565b6108ca826108c5610b42565b61186b565b61086b816108d6610b42565b600161128b565b60006108ec858561026c610b42565b5060006108f886611937565b9050600061090586611937565b90508181868660405160200161091e9493929190614324565b604051602081830303815290604052805190602001209250600061094184611367565b9050600061094e8561140a565b90506001600160801b0319821615158061097157506001600160801b0319811615155b156109cc576040517f9b2a16a90000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000086166004820152602401610349565b600087876040516020016109e19291906143b1565b604051602081830303815290604052905060008151600014610a095781516020830120610a0c565b60005b9050610a1a878c8c846114c8565b505050505050949350505050565b6000610a436f636f72652e73000000000000000000006115c8565b509050610aaf610a51610b42565b827f31b99d890000000000000000000000000000000000000000000000000000000087610a7e8960801b90565b6040516001600160801b0319928316602482015291166044820152606481018890526084810187905260a401610676565b5050505050565b6000610ac5848461026c610b42565b90506102e38183600161128b565b6000610aee6f636f72652e73000000000000000000006115c8565b5090506102bf610afc610b42565b827f096fcaa90000000000000000000000000000000000000000000000000000000089610b298b60801b90565b8a8a8a8a6040516024016106769695949392919061440b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c80610b715750335b90565b608082901c6001600160801b03198416176001600160a01b0382163014801590610bb85750816001600160a01b0316610bac856119b5565b6001600160a01b031614155b15610bfb57610bc681610d67565b826040517fe64c03480000000000000000000000000000000000000000000000000000000081526004016103499291906144f4565b9392505050565b6000610c0d84611a5b565b9050815160001480610c2a5750610c2381611ab0565b60ff168251145b610c7657610c3781611ab0565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff90921660048301526024820152604401610349565b6102e3848484604051602001610c8c919061451f565b604051602081830303815290604052611ad4565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610cd557610cd561459f565b6020026020010181815250508160601b6bffffffffffffffffffffffff191681600181518110610d0757610d0761459f565b602090810291909101810191909152604080516000818401527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261015690610d61906145b5565b82611b70565b606081608081901b6001600160801b0319821615610d855781610da7565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b6001600160801b0319821615610dbd5781610ddf565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040516001600160801b031992831660208201527f2f0000000000000000000000000000000000000000000000000000000000000060308201529116603182015260410160405160208183030381529060405292505050919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610e7457610e7461459f565b6020908102919091018101919091526040805160009281018390527f5265736f757263655479706500000000000000000000000000000000000000006030820152610edb91015b604051602081830303815290604052610ed3906145b5565b836000611bf3565b602081015190915060f81c600381111561040e5761040e6142f1565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610f2d57610f2d61459f565b602090810291909101810191909152604080516000818401527f5265736f757263655479706500000000000000000000000000000000000000006030820152815180820390930183528101905261015690610f87906145b5565b826000856003811115610f9c57610f9c6142f1565b604051602001610fd7919060f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b604051602081830303815290604052611c99565b610ff6826000611d31565b611001816001611d31565b61100a83611eff565b1561104d578261101984611f18565b6040517f147bbb8c0000000000000000000000000000000000000000000000000000000081526004016103499291906145dc565b610156838383611f43565b604080516001808252818301909252600091829190602080830190803683370190505090508260601b6bffffffffffffffffffffffff1916816000815181106110a3576110a361459f565b6020908102919091018101919091526040805160009281018390527f53797374656d526567697374727900000000000000000000000000000000000060308201526110ee9101610ebb565b602081015190915061040e565b60408051606084901b6bffffffffffffffffffffffff191660208083019190915283151560f81b603483015282518083036015018152600160358401818152607585019095529093600093909260559091019080368337019050509050848160008151811061116c5761116c61459f565b602090810291909101810191909152604080516000928101929092527f53797374656d73000000000000000000000000000000000000000000000000006030830152610aaf91015b6040516020818303038152906040526111cc906145b5565b82846120ba565b604080516001808252818301909252600091602080830190803683370190505090508260601b6bffffffffffffffffffffffff19168160008151811061121b5761121b61459f565b602090810291909101810191909152604080516000818401527f53797374656d52656769737472790000000000000000000000000000000000006030820152815180820390930183528101905261015690611275906145b5565b82600085604051602001610fd791815260200190565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106112c0576112c061459f565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106112f2576112f261459f565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526102e39061134c906145b5565b82600085604051602001610fd791151560f81b815260010190565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106113bf576113bf61459f565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526110ee9101610ebb565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106114625761146261459f565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526110ee91016040516020818303038152906040526114c0906145b5565b836001611bf3565b604080516001600160801b031985811660208084019190915290851660308301527fffffffff0000000000000000000000000000000000000000000000000000000084168284015282516024818403018152600160448401818152608485019095529093600093909260649091019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115745761157461459f565b602090810291909101810191909152604080516000928101929092527f66756e6353656c6563746f72730000000000000000000000000000000000000060308301526115c091016111b4565b505050505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106116025761160261459f565b6020908102919091018101919091526040805160009281018390527f53797374656d7300000000000000000000000000000000000000000000000000603082015261166e9101604051602081830303815290604052611660906145b5565b83611669612140565b6121fd565b6020810151603482015191925060601c9060f81c935093505050915091565b6060600084876040516020016116a49291906145f5565b60405160208183030381529060405290506000808561171e57876001600160a01b031685846040516116d6919061462c565b60006040518083038185875af1925050503d8060008114611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b50611778565b876001600160a01b031683604051611736919061462c565b600060405180830381855af49150503d8060008114611771576040519150601f19603f3d011682016040523d82523d6000602084013e611776565b606091505b505b91509150811561178c579250611794915050565b805160208201fd5b95945050505050565b61086b8282612257565b60006117b282612329565b6040805160028082526060820183529293506000929091602083019080368337019050509050846fffffffffffffffffffffffffffffffff1916816000815181106117ff576117ff61459f565b602002602001018181525050838160018151811061181f5761181f61459f565b602090810291909101810191909152604080516000928101929092527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610aaf91016111b4565b60408051600180825281830190925260009160208083019080368337019050509050826fffffffffffffffffffffffffffffffff1916816000815181106118b4576118b461459f565b602090810291909101810191909152604080516000818401527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526101569061190e906145b5565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401610fd7565b606060005b601081101561198e576001600160801b03198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561198e57806119868161465e565b91505061193c565b604080516001600160801b031985166020820152815160309091019091528181528061040e565b60408051600180825281830190925260009182919060208083019080368337019050509050826fffffffffffffffffffffffffffffffff191681600081518110611a0157611a0161459f565b6020908102919091018101919091526040805160009281018390527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152611a4c9101610ebb565b6020015160601c949350505050565b6000611a668261234e565b905080611aab5781611a7783611f18565b6040517fd623a70d0000000000000000000000000000000000000000000000000000000081526004016103499291906145dc565b919050565b6000611abb826123ea565b611ac4836123fb565b611ace9190614678565b92915050565b6000611ae08383612407565b60408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110611b1a57611b1a61459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f53746f72654d65746164617461000000000000000000000000000000000000006030830152610aaf91016111b4565b611b786124bd565b15611b875761086b828261252e565b6040517f505a181d000000000000000000000000000000000000000000000000000000008152339063505a181d90611bc590859085906004016146d8565b600060405180830381600087803b158015611bdf57600080fd5b505af11580156115c0573d6000803e3d6000fd5b6060611bfd6124bd565b15611c1457611c0d8484846126b7565b9050610bfb565b6040517fd03edb8c000000000000000000000000000000000000000000000000000000008152339063d03edb8c90611c54908790879087906004016146f1565b600060405180830381865afa158015611c71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c0d919081019061471d565b611ca16124bd565b15611cb757611cb2848484846126d2565b6102e3565b6040517f114a7266000000000000000000000000000000000000000000000000000000008152339063114a726690611cf990879087908790879060040161478b565b600060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b5050505050505050565b80158015611d3d575081155b15611d5e57604051635318beb960e01b815260006004820152602401610349565b6000611d69836123ea565b60ff169050600e811115611d9357604051635318beb960e01b815260048101829052602401610349565b6000611d9e846123fb565b60ff169050601c611daf83836147bf565b1115611ddb57611dbf82826147bf565b604051635318beb960e01b815260040161034991815260200190565b60008060005b611deb85856147bf565b811015611eb8576000611e17611e0189846128a3565b60c5811115611e1257611e126142f1565b6128cf565b1115611e6857838110611e56576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82611e608161465e565b935050611eb0565b83811015611ea2576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81611eac8161465e565b9250505b600101611de1565b50828214611edc57604051635318beb960e01b815260048101839052602401610349565b8381146115c057604051635318beb960e01b815260048101829052602401610349565b6000611f11611f0d8361234e565b1590565b1592915050565b606081604051602001611f2d91815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508381600081518110611f7957611f7961459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d6100000000000000000000000000000000000000000000000000006030830152600091611fec91015b604051602081830303815290604052611fe6906145b5565b83612980565b8481559050612004611fff8260206147bf565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32910160405160208183030381529060405261207a906145b5565b83868660408051602081019390935282015260600160408051601f19818403018152908290526120ab9392916147d7565b60405180910390a15050505050565b6120c26124bd565b156120d2576101568383836129d6565b6040517f8ed41f2f0000000000000000000000000000000000000000000000000000000081523390638ed41f2f90612112908690869086906004016147d7565b600060405180830381600087803b15801561212c57600080fd5b505af11580156102bf573d6000803e3d6000fd5b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061217a5761217a61459f565b602002602001019060c5811115612193576121936142f1565b908160c58111156121a6576121a66142f1565b815250506060816001815181106121bf576121bf61459f565b602002602001019060c58111156121d8576121d86142f1565b908160c58111156121eb576121eb6142f1565b9052506121f781612c2b565b91505090565b60606122076124bd565b1561221757611c0d848484612e80565b6040517f419b58fd000000000000000000000000000000000000000000000000000000008152339063419b58fd90611c549087908790879060040161480c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061228d5761228d61459f565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b7300000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052610156906122f1906145b5565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401604051602081830303815290604052612fe5565b604051606082811b6bffffffffffffffffffffffff1916602083015290603401611f2d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106123875761238761459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d61000000000000000000000000000000000000000000000000000060308301526000916123e09101611fce565b905061040e815490565b6000601882901b5b60f81c92915050565b6000601082901b6123f2565b604080516002808252606080830184529260009291906020830190803683370190505090508351816000815181106124415761244161459f565b602002602001019061ffff16908161ffff168152505082518160018151811061246c5761246c61459f565b602002602001019061ffff16908161ffff1681525050600061248d82613040565b90508085856040516020016124a493929190614835565b6040516020818303038152906040529250505092915050565b6000303b8082036124d057600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b15801561250957600080fd5b505afa92505050801561251a575060015b61252657600091505090565b600191505090565b600061253983611a5b565b90507f2cc8610b80ef19409ae51ecbdd9c137960fb22ae9ef2d817d36ec1b685d68ecd838360405161256c9291906146d8565b60405180910390a1600061257f8461311d565b905060005b815181101561261f5760008282815181106125a1576125a161459f565b60200260200101519050806001600160a01b031663b51fef6c87876040518363ffffffff1660e01b81526004016125d99291906146d8565b600060405180830381600087803b1580156125f357600080fd5b505af1158015612607573d6000803e3d6000fd5b505050505080806126179061465e565b915050612584565b50600061262c8585612980565b905061268681600061263e8660f01c90565b67ffffffffffffffff81111561265657612656613f85565b6040519080825280601f01601f191660200182016040528015612680576020820181803683370190505b506131c7565b61268f836123ea565b60ff166000036126a0575050505050565b60006126ac86866131dc565b6000815590506115c0565b606060006126c485611a5b565b905061179485858584613213565b60006126dd85611a5b565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4685858585604051612714949392919061478b565b60405180910390a160006127278661311d565b905060005b81518110156127cb5760008282815181106127495761274961459f565b60200260200101519050806001600160a01b031663469b7ee2898989896040518563ffffffff1660e01b8152600401612785949392919061478b565b600060405180830381600087803b15801561279f57600080fd5b505af11580156127b3573d6000803e3d6000fd5b505050505080806127c39061465e565b91505061272c565b506127d5826123fb565b60ff168460ff1610156127f4576127ef868684878761324a565b612801565b61280186868487876132f0565b60005b81518110156102bf5760008282815181106128215761282161459f565b60200260200101519050806001600160a01b0316636b3d7d5f898989896040518563ffffffff1660e01b815260040161285d949392919061478b565b600060405180830381600087803b15801561287757600080fd5b505af115801561288b573d6000803e3d6000fd5b5050505050808061289b9061465e565b915050612804565b60006128bb836128b48460046147bf565b6008021b90565b60f81c60c5811115610bfb57610bfb6142f1565b6000808260c58111156128e4576128e46142f1565b60ff16905060208110156128fd57610bfb8160016147bf565b604081101561291d5760206129138260016147bf565b610bfb9190614872565b60608110156129335760406129138260016147bf565b60608360c5811115612947576129476142f1565b036129555750600192915050565b60618360c5811115612969576129696142f1565b036129775750601492915050565b50600092915050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016129b793929190614889565b60408051601f1981840301815291905280516020909101209392505050565b60006129e184611a5b565b905060006129ef8260f01c90565b9050806000806129fe856123ea565b60ff161115612a2c57506020848301015160e081901c612a1f9060206147bf565b612a2990836147bf565b91505b84518214612a735784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610349918491600401918252602082015260400190565b7f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32878787604051612aa6939291906147d7565b60405180910390a16000612ab98861311d565b905060005b8151811015612b5b576000828281518110612adb57612adb61459f565b60200260200101519050806001600160a01b03166382b6745f8b8b8b6040518463ffffffff1660e01b8152600401612b15939291906147d7565b600060405180830381600087803b158015612b2f57600080fd5b505af1158015612b43573d6000803e3d6000fd5b50505050508080612b539061465e565b915050612abe565b506000612b688989612980565b905060208701612b7b826000838961332d565b612b868660206147bf565b612b9090826147bf565b9050612b9b876123ea565b60ff16600003612bb15750505050505050505050565b6000612bbd8b8b6131dc565b858155905060008060005b612bd18b6123ea565b60ff168160ff161015612c1b57612be98e8e836133eb565b9250612bf88860ff8316613444565b9150612c07836000878561332d565b612c1182866147bf565b9450600101612bc8565b5050505050505050505050505050565b6000601c82511115612c55578151604051635318beb960e01b815260040161034991815260200190565b60008060008060005b8651811015612d7c576000612c97888381518110612c7e57612c7e61459f565b602002602001015160c5811115611e1257611e126142f1565b905061ffff811615612ced578215612cdb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83612ce5816148a8565b945050612cf2565b600192505b612cfc81866148c7565b9450612d7186612d0d8460046147bf565b8a8581518110612d1f57612d1f61459f565b602002602001015160c5811115612d3857612d386142f1565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101612c5e565b506000828751612d8c91906148e4565b9050600e8160ff161115612db857604051635318beb960e01b815260ff82166004820152602401610349565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b60606000612e8e8360f01c90565b905080600080612e9d866123ea565b60ff1690508015612ee857612eb28888613476565b91506000612ec08360e01c90565b1115612ee857612ed08260e01c90565b612edb9060206147bf565b612ee590846147bf565b92505b60008367ffffffffffffffff811115612f0357612f03613f85565b6040519080825280601f01601f191660200182016040528015612f2d576020820181803683370190505b50905060208101612f408a8a8884613483565b612f4a8460e01c90565b600003612f5e57509450610bfb9350505050565b612f6886826147bf565b8481529050612f786020826147bf565b905060005b838160ff161015612fd6576000612f958c8c846133eb565b90506000612fa68760ff8516613444565b9050612fb582826000876134a0565b612fbf81856147bf565b935050508080612fce906148a8565b915050612f7d565b50909998505050505050505050565b612fed6124bd565b15612ffe57611cb284848484613555565b6040517f0c1a60000000000000000000000000000000000000000000000000000000000081523390630c1a600090611cf990879087908790879060040161478b565b6000806000805b84518110156130f2576130bd8361305f836002614907565b61306a9060046147bf565b87848151811061307c5761307c61459f565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b92508481815181106130d1576130d161459f565b602002602001015161ffff16826130e89190614926565b9150600101613047565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b1761040e565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106131575761315761459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f486f6f6b7300000000000000000000000000000000000000000000000000000060308301526000916131b09101610ebb565b905061040e6131c28260008451613777565b613807565b60006020820190506102e3848483855161332d565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016129b793929190614945565b606061321e826123fb565b60ff168360ff16101561323e5761323785858585613818565b905061040e565b61323785858585613878565b60006132598460ff85166128a3565b905081516132728260c5811115611e1257611e126142f1565b146132c95761328c8160c5811115611e1257611e126142f1565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610349565b60006132d58787612980565b905060006132e386866138d1565b9050611d278282866131c7565b60006132fb846123fb565b61330590846148e4565b90506133148686838551613914565b60006133218787846133eb565b90506102bf8184613946565b602083048401935060208381613345576133456149a5565b069250821561339e5760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116133895750506102e3565b6133946001876147bf565b9550509182019190035b602081106133c757815184556133b56001856147bf565b935060209190910190601f190161339e565b80156102e3576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d984848460405160200161342494939291906149bb565b60408051601f198184030181529190528051602090910120949350505050565b600080613452836002614907565b61345d9060046147bf565b905061346b84826008021b90565b60f01c949350505050565b6000806123e084846131dc565b81156102e35760006134958585612980565b9050610aaf81846000855b6020820484019350602082816134b8576134b86149a5565b06915081156135095760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116134f45750506102e3565b6134ff6001876147bf565b9550509283900392015b6020831061353157835481526135206001856147bf565b9350601f1990920191602001613509565b82156102e3576000600019600885021c198251865482169119161782525050505050565b600061356085611a5b565b905061356b816123fb565b60ff168360ff1610156135aa576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006135b886868685613878565b836040516020016135ca9291906143b1565b60405160208183030381529060405290507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4686868684604051613610949392919061478b565b60405180910390a160006136238761311d565b905060005b81518110156136c75760008282815181106136455761364561459f565b60200260200101519050806001600160a01b031663469b7ee28a8a8a886040518563ffffffff1660e01b8152600401613681949392919061478b565b600060405180830381600087803b15801561369b57600080fd5b505af11580156136af573d6000803e3d6000fd5b505050505080806136bf9061465e565b915050613628565b506136d58787858888613952565b60005b8151811015611d275760008282815181106136f5576136f561459f565b60200260200101519050806001600160a01b0316636b3d7d5f8a8a8a886040518563ffffffff1660e01b8152600401613731949392919061478b565b600060405180830381600087803b15801561374b57600080fd5b505af115801561375f573d6000803e3d6000fd5b5050505050808061376f9061465e565b9150506136d8565b600081831115801561378a575083518211155b6137c6578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610349939291906149ee565b602084016137d484826147bf565b905060006137e28585614872565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610bfb83601460006139cd565b606060006138298360ff86166128a3565b905060006138428260c5811115611e1257611e126142f1565b905060006138508888612980565b9050600061385e86886138d1565b905061386b828483613b10565b9998505050505050505050565b60606000613885836123fb565b61388f90856148e4565b9050600061389e8787846133eb565b905060006138b98360ff166138b38a8a613476565b90613444565b90506138c58282613b68565b98975050505050505050565b600080805b8360ff1681101561390c576138ee611e0186836128a3565b6138f890836147bf565b9150806139048161465e565b9150506138d6565b509392505050565b600061392085856131dc565b9050600061392c825490565b905061393c8160ff861685613b76565b80835590506115c0565b61086b826000836131c7565b600061395d846123fb565b61396790846148e4565b9050600061397587876131dc565b90506000613981825490565b905060006139928260ff8616613444565b90506139b08460ff168651836139a891906147bf565b849190613b76565b80845591506139c28989868489613c4a565b505050505050505050565b606060006139db8560801c90565b90506fffffffffffffffffffffffffffffffff8516600084613a1357613a02866008614907565b613a0e90610100614872565b613a16565b60005b90506000868381613a2957613a296149a5565b049050613a368784614a13565b15613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610349565b602080820201604051955080860160405250808552600060208601855b83831015613b02578051851c8252600192909201916020909101908901613ae0565b505050505050509392505050565b60608267ffffffffffffffff811115613b2b57613b2b613f85565b6040519080825280601f01601f191660200182016040528015613b55576020820181803683370190505b5090506020810161390c858585846134a0565b6060610bfb83836000613b10565b60008381613b848260e01c90565b90506000613b95878760ff16613444565b9050808510613bb957613ba88186614872565b613bb290836147bf565b9150613bd0565b613bc38582614872565b613bcd9083614872565b91505b6000613bdd876002614907565b613be89060046147bf565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c176138c5565b6000613c578686866133eb565b9050613c64602084614a27565b613c6e90826147bf565b90506000613c7d602085614a13565b90506102bf8282856131c7565b6001600160801b031981168114613ca057600080fd5b50565b60008083601f840112613cb557600080fd5b50813567ffffffffffffffff811115613ccd57600080fd5b602083019150836020828501011115613ce557600080fd5b9250929050565b60008083601f840112613cfe57600080fd5b50813567ffffffffffffffff811115613d1657600080fd5b6020830191508360208260051b8501011115613ce557600080fd5b60008060008060008060808789031215613d4a57600080fd5b8635613d5581613c8a565b95506020870135613d6581613c8a565b9450604087013567ffffffffffffffff80821115613d8257600080fd5b613d8e8a838b01613ca3565b90965094506060890135915080821115613da757600080fd5b50613db489828a01613cec565b979a9699509497509295939492505050565b6001600160a01b0381168114613ca057600080fd5b600080600060608486031215613df057600080fd5b8335613dfb81613c8a565b92506020840135613e0b81613c8a565b91506040840135613e1b81613dc6565b809150509250925092565b60008060008060808587031215613e3c57600080fd5b8435613e4781613c8a565b93506020850135613e5781613c8a565b93969395505050506040820135916060013590565b60008060008060808587031215613e8257600080fd5b8435613e8d81613c8a565b93506020850135613e9d81613c8a565b92506040850135613ead81613dc6565b915060608501358015158114613ec257600080fd5b939692955090935050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aab57600080fd5b60008060008060808587031215613f1357600080fd5b8435613f1e81613c8a565b93506020850135613f2e81613c8a565b9250613f3c60408601613ecd565b9150613f4a60608601613ecd565b905092959194509250565b60008060408385031215613f6857600080fd5b823591506020830135613f7a81613dc6565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613fc457613fc4613f85565b604052919050565b600067ffffffffffffffff821115613fe657613fe6613f85565b50601f01601f191660200190565b600061400761400284613fcc565b613f9b565b905082815283838301111561401b57600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561404557600080fd5b823561405081613dc6565b9150602083013567ffffffffffffffff81111561406c57600080fd5b8301601f8101851361407d57600080fd5b61408c85823560208401613ff4565b9150509250929050565b6000602082840312156140a857600080fd5b8135610bfb81613c8a565b600082601f8301126140c457600080fd5b610bfb83833560208501613ff4565b600080600080608085870312156140e957600080fd5b84356140f481613c8a565b9350602085013561410481613c8a565b9250604085013567ffffffffffffffff8082111561412157600080fd5b61412d888389016140b3565b9350606087013591508082111561414357600080fd5b50614150878288016140b3565b91505092959194509250565b60008060006060848603121561417157600080fd5b505081359360208301359350604090920135919050565b6000806000806000606086880312156141a057600080fd5b85359450602086013567ffffffffffffffff808211156141bf57600080fd5b6141cb89838a01613ca3565b909650945060408801359150808211156141e457600080fd5b506141f188828901613cec565b969995985093965092949392505050565b600067ffffffffffffffff8084111561421d5761421d613f85565b8360051b602061422e818301613f9b565b86815291850191818101903684111561424657600080fd5b865b8481101561427a578035868111156142605760008081fd5b61426c36828b016140b3565b845250918301918301614248565b50979650505050505050565b60005b838110156142a1578181015183820152602001614289565b838111156102e35750506000910152565b600081518084526142ca816020860160208601614286565b601f01601f19169290920160200192915050565b602081526000610bfb60208301846142b2565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561431957600080fd5b8151610bfb81613c8a565b60008551614336818460208a01614286565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528651614372816001850160208b01614286565b6001920191820152845161438d816002840160208901614286565b84519101906143a3816002840160208801614286565b016002019695505050505050565b600083516143c3818460208801614286565b8351908301906143d7818360208801614286565b01949350505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160801b031980891683526020818916818501526080604085015261443960808501888a6143e0565b84810360608601528581529150808201600586901b830182018760005b888110156144e257601f1986840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b360301811261449957600080fd5b8a01803567ffffffffffffffff8111156144b257600080fd5b8036038c13156144c157600080fd5b6144ce85828985016143e0565b958701959450505090840190600101614456565b50909c9b505050505050505050505050565b60408152600061450760408301856142b2565b90506001600160a01b03831660208301529392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614592577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526145808583516142b2565b94509285019290850190600101614546565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156145d6576000198160200360031b1b821691505b50919050565b82815260406020820152600061040e60408301846142b2565b60008351614607818460208801614286565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b6000825161463e818460208701614286565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b6000600019820361467157614671614648565b5060010190565b600060ff821660ff84168060ff0382111561469557614695614648565b019392505050565b600081518084526020808501945080840160005b838110156146cd578151875295820195908201906001016146b1565b509495945050505050565b82815260406020820152600061040e604083018461469d565b83815260606020820152600061470a606083018561469d565b905060ff83166040830152949350505050565b60006020828403121561472f57600080fd5b815167ffffffffffffffff81111561474657600080fd5b8201601f8101841361475757600080fd5b805161476561400282613fcc565b81815285602083850101111561477a57600080fd5b611794826020830160208601614286565b8481526080602082015260006147a4608083018661469d565b60ff851660408401528281036060840152612e7581856142b2565b600082198211156147d2576147d2614648565b500190565b8381526060602082015260006147f0606083018561469d565b828103604084015261480281856142b2565b9695505050505050565b838152606060208201526000614825606083018561469d565b9050826040830152949350505050565b8381526000835161484d816020850160208801614286565b80830190508351614865816020840160208801614286565b0160200195945050505050565b60008282101561488457614884614648565b500390565b838152826020820152606060408201526000611794606083018461469d565b600060ff821660ff81036148be576148be614648565b60010192915050565b600061ffff8083168185168083038211156143d7576143d7614648565b600060ff821660ff8416808210156148fe576148fe614648565b90039392505050565b600081600019048311821515161561492157614921614648565b500290565b600063ffffffff8083168185168083038211156143d7576143d7614648565b838152826020820152608060408201526000614964608083018461469d565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b634e487b7160e01b600052601260045260246000fd5b8481528360208201526080604082015260006149da608083018561469d565b905060ff8316606083015295945050505050565b606081526000614a0160608301866142b2565b60208301949094525060400152919050565b600082614a2257614a226149a5565b500690565b600082614a3657614a366149a5565b50049056fea2646970667358221220905962ba502ea527d76f2d73e12b935efd02bbcc23fda2dd7efefd1135f2255664736f6c634300080d0033";
|
|
152
152
|
|
|
153
153
|
type CoreModuleConstructorParams =
|
|
154
154
|
| [signer?: Signer]
|
|
@@ -583,7 +583,7 @@ const _abi = [
|
|
|
583
583
|
] as const;
|
|
584
584
|
|
|
585
585
|
const _bytecode =
|
|
586
|
-
"0x608060405234801561001057600080fd5b50614a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637a58dce411610097578063ca4c1f5e11610066578063ca4c1f5e14610211578063d593368614610224578063f227e65314610237578063fe86a89f1461024a57600080fd5b80637a58dce4146101c55780638ae710e9146101d85780638da798da146101eb578063a886545e146101fe57600080fd5b80633ca90f22116100d35780633ca90f22146101485780634c9e9f111461015b57806356f55a971461016e5780636e81fd71146101b257600080fd5b8063096fcaa9146100fa5780631e42269e1461010f57806331b99d8914610122575b600080fd5b61010d610108366004613d31565b61025d565b005b61010d61011d366004613ddb565b6102c8565b610135610130366004613e26565b6102e9565b6040519081526020015b60405180910390f35b61010d610156366004613ddb565b505050565b610135610169366004613e6c565b610416565b61018161017c366004613efd565b610537565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161013f565b61010d6101c0366004613f55565b6105f2565b61010d6101d3366004613ddb565b6106de565b61010d6101e6366004613ddb565b610751565b61010d6101f9366004614032565b61076c565b61010d61020c366004614096565b61086f565b61018161021f3660046140d3565b6108dd565b61010d61023236600461415c565b610a28565b61010d610245366004613ddb565b610ab6565b61010d610258366004614188565b610ad3565b6000610271878761026c610b42565b610b74565b90506102bf8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ba9250879150889050614202565b610c02565b50505050505050565b60006102d7848461026c610b42565b90506102e38183610ca0565b50505050565b60006001600160801b03198516608085901c1790506001600160801b031984166103525761031681610d67565b6040517fe56728c000000000000000000000000000000000000000000000000000000000815260040161034991906142de565b60405180910390fd5b60006103676001600160801b03198716610e3b565b6003811115610378576103786142f1565b0361038b576103868561086f565b61039b565b61039985600061026c610b42565b505b60006103a682610e3b565b60038111156103b7576103b76142f1565b146103f8576103c581610d67565b6040517f0f2fac6100000000000000000000000000000000000000000000000000000000815260040161034991906142de565b610403816002610ef7565b61040e818484610feb565b949350505050565b60006001600160801b03198516608085901c1790506001600160801b031984166104435761031681610d67565b61044c83611058565b1561048e576040517fb86487840000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610349565b60006104a36001600160801b03198716610e3b565b60038111156104b4576104b46142f1565b036104c7576104c28561086f565b6104d7565b6104d585600061026c610b42565b505b60006104e282610e3b565b60038111156104f3576104f36142f1565b14610501576103c581610d67565b61050c816003610ef7565b6105178184846110fb565b61052183826111d3565b61040e6001600160801b0319861684600161128b565b6000610546818061026c610b42565b50600061055284611367565b9050600061055f8561140a565b90506001600160801b0319821615801561058157506001600160801b03198116155b6105db576040517f9b2a16a90000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000086166004820152602401610349565b6105e7858888876114c8565b509295945050505050565b600061060d6f636f72652e73000000000000000000006115c8565b5090506102e361061b610b42565b827f8ae710e900000000000000000000000000000000000000000000000000000000866106488860801b90565b6040516001600160801b03199283166024820152911660448201526001600160a01b03871660648201526084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001600061168d565b60006106f96001600160801b03198516608085901c17610e3b565b9050600281600381111561070f5761070f6142f1565b0361071f576102e3848484610751565b6003816003811115610733576107336142f1565b146102e3576103166001600160801b03198516608085901c17610d67565b6000610760848461026c610b42565b90506102e3818361179d565b6107f8610777610b42565b836313861fb560e01b8460405160240161079191906142de565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260008061168d565b5061086b826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e9190614307565b82516020840120846117a7565b5050565b6001600160801b03198116600061088582610e3b565b6003811115610896576108966142f1565b146108a4576103c581610d67565b6108b96001600160801b031983166001610ef7565b6108ca826108c5610b42565b61186b565b61086b816108d6610b42565b600161128b565b60006108ec858561026c610b42565b5060006108f886611937565b9050600061090586611937565b90508181868660405160200161091e9493929190614324565b604051602081830303815290604052805190602001209250600061094184611367565b9050600061094e8561140a565b90506001600160801b0319821615158061097157506001600160801b0319811615155b156109cc576040517f9b2a16a90000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000086166004820152602401610349565b600087876040516020016109e19291906143b1565b604051602081830303815290604052905060008151600014610a095781516020830120610a0c565b60005b9050610a1a878c8c846114c8565b505050505050949350505050565b6000610a436f636f72652e73000000000000000000006115c8565b509050610aaf610a51610b42565b827f31b99d890000000000000000000000000000000000000000000000000000000087610a7e8960801b90565b6040516001600160801b0319928316602482015291166044820152606481018890526084810187905260a401610676565b5050505050565b6000610ac5848461026c610b42565b90506102e38183600161128b565b6000610aee6f636f72652e73000000000000000000006115c8565b5090506102bf610afc610b42565b827f096fcaa90000000000000000000000000000000000000000000000000000000089610b298b60801b90565b8a8a8a8a6040516024016106769695949392919061440b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c80610b715750335b90565b608082901c6001600160801b03198416176001600160a01b0382163014801590610bb85750816001600160a01b0316610bac856119b5565b6001600160a01b031614155b15610bfb57610bc681610d67565b826040517fe64c03480000000000000000000000000000000000000000000000000000000081526004016103499291906144f4565b9392505050565b6000610c0d84611a5b565b9050815160001480610c2a5750610c2381611ab0565b60ff168251145b610c7657610c3781611ab0565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff90921660048301526024820152604401610349565b6102e3848484604051602001610c8c919061451f565b604051602081830303815290604052611ad4565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610cd557610cd561459f565b6020026020010181815250508160601b6bffffffffffffffffffffffff191681600181518110610d0757610d0761459f565b602090810291909101810191909152604080516000818401527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261015690610d61906145b5565b82611b70565b606081608081901b6001600160801b0319821615610d855781610da7565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b6001600160801b0319821615610dbd5781610ddf565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040516001600160801b031992831660208201527f2f0000000000000000000000000000000000000000000000000000000000000060308201529116603182015260410160405160208183030381529060405292505050919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610e7457610e7461459f565b6020908102919091018101919091526040805160009281018390527f5265736f757263655479706500000000000000000000000000000000000000006030820152610edb91015b604051602081830303815290604052610ed3906145b5565b836000611bf3565b602081015190915060f81c600381111561040e5761040e6142f1565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610f2d57610f2d61459f565b602090810291909101810191909152604080516000818401527f5265736f757263655479706500000000000000000000000000000000000000006030820152815180820390930183528101905261015690610f87906145b5565b826000856003811115610f9c57610f9c6142f1565b604051602001610fd7919060f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b604051602081830303815290604052611c99565b610ff6826000611d31565b611001816001611d31565b61100a83611eff565b1561104d578261101984611f18565b6040517f147bbb8c0000000000000000000000000000000000000000000000000000000081526004016103499291906145dc565b610156838383611f43565b604080516001808252818301909252600091829190602080830190803683370190505090508260601b6bffffffffffffffffffffffff1916816000815181106110a3576110a361459f565b6020908102919091018101919091526040805160009281018390527f53797374656d526567697374727900000000000000000000000000000000000060308201526110ee9101610ebb565b602081015190915061040e565b60408051606084901b6bffffffffffffffffffffffff191660208083019190915283151560f81b603483015282518083036015018152600160358401818152607585019095529093600093909260559091019080368337019050509050848160008151811061116c5761116c61459f565b602090810291909101810191909152604080516000928101929092527f53797374656d73000000000000000000000000000000000000000000000000006030830152610aaf91015b6040516020818303038152906040526111cc906145b5565b82846120ba565b604080516001808252818301909252600091602080830190803683370190505090508260601b6bffffffffffffffffffffffff19168160008151811061121b5761121b61459f565b602090810291909101810191909152604080516000818401527f53797374656d52656769737472790000000000000000000000000000000000006030820152815180820390930183528101905261015690611275906145b5565b82600085604051602001610fd791815260200190565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106112c0576112c061459f565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106112f2576112f261459f565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526102e39061134c906145b5565b82600085604051602001610fd791151560f81b815260010190565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106113bf576113bf61459f565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526110ee9101610ebb565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106114625761146261459f565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526110ee91016040516020818303038152906040526114c0906145b5565b836001611bf3565b604080516001600160801b031985811660208084019190915290851660308301527fffffffff0000000000000000000000000000000000000000000000000000000084168284015282516024818403018152600160448401818152608485019095529093600093909260649091019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115745761157461459f565b602090810291909101810191909152604080516000928101929092527f66756e6353656c6563746f72730000000000000000000000000000000000000060308301526115c091016111b4565b505050505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106116025761160261459f565b6020908102919091018101919091526040805160009281018390527f53797374656d7300000000000000000000000000000000000000000000000000603082015261166e9101604051602081830303815290604052611660906145b5565b83611669612140565b6121fd565b6020810151603482015191925060601c9060f81c935093505050915091565b6060600084876040516020016116a49291906145f5565b60405160208183030381529060405290506000808561171e57876001600160a01b031685846040516116d6919061462c565b60006040518083038185875af1925050503d8060008114611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b50611778565b876001600160a01b031683604051611736919061462c565b600060405180830381855af49150503d8060008114611771576040519150601f19603f3d011682016040523d82523d6000602084013e611776565b606091505b505b91509150811561178c579250611794915050565b805160208201fd5b95945050505050565b61086b8282612257565b60006117b282612329565b6040805160028082526060820183529293506000929091602083019080368337019050509050846fffffffffffffffffffffffffffffffff1916816000815181106117ff576117ff61459f565b602002602001018181525050838160018151811061181f5761181f61459f565b602090810291909101810191909152604080516000928101929092527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610aaf91016111b4565b60408051600180825281830190925260009160208083019080368337019050509050826fffffffffffffffffffffffffffffffff1916816000815181106118b4576118b461459f565b602090810291909101810191909152604080516000818401527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526101569061190e906145b5565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401610fd7565b606060005b601081101561198e576001600160801b03198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561198e57806119868161465e565b91505061193c565b604080516001600160801b031985166020820152815160309091019091528181528061040e565b60408051600180825281830190925260009182919060208083019080368337019050509050826fffffffffffffffffffffffffffffffff191681600081518110611a0157611a0161459f565b6020908102919091018101919091526040805160009281018390527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152611a4c9101610ebb565b6020015160601c949350505050565b6000611a668261234e565b905080611aab5781611a7783611f18565b6040517fd623a70d0000000000000000000000000000000000000000000000000000000081526004016103499291906145dc565b919050565b6000611abb826123ea565b611ac4836123fb565b611ace9190614678565b92915050565b6000611ae08383612407565b60408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110611b1a57611b1a61459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f53746f72654d65746164617461000000000000000000000000000000000000006030830152610aaf91016111b4565b611b786124bd565b15611b875761086b828261252e565b6040517f505a181d000000000000000000000000000000000000000000000000000000008152339063505a181d90611bc590859085906004016146d8565b600060405180830381600087803b158015611bdf57600080fd5b505af11580156115c0573d6000803e3d6000fd5b6060611bfd6124bd565b15611c1457611c0d8484846126b7565b9050610bfb565b6040517fd03edb8c000000000000000000000000000000000000000000000000000000008152339063d03edb8c90611c54908790879087906004016146f1565b600060405180830381865afa158015611c71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c0d919081019061471d565b611ca16124bd565b15611cb757611cb2848484846126d2565b6102e3565b6040517f114a7266000000000000000000000000000000000000000000000000000000008152339063114a726690611cf990879087908790879060040161478b565b600060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b5050505050505050565b80158015611d3d575081155b15611d5e57604051635318beb960e01b815260006004820152602401610349565b6000611d69836123ea565b60ff169050600e811115611d9357604051635318beb960e01b815260048101829052602401610349565b6000611d9e846123fb565b60ff169050601c611daf83836147bf565b1115611ddb57611dbf82826147bf565b604051635318beb960e01b815260040161034991815260200190565b60008060005b611deb85856147bf565b811015611eb8576000611e17611e0189846128a3565b60c5811115611e1257611e126142f1565b6128cf565b1115611e6857838110611e56576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82611e608161465e565b935050611eb0565b83811015611ea2576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81611eac8161465e565b9250505b600101611de1565b50828214611edc57604051635318beb960e01b815260048101839052602401610349565b8381146115c057604051635318beb960e01b815260048101829052602401610349565b6000611f11611f0d8361234e565b1590565b1592915050565b606081604051602001611f2d91815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508381600081518110611f7957611f7961459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d6100000000000000000000000000000000000000000000000000006030830152600091611fec91015b604051602081830303815290604052611fe6906145b5565b83612980565b8481559050612004611fff8260206147bf565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32910160405160208183030381529060405261207a906145b5565b83868660408051602081019390935282015260600160408051601f19818403018152908290526120ab9392916147d7565b60405180910390a15050505050565b6120c26124bd565b156120d2576101568383836129d6565b6040517f8ed41f2f0000000000000000000000000000000000000000000000000000000081523390638ed41f2f90612112908690869086906004016147d7565b600060405180830381600087803b15801561212c57600080fd5b505af11580156102bf573d6000803e3d6000fd5b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061217a5761217a61459f565b602002602001019060c5811115612193576121936142f1565b908160c58111156121a6576121a66142f1565b815250506060816001815181106121bf576121bf61459f565b602002602001019060c58111156121d8576121d86142f1565b908160c58111156121eb576121eb6142f1565b9052506121f781612c2b565b91505090565b60606122076124bd565b1561221757611c0d848484612e80565b6040517f419b58fd000000000000000000000000000000000000000000000000000000008152339063419b58fd90611c549087908790879060040161480c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061228d5761228d61459f565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b7300000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052610156906122f1906145b5565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401604051602081830303815290604052612fe5565b604051606082811b6bffffffffffffffffffffffff1916602083015290603401611f2d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106123875761238761459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d61000000000000000000000000000000000000000000000000000060308301526000916123e09101611fce565b905061040e815490565b6000601882901b5b60f81c92915050565b6000601082901b6123f2565b604080516002808252606080830184529260009291906020830190803683370190505090508351816000815181106124415761244161459f565b602002602001019061ffff16908161ffff168152505082518160018151811061246c5761246c61459f565b602002602001019061ffff16908161ffff1681525050600061248d82613040565b90508085856040516020016124a493929190614835565b6040516020818303038152906040529250505092915050565b6000303b8082036124d057600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b15801561250957600080fd5b505afa92505050801561251a575060015b61252657600091505090565b600191505090565b600061253983611a5b565b90507f2cc8610b80ef19409ae51ecbdd9c137960fb22ae9ef2d817d36ec1b685d68ecd838360405161256c9291906146d8565b60405180910390a1600061257f8461311d565b905060005b815181101561261f5760008282815181106125a1576125a161459f565b60200260200101519050806001600160a01b031663b51fef6c87876040518363ffffffff1660e01b81526004016125d99291906146d8565b600060405180830381600087803b1580156125f357600080fd5b505af1158015612607573d6000803e3d6000fd5b505050505080806126179061465e565b915050612584565b50600061262c8585612980565b905061268681600061263e8660f01c90565b67ffffffffffffffff81111561265657612656613f85565b6040519080825280601f01601f191660200182016040528015612680576020820181803683370190505b506131c7565b61268f836123ea565b60ff166000036126a0575050505050565b60006126ac86866131dc565b6000815590506115c0565b606060006126c485611a5b565b905061179485858584613213565b60006126dd85611a5b565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4685858585604051612714949392919061478b565b60405180910390a160006127278661311d565b905060005b81518110156127cb5760008282815181106127495761274961459f565b60200260200101519050806001600160a01b031663469b7ee2898989896040518563ffffffff1660e01b8152600401612785949392919061478b565b600060405180830381600087803b15801561279f57600080fd5b505af11580156127b3573d6000803e3d6000fd5b505050505080806127c39061465e565b91505061272c565b506127d5826123fb565b60ff168460ff1610156127f4576127ef868684878761324a565b612801565b61280186868487876132f0565b60005b81518110156102bf5760008282815181106128215761282161459f565b60200260200101519050806001600160a01b0316636b3d7d5f898989896040518563ffffffff1660e01b815260040161285d949392919061478b565b600060405180830381600087803b15801561287757600080fd5b505af115801561288b573d6000803e3d6000fd5b5050505050808061289b9061465e565b915050612804565b60006128bb836128b48460046147bf565b6008021b90565b60f81c60c5811115610bfb57610bfb6142f1565b6000808260c58111156128e4576128e46142f1565b60ff16905060208110156128fd57610bfb8160016147bf565b604081101561291d5760206129138260016147bf565b610bfb9190614872565b60608110156129335760406129138260016147bf565b60608360c5811115612947576129476142f1565b036129555750600192915050565b60618360c5811115612969576129696142f1565b036129775750601492915050565b50600092915050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016129b793929190614889565b60408051601f1981840301815291905280516020909101209392505050565b60006129e184611a5b565b905060006129ef8260f01c90565b9050806000806129fe856123ea565b60ff161115612a2c57506020848301015160e081901c612a1f9060206147bf565b612a2990836147bf565b91505b84518214612a735784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610349918491600401918252602082015260400190565b7f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32878787604051612aa6939291906147d7565b60405180910390a16000612ab98861311d565b905060005b8151811015612b5b576000828281518110612adb57612adb61459f565b60200260200101519050806001600160a01b03166382b6745f8b8b8b6040518463ffffffff1660e01b8152600401612b15939291906147d7565b600060405180830381600087803b158015612b2f57600080fd5b505af1158015612b43573d6000803e3d6000fd5b50505050508080612b539061465e565b915050612abe565b506000612b688989612980565b905060208701612b7b826000838961332d565b612b868660206147bf565b612b9090826147bf565b9050612b9b876123ea565b60ff16600003612bb15750505050505050505050565b6000612bbd8b8b6131dc565b858155905060008060005b612bd18b6123ea565b60ff168160ff161015612c1b57612be98e8e836133eb565b9250612bf88860ff8316613444565b9150612c07836000878561332d565b612c1182866147bf565b9450600101612bc8565b5050505050505050505050505050565b6000601c82511115612c55578151604051635318beb960e01b815260040161034991815260200190565b60008060008060005b8651811015612d7c576000612c97888381518110612c7e57612c7e61459f565b602002602001015160c5811115611e1257611e126142f1565b905061ffff811615612ced578215612cdb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83612ce5816148a8565b945050612cf2565b600192505b612cfc81866148c7565b9450612d7186612d0d8460046147bf565b8a8581518110612d1f57612d1f61459f565b602002602001015160c5811115612d3857612d386142f1565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101612c5e565b506000828751612d8c91906148e4565b9050600e8160ff161115612db857604051635318beb960e01b815260ff82166004820152602401610349565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b60606000612e8e8360f01c90565b905080600080612e9d866123ea565b60ff1690508015612ee857612eb28888613476565b91506000612ec08360e01c90565b1115612ee857612ed08260e01c90565b612edb9060206147bf565b612ee590846147bf565b92505b60008367ffffffffffffffff811115612f0357612f03613f85565b6040519080825280601f01601f191660200182016040528015612f2d576020820181803683370190505b50905060208101612f408a8a8884613483565b612f4a8460e01c90565b600003612f5e57509450610bfb9350505050565b612f6886826147bf565b8481529050612f786020826147bf565b905060005b838160ff161015612fd6576000612f958c8c846133eb565b90506000612fa68760ff8516613444565b9050612fb582826000876134a0565b612fbf81856147bf565b935050508080612fce906148a8565b915050612f7d565b50909998505050505050505050565b612fed6124bd565b15612ffe57611cb284848484613555565b6040517f0c1a60000000000000000000000000000000000000000000000000000000000081523390630c1a600090611cf990879087908790879060040161478b565b6000806000805b84518110156130f2576130bd8361305f836002614907565b61306a9060046147bf565b87848151811061307c5761307c61459f565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b92508481815181106130d1576130d161459f565b602002602001015161ffff16826130e89190614926565b9150600101613047565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b1761040e565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106131575761315761459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f486f6f6b7300000000000000000000000000000000000000000000000000000060308301526000916131b09101610ebb565b905061040e6131c28260008451613777565b613807565b60006020820190506102e3848483855161332d565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016129b793929190614945565b606061321e826123fb565b60ff168360ff16101561323e5761323785858585613818565b905061040e565b61323785858585613878565b60006132598460ff85166128a3565b905081516132728260c5811115611e1257611e126142f1565b146132c95761328c8160c5811115611e1257611e126142f1565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610349565b60006132d58787612980565b905060006132e386866138d1565b9050611d278282866131c7565b60006132fb846123fb565b61330590846148e4565b90506133148686838551613914565b60006133218787846133eb565b90506102bf8184613946565b602083048401935060208381613345576133456149a5565b069250821561339e5760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116133895750506102e3565b6133946001876147bf565b9550509182019190035b602081106133c757815184556133b56001856147bf565b935060209190910190601f190161339e565b80156102e3576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d984848460405160200161342494939291906149bb565b60408051601f198184030181529190528051602090910120949350505050565b600080613452836002614907565b61345d9060046147bf565b905061346b84826008021b90565b60f01c949350505050565b6000806123e084846131dc565b81156102e35760006134958585612980565b9050610aaf81846000855b6020820484019350602082816134b8576134b86149a5565b06915081156135095760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116134f45750506102e3565b6134ff6001876147bf565b9550509283900392015b6020831061353157835481526135206001856147bf565b9350601f1990920191602001613509565b82156102e3576000600019600885021c198251865482169119161782525050505050565b600061356085611a5b565b905061356b816123fb565b60ff168360ff1610156135aa576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006135b886868685613878565b836040516020016135ca9291906143b1565b60405160208183030381529060405290507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4686868684604051613610949392919061478b565b60405180910390a160006136238761311d565b905060005b81518110156136c75760008282815181106136455761364561459f565b60200260200101519050806001600160a01b031663469b7ee28a8a8a886040518563ffffffff1660e01b8152600401613681949392919061478b565b600060405180830381600087803b15801561369b57600080fd5b505af11580156136af573d6000803e3d6000fd5b505050505080806136bf9061465e565b915050613628565b506136d58787858888613952565b60005b8151811015611d275760008282815181106136f5576136f561459f565b60200260200101519050806001600160a01b0316636b3d7d5f8a8a8a886040518563ffffffff1660e01b8152600401613731949392919061478b565b600060405180830381600087803b15801561374b57600080fd5b505af115801561375f573d6000803e3d6000fd5b5050505050808061376f9061465e565b9150506136d8565b600081831115801561378a575083518211155b6137c6578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610349939291906149ee565b602084016137d484826147bf565b905060006137e28585614872565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610bfb83601460006139cd565b606060006138298360ff86166128a3565b905060006138428260c5811115611e1257611e126142f1565b905060006138508888612980565b9050600061385e86886138d1565b905061386b828483613b10565b9998505050505050505050565b60606000613885836123fb565b61388f90856148e4565b9050600061389e8787846133eb565b905060006138b98360ff166138b38a8a613476565b90613444565b90506138c58282613b68565b98975050505050505050565b600080805b8360ff1681101561390c576138ee611e0186836128a3565b6138f890836147bf565b9150806139048161465e565b9150506138d6565b509392505050565b600061392085856131dc565b9050600061392c825490565b905061393c8160ff861685613b76565b80835590506115c0565b61086b826000836131c7565b600061395d846123fb565b61396790846148e4565b9050600061397587876131dc565b90506000613981825490565b905060006139928260ff8616613444565b90506139b08460ff168651836139a891906147bf565b849190613b76565b80845591506139c28989868489613c4a565b505050505050505050565b606060006139db8560801c90565b90506fffffffffffffffffffffffffffffffff8516600084613a1357613a02866008614907565b613a0e90610100614872565b613a16565b60005b90506000868381613a2957613a296149a5565b049050613a368784614a13565b15613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610349565b602080820201604051955080860160405250808552600060208601855b83831015613b02578051851c8252600192909201916020909101908901613ae0565b505050505050509392505050565b60608267ffffffffffffffff811115613b2b57613b2b613f85565b6040519080825280601f01601f191660200182016040528015613b55576020820181803683370190505b5090506020810161390c858585846134a0565b6060610bfb83836000613b10565b60008381613b848260e01c90565b90506000613b95878760ff16613444565b9050808510613bb957613ba88186614872565b613bb290836147bf565b9150613bd0565b613bc38582614872565b613bcd9083614872565b91505b6000613bdd876002614907565b613be89060046147bf565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c176138c5565b6000613c578686866133eb565b9050613c64602084614a27565b613c6e90826147bf565b90506000613c7d602085614a13565b90506102bf8282856131c7565b6001600160801b031981168114613ca057600080fd5b50565b60008083601f840112613cb557600080fd5b50813567ffffffffffffffff811115613ccd57600080fd5b602083019150836020828501011115613ce557600080fd5b9250929050565b60008083601f840112613cfe57600080fd5b50813567ffffffffffffffff811115613d1657600080fd5b6020830191508360208260051b8501011115613ce557600080fd5b60008060008060008060808789031215613d4a57600080fd5b8635613d5581613c8a565b95506020870135613d6581613c8a565b9450604087013567ffffffffffffffff80821115613d8257600080fd5b613d8e8a838b01613ca3565b90965094506060890135915080821115613da757600080fd5b50613db489828a01613cec565b979a9699509497509295939492505050565b6001600160a01b0381168114613ca057600080fd5b600080600060608486031215613df057600080fd5b8335613dfb81613c8a565b92506020840135613e0b81613c8a565b91506040840135613e1b81613dc6565b809150509250925092565b60008060008060808587031215613e3c57600080fd5b8435613e4781613c8a565b93506020850135613e5781613c8a565b93969395505050506040820135916060013590565b60008060008060808587031215613e8257600080fd5b8435613e8d81613c8a565b93506020850135613e9d81613c8a565b92506040850135613ead81613dc6565b915060608501358015158114613ec257600080fd5b939692955090935050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aab57600080fd5b60008060008060808587031215613f1357600080fd5b8435613f1e81613c8a565b93506020850135613f2e81613c8a565b9250613f3c60408601613ecd565b9150613f4a60608601613ecd565b905092959194509250565b60008060408385031215613f6857600080fd5b823591506020830135613f7a81613dc6565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613fc457613fc4613f85565b604052919050565b600067ffffffffffffffff821115613fe657613fe6613f85565b50601f01601f191660200190565b600061400761400284613fcc565b613f9b565b905082815283838301111561401b57600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561404557600080fd5b823561405081613dc6565b9150602083013567ffffffffffffffff81111561406c57600080fd5b8301601f8101851361407d57600080fd5b61408c85823560208401613ff4565b9150509250929050565b6000602082840312156140a857600080fd5b8135610bfb81613c8a565b600082601f8301126140c457600080fd5b610bfb83833560208501613ff4565b600080600080608085870312156140e957600080fd5b84356140f481613c8a565b9350602085013561410481613c8a565b9250604085013567ffffffffffffffff8082111561412157600080fd5b61412d888389016140b3565b9350606087013591508082111561414357600080fd5b50614150878288016140b3565b91505092959194509250565b60008060006060848603121561417157600080fd5b505081359360208301359350604090920135919050565b6000806000806000606086880312156141a057600080fd5b85359450602086013567ffffffffffffffff808211156141bf57600080fd5b6141cb89838a01613ca3565b909650945060408801359150808211156141e457600080fd5b506141f188828901613cec565b969995985093965092949392505050565b600067ffffffffffffffff8084111561421d5761421d613f85565b8360051b602061422e818301613f9b565b86815291850191818101903684111561424657600080fd5b865b8481101561427a578035868111156142605760008081fd5b61426c36828b016140b3565b845250918301918301614248565b50979650505050505050565b60005b838110156142a1578181015183820152602001614289565b838111156102e35750506000910152565b600081518084526142ca816020860160208601614286565b601f01601f19169290920160200192915050565b602081526000610bfb60208301846142b2565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561431957600080fd5b8151610bfb81613c8a565b60008551614336818460208a01614286565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528651614372816001850160208b01614286565b6001920191820152845161438d816002840160208901614286565b84519101906143a3816002840160208801614286565b016002019695505050505050565b600083516143c3818460208801614286565b8351908301906143d7818360208801614286565b01949350505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160801b031980891683526020818916818501526080604085015261443960808501888a6143e0565b84810360608601528581529150808201600586901b830182018760005b888110156144e257601f1986840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b360301811261449957600080fd5b8a01803567ffffffffffffffff8111156144b257600080fd5b8036038c13156144c157600080fd5b6144ce85828985016143e0565b958701959450505090840190600101614456565b50909c9b505050505050505050505050565b60408152600061450760408301856142b2565b90506001600160a01b03831660208301529392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614592577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526145808583516142b2565b94509285019290850190600101614546565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156145d6576000198160200360031b1b821691505b50919050565b82815260406020820152600061040e60408301846142b2565b60008351614607818460208801614286565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b6000825161463e818460208701614286565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b6000600019820361467157614671614648565b5060010190565b600060ff821660ff84168060ff0382111561469557614695614648565b019392505050565b600081518084526020808501945080840160005b838110156146cd578151875295820195908201906001016146b1565b509495945050505050565b82815260406020820152600061040e604083018461469d565b83815260606020820152600061470a606083018561469d565b905060ff83166040830152949350505050565b60006020828403121561472f57600080fd5b815167ffffffffffffffff81111561474657600080fd5b8201601f8101841361475757600080fd5b805161476561400282613fcc565b81815285602083850101111561477a57600080fd5b611794826020830160208601614286565b8481526080602082015260006147a4608083018661469d565b60ff851660408401528281036060840152612e7581856142b2565b600082198211156147d2576147d2614648565b500190565b8381526060602082015260006147f0606083018561469d565b828103604084015261480281856142b2565b9695505050505050565b838152606060208201526000614825606083018561469d565b9050826040830152949350505050565b8381526000835161484d816020850160208801614286565b80830190508351614865816020840160208801614286565b0160200195945050505050565b60008282101561488457614884614648565b500390565b838152826020820152606060408201526000611794606083018461469d565b600060ff821660ff81036148be576148be614648565b60010192915050565b600061ffff8083168185168083038211156143d7576143d7614648565b600060ff821660ff8416808210156148fe576148fe614648565b90039392505050565b600081600019048311821515161561492157614921614648565b500290565b600063ffffffff8083168185168083038211156143d7576143d7614648565b838152826020820152608060408201526000614964608083018461469d565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b634e487b7160e01b600052601260045260246000fd5b8481528360208201526080604082015260006149da608083018561469d565b905060ff8316606083015295945050505050565b606081526000614a0160608301866142b2565b60208301949094525060400152919050565b600082614a2257614a226149a5565b500690565b600082614a3657614a366149a5565b50049056fea264697066735822122010ceeb8b5f9de83bf940078c2717e60ca5d870f9600190b03cdcd9e6cbb455a164736f6c634300080d0033";
|
|
586
|
+
"0x608060405234801561001057600080fd5b50614a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637a58dce411610097578063ca4c1f5e11610066578063ca4c1f5e14610211578063d593368614610224578063f227e65314610237578063fe86a89f1461024a57600080fd5b80637a58dce4146101c55780638ae710e9146101d85780638da798da146101eb578063a886545e146101fe57600080fd5b80633ca90f22116100d35780633ca90f22146101485780634c9e9f111461015b57806356f55a971461016e5780636e81fd71146101b257600080fd5b8063096fcaa9146100fa5780631e42269e1461010f57806331b99d8914610122575b600080fd5b61010d610108366004613d31565b61025d565b005b61010d61011d366004613ddb565b6102c8565b610135610130366004613e26565b6102e9565b6040519081526020015b60405180910390f35b61010d610156366004613ddb565b505050565b610135610169366004613e6c565b610416565b61018161017c366004613efd565b610537565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161013f565b61010d6101c0366004613f55565b6105f2565b61010d6101d3366004613ddb565b6106de565b61010d6101e6366004613ddb565b610751565b61010d6101f9366004614032565b61076c565b61010d61020c366004614096565b61086f565b61018161021f3660046140d3565b6108dd565b61010d61023236600461415c565b610a28565b61010d610245366004613ddb565b610ab6565b61010d610258366004614188565b610ad3565b6000610271878761026c610b42565b610b74565b90506102bf8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ba9250879150889050614202565b610c02565b50505050505050565b60006102d7848461026c610b42565b90506102e38183610ca0565b50505050565b60006001600160801b03198516608085901c1790506001600160801b031984166103525761031681610d67565b6040517fe56728c000000000000000000000000000000000000000000000000000000000815260040161034991906142de565b60405180910390fd5b60006103676001600160801b03198716610e3b565b6003811115610378576103786142f1565b0361038b576103868561086f565b61039b565b61039985600061026c610b42565b505b60006103a682610e3b565b60038111156103b7576103b76142f1565b146103f8576103c581610d67565b6040517f0f2fac6100000000000000000000000000000000000000000000000000000000815260040161034991906142de565b610403816002610ef7565b61040e818484610feb565b949350505050565b60006001600160801b03198516608085901c1790506001600160801b031984166104435761031681610d67565b61044c83611058565b1561048e576040517fb86487840000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610349565b60006104a36001600160801b03198716610e3b565b60038111156104b4576104b46142f1565b036104c7576104c28561086f565b6104d7565b6104d585600061026c610b42565b505b60006104e282610e3b565b60038111156104f3576104f36142f1565b14610501576103c581610d67565b61050c816003610ef7565b6105178184846110fb565b61052183826111d3565b61040e6001600160801b0319861684600161128b565b6000610546818061026c610b42565b50600061055284611367565b9050600061055f8561140a565b90506001600160801b0319821615801561058157506001600160801b03198116155b6105db576040517f9b2a16a90000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000086166004820152602401610349565b6105e7858888876114c8565b509295945050505050565b600061060d6f636f72652e73000000000000000000006115c8565b5090506102e361061b610b42565b827f8ae710e900000000000000000000000000000000000000000000000000000000866106488860801b90565b6040516001600160801b03199283166024820152911660448201526001600160a01b03871660648201526084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001600061168d565b60006106f96001600160801b03198516608085901c17610e3b565b9050600281600381111561070f5761070f6142f1565b0361071f576102e3848484610751565b6003816003811115610733576107336142f1565b146102e3576103166001600160801b03198516608085901c17610d67565b6000610760848461026c610b42565b90506102e3818361179d565b6107f8610777610b42565b836313861fb560e01b8460405160240161079191906142de565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260008061168d565b5061086b826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e9190614307565b82516020840120846117a7565b5050565b6001600160801b03198116600061088582610e3b565b6003811115610896576108966142f1565b146108a4576103c581610d67565b6108b96001600160801b031983166001610ef7565b6108ca826108c5610b42565b61186b565b61086b816108d6610b42565b600161128b565b60006108ec858561026c610b42565b5060006108f886611937565b9050600061090586611937565b90508181868660405160200161091e9493929190614324565b604051602081830303815290604052805190602001209250600061094184611367565b9050600061094e8561140a565b90506001600160801b0319821615158061097157506001600160801b0319811615155b156109cc576040517f9b2a16a90000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000086166004820152602401610349565b600087876040516020016109e19291906143b1565b604051602081830303815290604052905060008151600014610a095781516020830120610a0c565b60005b9050610a1a878c8c846114c8565b505050505050949350505050565b6000610a436f636f72652e73000000000000000000006115c8565b509050610aaf610a51610b42565b827f31b99d890000000000000000000000000000000000000000000000000000000087610a7e8960801b90565b6040516001600160801b0319928316602482015291166044820152606481018890526084810187905260a401610676565b5050505050565b6000610ac5848461026c610b42565b90506102e38183600161128b565b6000610aee6f636f72652e73000000000000000000006115c8565b5090506102bf610afc610b42565b827f096fcaa90000000000000000000000000000000000000000000000000000000089610b298b60801b90565b8a8a8a8a6040516024016106769695949392919061440b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c80610b715750335b90565b608082901c6001600160801b03198416176001600160a01b0382163014801590610bb85750816001600160a01b0316610bac856119b5565b6001600160a01b031614155b15610bfb57610bc681610d67565b826040517fe64c03480000000000000000000000000000000000000000000000000000000081526004016103499291906144f4565b9392505050565b6000610c0d84611a5b565b9050815160001480610c2a5750610c2381611ab0565b60ff168251145b610c7657610c3781611ab0565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff90921660048301526024820152604401610349565b6102e3848484604051602001610c8c919061451f565b604051602081830303815290604052611ad4565b6040805160028082526060820183526000926020830190803683370190505090508281600081518110610cd557610cd561459f565b6020026020010181815250508160601b6bffffffffffffffffffffffff191681600181518110610d0757610d0761459f565b602090810291909101810191909152604080516000818401527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261015690610d61906145b5565b82611b70565b606081608081901b6001600160801b0319821615610d855781610da7565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b6001600160801b0319821615610dbd5781610ddf565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040516001600160801b031992831660208201527f2f0000000000000000000000000000000000000000000000000000000000000060308201529116603182015260410160405160208183030381529060405292505050919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610e7457610e7461459f565b6020908102919091018101919091526040805160009281018390527f5265736f757263655479706500000000000000000000000000000000000000006030820152610edb91015b604051602081830303815290604052610ed3906145b5565b836000611bf3565b602081015190915060f81c600381111561040e5761040e6142f1565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610f2d57610f2d61459f565b602090810291909101810191909152604080516000818401527f5265736f757263655479706500000000000000000000000000000000000000006030820152815180820390930183528101905261015690610f87906145b5565b826000856003811115610f9c57610f9c6142f1565b604051602001610fd7919060f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b604051602081830303815290604052611c99565b610ff6826000611d31565b611001816001611d31565b61100a83611eff565b1561104d578261101984611f18565b6040517f147bbb8c0000000000000000000000000000000000000000000000000000000081526004016103499291906145dc565b610156838383611f43565b604080516001808252818301909252600091829190602080830190803683370190505090508260601b6bffffffffffffffffffffffff1916816000815181106110a3576110a361459f565b6020908102919091018101919091526040805160009281018390527f53797374656d526567697374727900000000000000000000000000000000000060308201526110ee9101610ebb565b602081015190915061040e565b60408051606084901b6bffffffffffffffffffffffff191660208083019190915283151560f81b603483015282518083036015018152600160358401818152607585019095529093600093909260559091019080368337019050509050848160008151811061116c5761116c61459f565b602090810291909101810191909152604080516000928101929092527f53797374656d73000000000000000000000000000000000000000000000000006030830152610aaf91015b6040516020818303038152906040526111cc906145b5565b82846120ba565b604080516001808252818301909252600091602080830190803683370190505090508260601b6bffffffffffffffffffffffff19168160008151811061121b5761121b61459f565b602090810291909101810191909152604080516000818401527f53797374656d52656769737472790000000000000000000000000000000000006030820152815180820390930183528101905261015690611275906145b5565b82600085604051602001610fd791815260200190565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106112c0576112c061459f565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106112f2576112f261459f565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526102e39061134c906145b5565b82600085604051602001610fd791151560f81b815260010190565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106113bf576113bf61459f565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526110ee9101610ebb565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106114625761146261459f565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526110ee91016040516020818303038152906040526114c0906145b5565b836001611bf3565b604080516001600160801b031985811660208084019190915290851660308301527fffffffff0000000000000000000000000000000000000000000000000000000084168284015282516024818403018152600160448401818152608485019095529093600093909260649091019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115745761157461459f565b602090810291909101810191909152604080516000928101929092527f66756e6353656c6563746f72730000000000000000000000000000000000000060308301526115c091016111b4565b505050505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106116025761160261459f565b6020908102919091018101919091526040805160009281018390527f53797374656d7300000000000000000000000000000000000000000000000000603082015261166e9101604051602081830303815290604052611660906145b5565b83611669612140565b6121fd565b6020810151603482015191925060601c9060f81c935093505050915091565b6060600084876040516020016116a49291906145f5565b60405160208183030381529060405290506000808561171e57876001600160a01b031685846040516116d6919061462c565b60006040518083038185875af1925050503d8060008114611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b50611778565b876001600160a01b031683604051611736919061462c565b600060405180830381855af49150503d8060008114611771576040519150601f19603f3d011682016040523d82523d6000602084013e611776565b606091505b505b91509150811561178c579250611794915050565b805160208201fd5b95945050505050565b61086b8282612257565b60006117b282612329565b6040805160028082526060820183529293506000929091602083019080368337019050509050846fffffffffffffffffffffffffffffffff1916816000815181106117ff576117ff61459f565b602002602001018181525050838160018151811061181f5761181f61459f565b602090810291909101810191909152604080516000928101929092527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610aaf91016111b4565b60408051600180825281830190925260009160208083019080368337019050509050826fffffffffffffffffffffffffffffffff1916816000815181106118b4576118b461459f565b602090810291909101810191909152604080516000818401527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526101569061190e906145b5565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401610fd7565b606060005b601081101561198e576001600160801b03198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561198e57806119868161465e565b91505061193c565b604080516001600160801b031985166020820152815160309091019091528181528061040e565b60408051600180825281830190925260009182919060208083019080368337019050509050826fffffffffffffffffffffffffffffffff191681600081518110611a0157611a0161459f565b6020908102919091018101919091526040805160009281018390527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152611a4c9101610ebb565b6020015160601c949350505050565b6000611a668261234e565b905080611aab5781611a7783611f18565b6040517fd623a70d0000000000000000000000000000000000000000000000000000000081526004016103499291906145dc565b919050565b6000611abb826123ea565b611ac4836123fb565b611ace9190614678565b92915050565b6000611ae08383612407565b60408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110611b1a57611b1a61459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f53746f72654d65746164617461000000000000000000000000000000000000006030830152610aaf91016111b4565b611b786124bd565b15611b875761086b828261252e565b6040517f505a181d000000000000000000000000000000000000000000000000000000008152339063505a181d90611bc590859085906004016146d8565b600060405180830381600087803b158015611bdf57600080fd5b505af11580156115c0573d6000803e3d6000fd5b6060611bfd6124bd565b15611c1457611c0d8484846126b7565b9050610bfb565b6040517fd03edb8c000000000000000000000000000000000000000000000000000000008152339063d03edb8c90611c54908790879087906004016146f1565b600060405180830381865afa158015611c71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c0d919081019061471d565b611ca16124bd565b15611cb757611cb2848484846126d2565b6102e3565b6040517f114a7266000000000000000000000000000000000000000000000000000000008152339063114a726690611cf990879087908790879060040161478b565b600060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b5050505050505050565b80158015611d3d575081155b15611d5e57604051635318beb960e01b815260006004820152602401610349565b6000611d69836123ea565b60ff169050600e811115611d9357604051635318beb960e01b815260048101829052602401610349565b6000611d9e846123fb565b60ff169050601c611daf83836147bf565b1115611ddb57611dbf82826147bf565b604051635318beb960e01b815260040161034991815260200190565b60008060005b611deb85856147bf565b811015611eb8576000611e17611e0189846128a3565b60c5811115611e1257611e126142f1565b6128cf565b1115611e6857838110611e56576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82611e608161465e565b935050611eb0565b83811015611ea2576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81611eac8161465e565b9250505b600101611de1565b50828214611edc57604051635318beb960e01b815260048101839052602401610349565b8381146115c057604051635318beb960e01b815260048101829052602401610349565b6000611f11611f0d8361234e565b1590565b1592915050565b606081604051602001611f2d91815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508381600081518110611f7957611f7961459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d6100000000000000000000000000000000000000000000000000006030830152600091611fec91015b604051602081830303815290604052611fe6906145b5565b83612980565b8481559050612004611fff8260206147bf565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32910160405160208183030381529060405261207a906145b5565b83868660408051602081019390935282015260600160408051601f19818403018152908290526120ab9392916147d7565b60405180910390a15050505050565b6120c26124bd565b156120d2576101568383836129d6565b6040517f8ed41f2f0000000000000000000000000000000000000000000000000000000081523390638ed41f2f90612112908690869086906004016147d7565b600060405180830381600087803b15801561212c57600080fd5b505af11580156102bf573d6000803e3d6000fd5b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061217a5761217a61459f565b602002602001019060c5811115612193576121936142f1565b908160c58111156121a6576121a66142f1565b815250506060816001815181106121bf576121bf61459f565b602002602001019060c58111156121d8576121d86142f1565b908160c58111156121eb576121eb6142f1565b9052506121f781612c2b565b91505090565b60606122076124bd565b1561221757611c0d848484612e80565b6040517f419b58fd000000000000000000000000000000000000000000000000000000008152339063419b58fd90611c549087908790879060040161480c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061228d5761228d61459f565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b7300000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052610156906122f1906145b5565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401604051602081830303815290604052612fe5565b604051606082811b6bffffffffffffffffffffffff1916602083015290603401611f2d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106123875761238761459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d61000000000000000000000000000000000000000000000000000060308301526000916123e09101611fce565b905061040e815490565b6000601882901b5b60f81c92915050565b6000601082901b6123f2565b604080516002808252606080830184529260009291906020830190803683370190505090508351816000815181106124415761244161459f565b602002602001019061ffff16908161ffff168152505082518160018151811061246c5761246c61459f565b602002602001019061ffff16908161ffff1681525050600061248d82613040565b90508085856040516020016124a493929190614835565b6040516020818303038152906040529250505092915050565b6000303b8082036124d057600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b15801561250957600080fd5b505afa92505050801561251a575060015b61252657600091505090565b600191505090565b600061253983611a5b565b90507f2cc8610b80ef19409ae51ecbdd9c137960fb22ae9ef2d817d36ec1b685d68ecd838360405161256c9291906146d8565b60405180910390a1600061257f8461311d565b905060005b815181101561261f5760008282815181106125a1576125a161459f565b60200260200101519050806001600160a01b031663b51fef6c87876040518363ffffffff1660e01b81526004016125d99291906146d8565b600060405180830381600087803b1580156125f357600080fd5b505af1158015612607573d6000803e3d6000fd5b505050505080806126179061465e565b915050612584565b50600061262c8585612980565b905061268681600061263e8660f01c90565b67ffffffffffffffff81111561265657612656613f85565b6040519080825280601f01601f191660200182016040528015612680576020820181803683370190505b506131c7565b61268f836123ea565b60ff166000036126a0575050505050565b60006126ac86866131dc565b6000815590506115c0565b606060006126c485611a5b565b905061179485858584613213565b60006126dd85611a5b565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4685858585604051612714949392919061478b565b60405180910390a160006127278661311d565b905060005b81518110156127cb5760008282815181106127495761274961459f565b60200260200101519050806001600160a01b031663469b7ee2898989896040518563ffffffff1660e01b8152600401612785949392919061478b565b600060405180830381600087803b15801561279f57600080fd5b505af11580156127b3573d6000803e3d6000fd5b505050505080806127c39061465e565b91505061272c565b506127d5826123fb565b60ff168460ff1610156127f4576127ef868684878761324a565b612801565b61280186868487876132f0565b60005b81518110156102bf5760008282815181106128215761282161459f565b60200260200101519050806001600160a01b0316636b3d7d5f898989896040518563ffffffff1660e01b815260040161285d949392919061478b565b600060405180830381600087803b15801561287757600080fd5b505af115801561288b573d6000803e3d6000fd5b5050505050808061289b9061465e565b915050612804565b60006128bb836128b48460046147bf565b6008021b90565b60f81c60c5811115610bfb57610bfb6142f1565b6000808260c58111156128e4576128e46142f1565b60ff16905060208110156128fd57610bfb8160016147bf565b604081101561291d5760206129138260016147bf565b610bfb9190614872565b60608110156129335760406129138260016147bf565b60608360c5811115612947576129476142f1565b036129555750600192915050565b60618360c5811115612969576129696142f1565b036129775750601492915050565b50600092915050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016129b793929190614889565b60408051601f1981840301815291905280516020909101209392505050565b60006129e184611a5b565b905060006129ef8260f01c90565b9050806000806129fe856123ea565b60ff161115612a2c57506020848301015160e081901c612a1f9060206147bf565b612a2990836147bf565b91505b84518214612a735784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610349918491600401918252602082015260400190565b7f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32878787604051612aa6939291906147d7565b60405180910390a16000612ab98861311d565b905060005b8151811015612b5b576000828281518110612adb57612adb61459f565b60200260200101519050806001600160a01b03166382b6745f8b8b8b6040518463ffffffff1660e01b8152600401612b15939291906147d7565b600060405180830381600087803b158015612b2f57600080fd5b505af1158015612b43573d6000803e3d6000fd5b50505050508080612b539061465e565b915050612abe565b506000612b688989612980565b905060208701612b7b826000838961332d565b612b868660206147bf565b612b9090826147bf565b9050612b9b876123ea565b60ff16600003612bb15750505050505050505050565b6000612bbd8b8b6131dc565b858155905060008060005b612bd18b6123ea565b60ff168160ff161015612c1b57612be98e8e836133eb565b9250612bf88860ff8316613444565b9150612c07836000878561332d565b612c1182866147bf565b9450600101612bc8565b5050505050505050505050505050565b6000601c82511115612c55578151604051635318beb960e01b815260040161034991815260200190565b60008060008060005b8651811015612d7c576000612c97888381518110612c7e57612c7e61459f565b602002602001015160c5811115611e1257611e126142f1565b905061ffff811615612ced578215612cdb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83612ce5816148a8565b945050612cf2565b600192505b612cfc81866148c7565b9450612d7186612d0d8460046147bf565b8a8581518110612d1f57612d1f61459f565b602002602001015160c5811115612d3857612d386142f1565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101612c5e565b506000828751612d8c91906148e4565b9050600e8160ff161115612db857604051635318beb960e01b815260ff82166004820152602401610349565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b60606000612e8e8360f01c90565b905080600080612e9d866123ea565b60ff1690508015612ee857612eb28888613476565b91506000612ec08360e01c90565b1115612ee857612ed08260e01c90565b612edb9060206147bf565b612ee590846147bf565b92505b60008367ffffffffffffffff811115612f0357612f03613f85565b6040519080825280601f01601f191660200182016040528015612f2d576020820181803683370190505b50905060208101612f408a8a8884613483565b612f4a8460e01c90565b600003612f5e57509450610bfb9350505050565b612f6886826147bf565b8481529050612f786020826147bf565b905060005b838160ff161015612fd6576000612f958c8c846133eb565b90506000612fa68760ff8516613444565b9050612fb582826000876134a0565b612fbf81856147bf565b935050508080612fce906148a8565b915050612f7d565b50909998505050505050505050565b612fed6124bd565b15612ffe57611cb284848484613555565b6040517f0c1a60000000000000000000000000000000000000000000000000000000000081523390630c1a600090611cf990879087908790879060040161478b565b6000806000805b84518110156130f2576130bd8361305f836002614907565b61306a9060046147bf565b87848151811061307c5761307c61459f565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b92508481815181106130d1576130d161459f565b602002602001015161ffff16826130e89190614926565b9150600101613047565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b1761040e565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106131575761315761459f565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f486f6f6b7300000000000000000000000000000000000000000000000000000060308301526000916131b09101610ebb565b905061040e6131c28260008451613777565b613807565b60006020820190506102e3848483855161332d565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016129b793929190614945565b606061321e826123fb565b60ff168360ff16101561323e5761323785858585613818565b905061040e565b61323785858585613878565b60006132598460ff85166128a3565b905081516132728260c5811115611e1257611e126142f1565b146132c95761328c8160c5811115611e1257611e126142f1565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610349565b60006132d58787612980565b905060006132e386866138d1565b9050611d278282866131c7565b60006132fb846123fb565b61330590846148e4565b90506133148686838551613914565b60006133218787846133eb565b90506102bf8184613946565b602083048401935060208381613345576133456149a5565b069250821561339e5760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116133895750506102e3565b6133946001876147bf565b9550509182019190035b602081106133c757815184556133b56001856147bf565b935060209190910190601f190161339e565b80156102e3576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d984848460405160200161342494939291906149bb565b60408051601f198184030181529190528051602090910120949350505050565b600080613452836002614907565b61345d9060046147bf565b905061346b84826008021b90565b60f01c949350505050565b6000806123e084846131dc565b81156102e35760006134958585612980565b9050610aaf81846000855b6020820484019350602082816134b8576134b86149a5565b06915081156135095760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116134f45750506102e3565b6134ff6001876147bf565b9550509283900392015b6020831061353157835481526135206001856147bf565b9350601f1990920191602001613509565b82156102e3576000600019600885021c198251865482169119161782525050505050565b600061356085611a5b565b905061356b816123fb565b60ff168360ff1610156135aa576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006135b886868685613878565b836040516020016135ca9291906143b1565b60405160208183030381529060405290507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4686868684604051613610949392919061478b565b60405180910390a160006136238761311d565b905060005b81518110156136c75760008282815181106136455761364561459f565b60200260200101519050806001600160a01b031663469b7ee28a8a8a886040518563ffffffff1660e01b8152600401613681949392919061478b565b600060405180830381600087803b15801561369b57600080fd5b505af11580156136af573d6000803e3d6000fd5b505050505080806136bf9061465e565b915050613628565b506136d58787858888613952565b60005b8151811015611d275760008282815181106136f5576136f561459f565b60200260200101519050806001600160a01b0316636b3d7d5f8a8a8a886040518563ffffffff1660e01b8152600401613731949392919061478b565b600060405180830381600087803b15801561374b57600080fd5b505af115801561375f573d6000803e3d6000fd5b5050505050808061376f9061465e565b9150506136d8565b600081831115801561378a575083518211155b6137c6578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610349939291906149ee565b602084016137d484826147bf565b905060006137e28585614872565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610bfb83601460006139cd565b606060006138298360ff86166128a3565b905060006138428260c5811115611e1257611e126142f1565b905060006138508888612980565b9050600061385e86886138d1565b905061386b828483613b10565b9998505050505050505050565b60606000613885836123fb565b61388f90856148e4565b9050600061389e8787846133eb565b905060006138b98360ff166138b38a8a613476565b90613444565b90506138c58282613b68565b98975050505050505050565b600080805b8360ff1681101561390c576138ee611e0186836128a3565b6138f890836147bf565b9150806139048161465e565b9150506138d6565b509392505050565b600061392085856131dc565b9050600061392c825490565b905061393c8160ff861685613b76565b80835590506115c0565b61086b826000836131c7565b600061395d846123fb565b61396790846148e4565b9050600061397587876131dc565b90506000613981825490565b905060006139928260ff8616613444565b90506139b08460ff168651836139a891906147bf565b849190613b76565b80845591506139c28989868489613c4a565b505050505050505050565b606060006139db8560801c90565b90506fffffffffffffffffffffffffffffffff8516600084613a1357613a02866008614907565b613a0e90610100614872565b613a16565b60005b90506000868381613a2957613a296149a5565b049050613a368784614a13565b15613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610349565b602080820201604051955080860160405250808552600060208601855b83831015613b02578051851c8252600192909201916020909101908901613ae0565b505050505050509392505050565b60608267ffffffffffffffff811115613b2b57613b2b613f85565b6040519080825280601f01601f191660200182016040528015613b55576020820181803683370190505b5090506020810161390c858585846134a0565b6060610bfb83836000613b10565b60008381613b848260e01c90565b90506000613b95878760ff16613444565b9050808510613bb957613ba88186614872565b613bb290836147bf565b9150613bd0565b613bc38582614872565b613bcd9083614872565b91505b6000613bdd876002614907565b613be89060046147bf565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c176138c5565b6000613c578686866133eb565b9050613c64602084614a27565b613c6e90826147bf565b90506000613c7d602085614a13565b90506102bf8282856131c7565b6001600160801b031981168114613ca057600080fd5b50565b60008083601f840112613cb557600080fd5b50813567ffffffffffffffff811115613ccd57600080fd5b602083019150836020828501011115613ce557600080fd5b9250929050565b60008083601f840112613cfe57600080fd5b50813567ffffffffffffffff811115613d1657600080fd5b6020830191508360208260051b8501011115613ce557600080fd5b60008060008060008060808789031215613d4a57600080fd5b8635613d5581613c8a565b95506020870135613d6581613c8a565b9450604087013567ffffffffffffffff80821115613d8257600080fd5b613d8e8a838b01613ca3565b90965094506060890135915080821115613da757600080fd5b50613db489828a01613cec565b979a9699509497509295939492505050565b6001600160a01b0381168114613ca057600080fd5b600080600060608486031215613df057600080fd5b8335613dfb81613c8a565b92506020840135613e0b81613c8a565b91506040840135613e1b81613dc6565b809150509250925092565b60008060008060808587031215613e3c57600080fd5b8435613e4781613c8a565b93506020850135613e5781613c8a565b93969395505050506040820135916060013590565b60008060008060808587031215613e8257600080fd5b8435613e8d81613c8a565b93506020850135613e9d81613c8a565b92506040850135613ead81613dc6565b915060608501358015158114613ec257600080fd5b939692955090935050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aab57600080fd5b60008060008060808587031215613f1357600080fd5b8435613f1e81613c8a565b93506020850135613f2e81613c8a565b9250613f3c60408601613ecd565b9150613f4a60608601613ecd565b905092959194509250565b60008060408385031215613f6857600080fd5b823591506020830135613f7a81613dc6565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613fc457613fc4613f85565b604052919050565b600067ffffffffffffffff821115613fe657613fe6613f85565b50601f01601f191660200190565b600061400761400284613fcc565b613f9b565b905082815283838301111561401b57600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561404557600080fd5b823561405081613dc6565b9150602083013567ffffffffffffffff81111561406c57600080fd5b8301601f8101851361407d57600080fd5b61408c85823560208401613ff4565b9150509250929050565b6000602082840312156140a857600080fd5b8135610bfb81613c8a565b600082601f8301126140c457600080fd5b610bfb83833560208501613ff4565b600080600080608085870312156140e957600080fd5b84356140f481613c8a565b9350602085013561410481613c8a565b9250604085013567ffffffffffffffff8082111561412157600080fd5b61412d888389016140b3565b9350606087013591508082111561414357600080fd5b50614150878288016140b3565b91505092959194509250565b60008060006060848603121561417157600080fd5b505081359360208301359350604090920135919050565b6000806000806000606086880312156141a057600080fd5b85359450602086013567ffffffffffffffff808211156141bf57600080fd5b6141cb89838a01613ca3565b909650945060408801359150808211156141e457600080fd5b506141f188828901613cec565b969995985093965092949392505050565b600067ffffffffffffffff8084111561421d5761421d613f85565b8360051b602061422e818301613f9b565b86815291850191818101903684111561424657600080fd5b865b8481101561427a578035868111156142605760008081fd5b61426c36828b016140b3565b845250918301918301614248565b50979650505050505050565b60005b838110156142a1578181015183820152602001614289565b838111156102e35750506000910152565b600081518084526142ca816020860160208601614286565b601f01601f19169290920160200192915050565b602081526000610bfb60208301846142b2565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561431957600080fd5b8151610bfb81613c8a565b60008551614336818460208a01614286565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528651614372816001850160208b01614286565b6001920191820152845161438d816002840160208901614286565b84519101906143a3816002840160208801614286565b016002019695505050505050565b600083516143c3818460208801614286565b8351908301906143d7818360208801614286565b01949350505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160801b031980891683526020818916818501526080604085015261443960808501888a6143e0565b84810360608601528581529150808201600586901b830182018760005b888110156144e257601f1986840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b360301811261449957600080fd5b8a01803567ffffffffffffffff8111156144b257600080fd5b8036038c13156144c157600080fd5b6144ce85828985016143e0565b958701959450505090840190600101614456565b50909c9b505050505050505050505050565b60408152600061450760408301856142b2565b90506001600160a01b03831660208301529392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614592577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526145808583516142b2565b94509285019290850190600101614546565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156145d6576000198160200360031b1b821691505b50919050565b82815260406020820152600061040e60408301846142b2565b60008351614607818460208801614286565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b6000825161463e818460208701614286565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b6000600019820361467157614671614648565b5060010190565b600060ff821660ff84168060ff0382111561469557614695614648565b019392505050565b600081518084526020808501945080840160005b838110156146cd578151875295820195908201906001016146b1565b509495945050505050565b82815260406020820152600061040e604083018461469d565b83815260606020820152600061470a606083018561469d565b905060ff83166040830152949350505050565b60006020828403121561472f57600080fd5b815167ffffffffffffffff81111561474657600080fd5b8201601f8101841361475757600080fd5b805161476561400282613fcc565b81815285602083850101111561477a57600080fd5b611794826020830160208601614286565b8481526080602082015260006147a4608083018661469d565b60ff851660408401528281036060840152612e7581856142b2565b600082198211156147d2576147d2614648565b500190565b8381526060602082015260006147f0606083018561469d565b828103604084015261480281856142b2565b9695505050505050565b838152606060208201526000614825606083018561469d565b9050826040830152949350505050565b8381526000835161484d816020850160208801614286565b80830190508351614865816020840160208801614286565b0160200195945050505050565b60008282101561488457614884614648565b500390565b838152826020820152606060408201526000611794606083018461469d565b600060ff821660ff81036148be576148be614648565b60010192915050565b600061ffff8083168185168083038211156143d7576143d7614648565b600060ff821660ff8416808210156148fe576148fe614648565b90039392505050565b600081600019048311821515161561492157614921614648565b500290565b600063ffffffff8083168185168083038211156143d7576143d7614648565b838152826020820152608060408201526000614964608083018461469d565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b634e487b7160e01b600052601260045260246000fd5b8481528360208201526080604082015260006149da608083018561469d565b905060ff8316606083015295945050505050565b606081526000614a0160608301866142b2565b60208301949094525060400152919050565b600082614a2257614a226149a5565b500690565b600082614a3657614a366149a5565b50049056fea2646970667358221220905962ba502ea527d76f2d73e12b935efd02bbcc23fda2dd7efefd1135f2255664736f6c634300080d0033";
|
|
587
587
|
|
|
588
588
|
type CoreSystemConstructorParams =
|
|
589
589
|
| [signer?: Signer]
|
|
@@ -431,6 +431,67 @@ const _abi = [
|
|
|
431
431
|
stateMutability: "view",
|
|
432
432
|
type: "function",
|
|
433
433
|
},
|
|
434
|
+
{
|
|
435
|
+
inputs: [
|
|
436
|
+
{
|
|
437
|
+
internalType: "bytes16",
|
|
438
|
+
name: "namespace",
|
|
439
|
+
type: "bytes16",
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
internalType: "bytes16",
|
|
443
|
+
name: "name",
|
|
444
|
+
type: "bytes16",
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
internalType: "bytes32[]",
|
|
448
|
+
name: "key",
|
|
449
|
+
type: "bytes32[]",
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
internalType: "uint8",
|
|
453
|
+
name: "schemaIndex",
|
|
454
|
+
type: "uint8",
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
internalType: "uint256",
|
|
458
|
+
name: "byteLengthToPop",
|
|
459
|
+
type: "uint256",
|
|
460
|
+
},
|
|
461
|
+
],
|
|
462
|
+
name: "popFromField",
|
|
463
|
+
outputs: [],
|
|
464
|
+
stateMutability: "nonpayable",
|
|
465
|
+
type: "function",
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
inputs: [
|
|
469
|
+
{
|
|
470
|
+
internalType: "bytes32",
|
|
471
|
+
name: "table",
|
|
472
|
+
type: "bytes32",
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
internalType: "bytes32[]",
|
|
476
|
+
name: "key",
|
|
477
|
+
type: "bytes32[]",
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
internalType: "uint8",
|
|
481
|
+
name: "schemaIndex",
|
|
482
|
+
type: "uint8",
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
internalType: "uint256",
|
|
486
|
+
name: "byteLengthToPop",
|
|
487
|
+
type: "uint256",
|
|
488
|
+
},
|
|
489
|
+
],
|
|
490
|
+
name: "popFromField",
|
|
491
|
+
outputs: [],
|
|
492
|
+
stateMutability: "nonpayable",
|
|
493
|
+
type: "function",
|
|
494
|
+
},
|
|
434
495
|
{
|
|
435
496
|
inputs: [
|
|
436
497
|
{
|
|
@@ -230,6 +230,34 @@ const _abi = [
|
|
|
230
230
|
stateMutability: "view",
|
|
231
231
|
type: "function",
|
|
232
232
|
},
|
|
233
|
+
{
|
|
234
|
+
inputs: [
|
|
235
|
+
{
|
|
236
|
+
internalType: "bytes32",
|
|
237
|
+
name: "table",
|
|
238
|
+
type: "bytes32",
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
internalType: "bytes32[]",
|
|
242
|
+
name: "key",
|
|
243
|
+
type: "bytes32[]",
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
internalType: "uint8",
|
|
247
|
+
name: "schemaIndex",
|
|
248
|
+
type: "uint8",
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
internalType: "uint256",
|
|
252
|
+
name: "byteLengthToPop",
|
|
253
|
+
type: "uint256",
|
|
254
|
+
},
|
|
255
|
+
],
|
|
256
|
+
name: "popFromField",
|
|
257
|
+
outputs: [],
|
|
258
|
+
stateMutability: "nonpayable",
|
|
259
|
+
type: "function",
|
|
260
|
+
},
|
|
233
261
|
{
|
|
234
262
|
inputs: [
|
|
235
263
|
{
|