@layerzerolabs/hyperliquid-composer
Version:
LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid
1 lines • 351 kB
JSON
{"abi":[{"type":"function","name":"ALICE","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_FUND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_SEND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_SEND_OVERFLOW","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DST_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_CORE_WRITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HYPE","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"SRC_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getComposeMessage","inputs":[{"name":"_composerMsg","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"hyperLiquidComposer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract HyperLiquidComposer"}],"stateMutability":"view"},{"type":"function","name":"oft","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract OFTMock"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_erc20_refund_receiver_excessive_amount","inputs":[{"name":"_exceedAmountBy","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_erc20_refund_sender_malformed_receiver","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_malformed_payload","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_native_refund_receiver_excessive_amount_no_fallback","inputs":[{"name":"_exceedAmountBy","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_non_evm_sender_malformed_receiver","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"userA","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"userB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"ErrorMessage","inputs":[{"name":"reason","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x600c8054600160ff199182168117909255601f8054909116909117905560c06040526005608090815264757365724160d81b60a0526200003f90620000b9565b602680546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b60208201526200008690620000b9565b602780546001600160a01b0319166001600160a01b0392909216919091179055348015620000b2575f80fd5b5062000296565b5f620000c582620000cc565b5092915050565b5f8082604051602001620000e1919062000207565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200014b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000171919062000224565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001af908590879060040162000253565b5f604051808303815f87803b158015620001c7575f80fd5b505af1158015620001da573d5f803e3d5ffd5b50505050915091565b5f5b83811015620001ff578181015183820152602001620001e5565b50505f910152565b5f82516200021a818460208701620001e3565b9190910192915050565b5f6020828403121562000235575f80fd5b81516001600160a01b03811681146200024c575f80fd5b9392505050565b60018060a01b0383168152604060208201525f825180604084015262000281816060850160208701620001e3565b601f01601f1916919091016060019392505050565b61d40680620002a45f395ff3fe608060405234801562000010575f80fd5b50600436106200022c575f3560e01c806385226c81116200013b578063ba87267911620000c7578063cb1a295f1162000093578063e20c9f711162000077578063e20c9f71146200053b578063e970bd691462000545578063fa7626d4146200054f575f80fd5b8063cb1a295f1462000513578063deb22e9a1462000527575f80fd5b8063ba87267914620004af578063bb641b3e14620004b9578063c33d080d14620004c9578063c9279a741462000509575f80fd5b8063a09e74301162000107578063a09e7430146200046c578063b0464fdc1462000480578063b5508aa9146200048a578063ba414fa61462000494575f80fd5b806385226c8114620004145780639127ace2146200042d578063916a17c614620004375780639b5215f61462000450575f80fd5b80633f7286f411620001bb57806366d9a9a0116200018757806366d9a9a0146200036357806376e86e72146200037c57806376e9227314620003ee5780637ecd9ac314620003f8575f80fd5b80633f7286f414620002f957806347d7694f14620003035780635c98ee4d146200032957806366165d9f1462000340575f80fd5b80631ed7831c11620001fb5780631ed7831c14620002885780632ade388014620002a1578063318f405a14620002ba5780633e5e3c2314620002ef575f80fd5b80630a9254e414620002305780630df3918e146200023c578063126593411462000253578063176e619e146200025d575b5f80fd5b6200023a6200055d565b005b6200023a6200024d36600462005131565b62000d2e565b6200023a62001355565b6024546200026e9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b62000292620019ce565b6040516200027f91906200515a565b620002ab62001a30565b6040516200027f9190620051f9565b620002d673f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b6040516001600160a01b0390911681526020016200027f565b6200029262001b78565b6200029262001bd8565b6200031a62000314366004620052f8565b62001c38565b6040516200027f919062005369565b6200023a6200033a36600462005131565b62001c4f565b62000349600181565b60405167ffffffffffffffff90911681526020016200027f565b6200036d6200220a565b6040516200027f9190620053db565b602254602354620003bc916001600160a01b038116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b604080516001600160a01b03909416845267ffffffffffffffff909216602084015260070b908201526060016200027f565b6200023a6200238f565b620002d673333333333333333333333333333333333333333381565b6200041e620026ee565b6040516200027f919062005484565b62000349620027c3565b62000441620027d8565b6040516200027f919062005508565b602454620002d69064010000000090046001600160a01b031681565b602554620002d6906001600160a01b031681565b62000441620028d2565b6200041e620029cc565b6200049e62002aa1565b60405190151581526020016200027f565b620002d661080181565b62000349670de0b6b3a764000081565b602054602154620003bc916001600160a01b038116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6200026e619ce181565b602754620002d6906001600160a01b031681565b602654620002d6906001600160a01b031681565b6200029262002b75565b6200023a62002bd5565b601f546200049e9060ff1681565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f68747470733a2f2f7270632e68797065726c69717569642d746573746e65742e60448201527f78797a2f65766d000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906084016020604051808303815f875af192505050801562000639575060408051601f3d908101601f19168201909252620006369181019062005599565b60015b620006e357620006626040518060600160405280603e81526020016200d393603e91396200311e565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b158015620006c6575f80fd5b505af1158015620006d9573d5f803e3d5ffd5b50505050620006e5565b505b6040518060600160405280620006fd6104cf62003196565b6001600160a01b0390811682526104cf602080840191909152600c6040938401528351815485830151919093167fffffffff00000000000000000000000000000000000000000000000000000000938416177401000000000000000000000000000000000000000067ffffffffffffffff9283160217825593830151602180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000908116929096169190911790558251606081018452732222222222222222222222222222222222222222815261045191810191909152600890830181905260228054909216750451222222222222222222222222222222222222222217909155602380549093161790915551737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906108019062000835906200508c565b604051809103905ff0801580156200084f573d5f803e3d5ffd5b506001600160a01b0316803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b815260040162000893929190620055b1565b5f604051808303815f87803b158015620008ab575f80fd5b505af1158015620008be573d5f803e3d5ffd5b50506020546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b1580156200094e575f80fd5b505af115801562000961573d5f803e3d5ffd5b50506022546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b158015620009f1575f80fd5b505af115801562000a04573d5f803e3d5ffd5b5050505073f9e1815f151024bde4b7c10bac10e8ba9f6b53e13360405162000a2c906200509a565b62000a39929190620055dc565b604051809103905ff08015801562000a53573d5f803e3d5ffd5b50602480547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b039384168102919091179182905560205460215460405173f9e1815f151024bde4b7c10bac10e8ba9f6b53e19593909404909216927401000000000000000000000000000000000000000090910467ffffffffffffffff169160070b9062000aef90620050a8565b6001600160a01b03948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff08015801562000b39573d5f803e3d5ffd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602454604080517f5e280f11000000000000000000000000000000000000000000000000000000008152905164010000000090920490921691635e280f119160048083019260209291908290030181865afa15801562000bd0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000bf6919062005679565b6001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c32573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c589190620056a1565b602480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911781556040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e1600482015268056bc75e2d6310000091810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b15801562000d15575f80fd5b505af115801562000d28573d5f803e3d5ffd5b50505050565b62000d6c8167ffffffffffffffff165f678ac7230489e8000067ffffffffffffffff62000d5c9190620056f3565b67ffffffffffffffff16620031b7565b90505f62000d8382670de0b6b3a764000062005717565b60245460255467ffffffffffffffff92909216925062000db9916001600160a01b0364010000000090920482169116836200320f565b5f60405162000dc890620050b6565b604051809103905ff08015801562000de2573d5f803e3d5ffd5b506021549091505f9062000dfb9060070b600a62005872565b6020549091506108019063312f619f906001600160a01b0381169074010000000000000000000000000000000000000000900467ffffffffffffffff1662000e4c85670de0b6b3a7640000620058b6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015267ffffffffffffffff91821660248401521660448201526064015f604051808303815f87803b15801562000eba575f80fd5b505af115801562000ecd573d5f803e3d5ffd5b505050505f600164174876e80062000ee6919062005717565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602082015260340160408051601f198184030181529082905262000f389291602001620058cc565b60405160208183030381529060405290505f62000f8d5f619ce18762000f64886001600160a01b031690565b8660405160200162000f78929190620058f0565b60405160208183030381529060405262003222565b602480546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03166004820152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b15801562001006575f80fd5b505af115801562001019573d5f803e3d5ffd5b505060208054602554604051670de0b6b3a764000081526001600160a01b039283169550911692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a367ffffffffffffffff861615620010cc5760255460405167ffffffffffffffff881681526001600160a01b038681169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562001143575f80fd5b505af115801562001156573d5f803e3d5ffd5b5050602554323192506001600160a01b0316905063d0a1026062001181600164174876e80062005717565b67ffffffffffffffff16602460049054906101000a90046001600160a01b03165f801b86336040518663ffffffff1660e01b8152600401620011c7949392919062005917565b5f604051808303818588803b158015620011df575f80fd5b505af1158015620011f2573d5f803e3d5ffd5b5062001213935050323191506200120d90506001846200595f565b62003256565b737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001260575f80fd5b505af115801562001273573d5f803e3d5ffd5b5050602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301526200131d955064010000000090920490911692506370a082319101602060405180830381865afa158015620012e6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200130c919062005599565b8867ffffffffffffffff1662003256565b60255462001336906001600160a01b0316315f62003256565b6200134c856001600160a01b0316315f62003256565b50505050505050565b60245460255462001384916001600160a01b0364010000000090910481169116670de0b6b3a76400006200320f565b60275460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201527f6572726f7200000000000000000000000000000000000000000000000000000060348201525f90819060390160408051601f198184030181529082905262001404929160200162005975565b60408051808303601f190181529190526026549091505f9062001440908290619ce190670de0b6b3a7640000906001600160a01b031662000f64565b6040517f47d7694f0000000000000000000000000000000000000000000000000000000081529091505f9030906347d7694f906200148390859060040162005369565b5f60405180830381865afa1580156200149e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620014c7919081019062005a69565b90505f81806020019051810190620014e0919062005a9f565b9150505f6309b3473160e01b8283516040516024016200150292919062005ae7565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000094909416939093179092526024805492517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009093046001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b158015620015da575f80fd5b505af1158015620015ed573d5f803e3d5ffd5b5050602654602554604051670de0b6b3a764000081526001600160a01b039283169450911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36025546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b158015620016b1575f80fd5b505af1158015620016c4573d5f803e3d5ffd5b505050507f612baef0082f9abcf6dc7b491d75346418381b75756830d7029939026d1b46b981604051620016f9919062005369565b60405180910390a16040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562001778575f80fd5b505af11580156200178b573d5f803e3d5ffd5b50506025546024546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d0a102609350620017ee92640100000000909204909116905f908990339060040162005917565b5f604051808303815f87803b15801562001806575f80fd5b505af115801562001819573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200186a575f80fd5b505af11580156200187d573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200191f95506401000000009092041692506370a0823191015b602060405180830381865afa158015620018f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001918919062005599565b5f62003256565b602480546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620019c793640100000000909304909116916370a0823191015b602060405180830381865afa15801562001992573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620019b8919062005599565b670de0b6b3a764000062003256565b5050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562001a2657602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162001a07575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562001b6f575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001b57578382905f5260205f2001805462001ac59062005b0a565b80601f016020809104026020016040519081016040528092919081815260200182805462001af39062005b0a565b801562001b425780601f1062001b185761010080835404028352916020019162001b42565b820191905f5260205f20905b81548152906001019060200180831162001b2457829003601f168201915b50505050508152602001906001019062001aa5565b50505050815250508152602001906001019062001a53565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562001a2657602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001a07575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562001a2657602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001a07575050505050905090565b606062001c468383620032d3565b90505b92915050565b62001c7d8167ffffffffffffffff165f678ac7230489e8000067ffffffffffffffff62000d5c9190620056f3565b90505f62001c9482670de0b6b3a764000062005717565b60245460255467ffffffffffffffff92909216925062001cca916001600160a01b0364010000000090920482169116836200320f565b6021545f9062001cdf9060070b600a62005872565b6020549091506108019063312f619f906001600160a01b0381169074010000000000000000000000000000000000000000900467ffffffffffffffff1662001d3085670de0b6b3a7640000620058b6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015267ffffffffffffffff91821660248401521660448201526064015f604051808303815f87803b15801562001d9e575f80fd5b505af115801562001db1573d5f803e3d5ffd5b505060275460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201525f925082915060340160408051601f198184030181529082905262001e0f929160200162005975565b60408051601f198184030181529190526026549091505f9062001e43908290619ce19087906001600160a01b031662000f64565b602480546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03166004820152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b15801562001ebc575f80fd5b505af115801562001ecf573d5f803e3d5ffd5b505060208054602554604051670de0b6b3a764000081526001600160a01b039283169550911692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a367ffffffffffffffff85161562001f875760275460255460405167ffffffffffffffff881681526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562001ffe575f80fd5b505af115801562002011573d5f803e3d5ffd5b50506025546024546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d0a1026093506200207492640100000000909204909116905f908690339060040162005917565b5f604051808303815f87803b1580156200208c575f80fd5b505af11580156200209f573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620020f0575f80fd5b505af115801562002103573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200216195506401000000009092041692506370a082319101620018d6565b602480546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620019c793640100000000909304909116916370a082319101602060405180830381865afa158015620021d3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620021f9919062005599565b8667ffffffffffffffff1662003256565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562001b6f578382905f5260205f2090600202016040518060400160405290815f82018054620022609062005b0a565b80601f01602080910402602001604051908101604052809291908181526020018280546200228e9062005b0a565b8015620022dd5780601f10620022b357610100808354040283529160200191620022dd565b820191905f5260205f20905b815481529060010190602001808311620022bf57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200237657602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620023225790505b505050505081525050815260200190600101906200222d565b602454602554620023be916001600160a01b0364010000000090910481169116670de0b6b3a76400006200320f565b604080516020810182525f81529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ed4895a0000000000000000000000000000000000000000000000000000000090620024229060240160208082525f9082015260400190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620024969160040162005369565b5f604051808303815f87803b158015620024ae575f80fd5b505af1158015620024c1573d5f803e3d5ffd5b50506040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e160048201819052319250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506306447d56906024015f604051808303815f87803b15801562002540575f80fd5b505af115801562002553573d5f803e3d5ffd5b50506025546001600160a01b0316915063d0a1026090506200257c600164174876e80062005717565b67ffffffffffffffff16602460049054906101000a90046001600160a01b03165f801b86336040518663ffffffff1660e01b8152600401620025c2949392919062005917565b5f604051808303818588803b158015620025da575f80fd5b505af1158015620025ed573d5f803e3d5ffd5b5050505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200263f575f80fd5b505af115801562002652573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620026b095506401000000009092041692506370a08231910162001976565b602554620026c9906001600160a01b0316315f62003256565b620026ea73f9e1815f151024bde4b7c10bac10e8ba9f6b53e1318262003256565b5050565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562001b6f578382905f5260205f20018054620027319062005b0a565b80601f01602080910402602001604051908101604052809291908181526020018280546200275f9062005b0a565b8015620027ae5780601f106200278457610100808354040283529160200191620027ae565b820191905f5260205f20905b8154815290600101906020018083116200279057829003601f168201915b50505050508152602001906001019062002711565b620027d5600164174876e80062005717565b81565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562001b6f575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620028b957602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620028655790505b50505050508152505081526020019060010190620027fb565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562001b6f575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620029b357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200295f5790505b50505050508152505081526020019060010190620028f5565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562001b6f578382905f5260205f2001805462002a0f9062005b0a565b80601f016020809104026020016040519081016040528092919081815260200182805462002a3d9062005b0a565b801562002a8c5780601f1062002a625761010080835404028352916020019162002a8c565b820191905f5260205f20905b81548152906001019060200180831162002a6e57829003601f168201915b505050505081526020019060010190620029ef565b6008545f9060ff161562002ab9575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801562002b48573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002b6e919062005599565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001a2657602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001a07575050505050905090565b60245460255462002c04916001600160a01b0364010000000090910481169116670de0b6b3a76400006200320f565b5f62002c17600164174876e80062005717565b60275460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201527f6572726f72000000000000000000000000000000000000000000000000000000603482015260390160408051601f198184030181529082905262002c939291602001620058cc565b60408051601f198184030181529082905260265460601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015291505f9062002d17908290619ce190670de0b6b3a764000090603401604051602081830303815290604052805190602001208660405160200162000f78929190620058f0565b6040517f47d7694f0000000000000000000000000000000000000000000000000000000081529091505f9030906347d7694f9062002d5a90859060040162005369565b5f60405180830381865afa15801562002d75573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002d9e919081019062005a69565b90505f8180602001905181019062002db7919062005a9f565b9150505f6309b3473160e01b82835160405160240162002dd992919062005ae7565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000949094169390931790925260255491517f86b9620d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002eaa575f80fd5b505af115801562002ebd573d5f803e3d5ffd5b505050507f612baef0082f9abcf6dc7b491d75346418381b75756830d7029939026d1b46b98160405162002ef2919062005369565b60405180910390a16040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152323190737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562002f74575f80fd5b505af115801562002f87573d5f803e3d5ffd5b50506025546001600160a01b0316915063d0a10260905062002fb0600164174876e80062005717565b67ffffffffffffffff16602460049054906101000a90046001600160a01b03165f801b89336040518663ffffffff1660e01b815260040162002ff6949392919062005917565b5f604051808303818588803b1580156200300e575f80fd5b505af115801562003021573d5f803e3d5ffd5b5050505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003073575f80fd5b505af115801562003086573d5f803e3d5ffd5b50620030ba92505032319050620030a4600164174876e80062005717565b6200120d9067ffffffffffffffff16846200595f565b602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200311693640100000000909304909116916370a08231910162001976565b505050505050565b620031938160405160240162003135919062005369565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526200331f565b50565b5f62001c49827320000000000000000000000000000000000000006200595f565b5f620031c584848462003331565b9050620032086040518060400160405280600c81526020017f426f756e6420726573756c7400000000000000000000000000000000000000008152508262003594565b9392505050565b6200321d8383835f6200360b565b505050565b6060848484846040516020016200323d949392919062005b5d565b6040516020818303038152906040529050949350505050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015f6040518083038186803b158015620032c0575f80fd5b505afa15801562003116573d5f803e3d5ffd5b6060620032e482604c818662005bdc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b6200319381620038945b63ffffffff16565b5f81831115620033c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e000060648201526084015b60405180910390fd5b828410158015620033d95750818411155b15620033e757508262003208565b5f620033f4848462005c05565b620034019060016200595f565b9050600385111580156200341457508481115b156200342f576200342685856200595f565b91505062003208565b6200345c60037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005c05565b851015801562003496575062003493857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005c05565b81115b15620034d457620034c8857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005c05565b62003426908462005c05565b8285111562003533575f620034ea848762005c05565b90505f620034f9838362005c1b565b9050805f036200350f5784935050505062003208565b60016200351d82886200595f565b62003529919062005c05565b935050506200358c565b838510156200358c575f62003549868662005c05565b90505f62003558838362005c1b565b9050805f036200356e5785935050505062003208565b6200357a818662005c05565b620035879060016200595f565b935050505b509392505050565b620026ea8282604051602401620035ad92919062005ae7565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc00000000000000000000000000000000000000000000000000000000179052620038b3565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f928716916200368e9162005c31565b5f60405180830381855afa9150503d805f8114620036c8576040519150601f19603f3d011682016040523d82523d5f602084013e620036cd565b606091505b509150505f81806020019051810190620036e8919062005599565b90506200373b8462003734876200372d7f70a082310000000000000000000000000000000000000000000000000000000062003726600d8d620038c2565b90620038ff565b9062003937565b9062003962565b8215620031165760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f916001600160a01b03891691620037b3919062005c31565b5f60405180830381855afa9150503d805f8114620037ed576040519150601f19603f3d011682016040523d82523d5f602084013e620037f2565b606091505b509150505f818060200190518101906200380d919062005599565b905082861015620038385762003824868462005c05565b62003830908262005c05565b905062003853565b62003844838762005c05565b6200385090826200595f565b90505b6200388a81620037347f18160ddd0000000000000000000000000000000000000000000000000000000062003726600d8d620038c2565b5050505050505050565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b62003193816200396e62003329565b6004820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555f8262001c46565b6002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790555f8262001c46565b6001808301805491820181555f908152602081206001600160a01b0384169201919091558262001c46565b620026ea82826200398e565b80516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b6004820154600283015460038401546001600160a01b039092169160e09190911b905f620039bc8662003ef1565b6001600160a01b0385165f908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519394509262003a1491859187910162005c4e565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff1662003a525762003a50865f62004004565b505b6001600160a01b0384165f908152602087815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832090519091839162003aaa91869188910162005c4e565b6040516020818303038152906040528051906020012081526020019081526020015f2090505f8160020154826001015462003ae691906200595f565b111562003c15575f8160020154826001015462003b0491906200595f565b62003b129061010062005c05565b62003b1f90600262005c71565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810182905290915081881090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa15801562003b8d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262003bb6919081019062005c7e565b60405160200162003bc8919062005cc8565b6040516020818303038152906040529062003c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620033bf919062005369565b50505b80546040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101919091525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562003c91573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003cb7919062005599565b60018381015460028501549293505f92908101610100039190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b1983169089901b1783546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a166004820152602481019190915260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003d7e575f80fd5b505af115801562003d91573d5f803e3d5ffd5b505050505f8062003da28b62004019565b9150915081158062003db45750898114155b1562003ed95784546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481019190915260448101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003e37575f80fd5b505af115801562003e4a573d5f803e3d5ffd5b50506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a2046616960448201527f6c656420746f2077726974652076616c75652e0000000000000000000000000060648201526084019150620033bf9050565b62003ee48b620040ea565b5050505050505050505050565b606081600701805462003f049062005b0a565b90505f0362003f6a5762001c498260010180548060200260200160405190810160405280929190818152602001828054801562003f5f57602002820191905f5260205f20905b81548152602001906001019080831162003f4a575b5050505050620040f5565b81600701805462003f7b9062005b0a565b80601f016020809104026020016040519081016040528092919081815260200182805462003fa99062005b0a565b801562003ff85780601f1062003fce5761010080835404028352916020019162003ff8565b820191905f5260205f20905b81548152906001019060200180831162003fda57829003601f168201915b50505050509050919050565b5f62004011838362004199565b549392505050565b60028101545f908190819060e01b620040328562003ef1565b6040516020016200404592919062005d5a565b60408051601f198184030181529082905260048601549092505f9182916001600160a01b0316906200407990859062005c31565b5f60405180830381855afa9150503d805f8114620040b3576040519150601f19603f3d011682016040523d82523d5f602084013e620040b8565b606091505b50915091505f620040dc8288600301546020620040d6919062005da3565b62004a57565b929792965091945050505050565b620031938162004aea565b60605f8251602062004108919062005da3565b67ffffffffffffffff81111562004123576200412362005992565b6040519080825280601f01601f1916602001820160405280156200414e576020820181803683370190505b5090505f5b835181101562004192575f84828151811062004173576200417362005dbd565b6020908102919091018101518382028501909101525060010162004153565b5092915050565b6004820154600283015460038401545f926001600160a01b03169160e01b9083620041c48762003ef1565b6001600160a01b0385165f908152602089815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051939450926200421c91859187910162005c4e565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff1615620042e55785156200425f576200425f8762004aea565b6001600160a01b0384165f908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845282528083209051909291620042b691859187910162005c4e565b6040516020818303038152906040528051906020012081526020019081526020015f2094505050505062001c49565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663266cf1096040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562004340575f80fd5b505af115801562004353573d5f803e3d5ffd5b505050505f620043638862004019565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b03881660048201529092505f9150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024015f604051808303815f875af1158015620043d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262004402919081019062005e70565b50905080515f036200449957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620033bf565b80515b5f620044a88262005ecd565b91508110620048ac575f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663667f9d7089858581518110620044f957620044f962005dbd565b60200260200101516040518363ffffffff1660e01b8152600401620045339291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200454f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004575919062005599565b905080620045df577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588848481518110620045b457620045b462005dbd565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b620046078b848481518110620045f957620045f962005dbd565b602002602001015162004b8f565b6200461357506200449c565b60068b01545f90819060ff161562004667575f6200464e8e87878151811062004640576200464062005dbd565b602002602001015162004ddf565b90945092509050806200466557505050506200449c565b505b6001828201610100031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b8316811c868114620046ab57505050506200449c565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620046e392919062005c4e565b604051602081830303815290604052805190602001208989815181106200470e576200470e62005dbd565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a160405180608001604052808787815181106200478a576200478a62005dbd565b60200260200101515f1c8152602001848152602001838152602001600115158152508e5f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f8c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8a8c6040516020016200483392919062005c4e565b60408051808303601f1901815291815281516020928301208352828201939093529082015f2083518155908301516001820155908201516002820155606090910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055505050505b506001600160a01b0386165f90815260208a815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452825280832090519092916200490491879189910162005c4e565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620049bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260