@latticexyz/world-modules 2.0.0-main-57d8965d → 2.0.0-main-de2decea

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"_executeFromRootSystemA","inputs":[{"name":"systemId","type":"bytes32","internalType":"ResourceId"},{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"_executeFromRootSystemA","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"_executeFromSystemA","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"_executeFromSystemA","inputs":[{"name":"systemId","type":"bytes32","internalType":"ResourceId"},{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"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":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"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":"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":"testCallNonRootFromNonRootMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallNonRootFromRootMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromNonRootEcho","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromNonRootMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromNonRootWorld","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromNonRootWorldSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromRootEcho","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromRootMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromRootWorld","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromRootWorldSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromNonRootEcho","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromNonRootWorld","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromNonRootWorldSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromRootEcho","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromRootWorld","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromRootWorldSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c5534801561003157600080fd5b506201788880620000436000396000f3fe60806040523480156200001157600080fd5b50600436106200020d5760003560e01c806354dcf1321162000125578063aec62e1411620000af578063e20c9f71116200007a578063e20c9f7114620003ac578063e78c82e314620003b6578063ed3a185614620003c0578063fa7626d414620003ca57600080fd5b8063aec62e141462000373578063b5508aa9146200037d578063ba414fa61462000387578063c0310bf614620003a257600080fd5b806385226c8111620000f057806385226c81146200033c57806385dc086814620003555780638d95e4d6146200035f578063916a17c6146200036957600080fd5b806354dcf13214620003055780635af8de30146200030f57806366d9a9a0146200031957806378845560146200033257600080fd5b80632f2499f411620001a75780633e5e3c2311620001725780633e5e3c2314620002d05780633f7286f414620002da5780633fa01b9814620002e45780634478d61814620002fb57600080fd5b80632f2499f414620002a857806332d7d50514620002b25780633424e1c114620002bc5780633911733c14620002c657600080fd5b8063101f99a311620001e8578063101f99a31462000257578063199e1d17146200026e5780631ed7831c14620002855780632cb6867d146200029e57600080fd5b8063055e33e81462000212578063075d7777146200021e5780630a9254e4146200024d575b600080fd5b6200021c620003d8565b005b620002356200022f366004620026f6565b620004e1565b6040516200024491906200278b565b60405180910390f35b6200021c620005ef565b6200023562000268366004620027a0565b62000c94565b620002356200027f366004620026f6565b62000da5565b6200028f62000dd1565b604051620002449190620027eb565b6200021c62000e35565b6200021c62000f05565b6200021c620010d0565b6200021c62001196565b6200021c62001231565b6200028f620012d3565b6200028f62001335565b62000235620002f5366004620027a0565b62001397565b6200021c620013c5565b6200021c62001467565b6200021c62001611565b62000323620016d8565b6040516200024491906200283a565b6200021c620017cb565b6200034662001843565b60405162000244919062002909565b6200021c6200191d565b6200021c620019bf565b6200032362001a8f565b6200021c62001b79565b6200034662001c14565b6200039162001cee565b604051901515815260200162000244565b6200021c62001e3a565b6200028f62001eb2565b6200021c62001f14565b6200021c62001fb6565b600054620003919060ff1681565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200042757600080fd5b505af11580156200043c573d6000803e3d6000fd5b505060275460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084015b60408051601f198184030181529190526020810180516001600160e01b031663f15da72960e01b17905262001397565b9050620004de81806020019051810190620004ba9190620029a5565b6040518060400160405280600581526020016468656c6c6f60d81b81525062002058565b50565b601f54602480546040516060936001600160a01b031692633ae7af0892916200050d918791016200278b565b60408051601f198184030181529181526020820180516001600160e01b03167f96f09da600000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526200058a929190600401620029f3565b6000604051808303816000875af1158015620005aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620005d49190810190620029a5565b806020019051810190620005e99190620029a5565b92915050565b6000604051620005ff90620025aa565b604051809103906000f0801580156200061c573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de862000638620021be565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200069257600080fd5b505af1158015620006a7573d6000803e3d6000fd5b5050601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555050604051620006e190620025b8565b604051809103906000f080158015620006fe573d6000803e3d6000fd5b506020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040516200073a90620025b8565b604051809103906000f08015801562000757573d6000803e3d6000fd5b506021805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040516200079390620025b8565b604051809103906000f080158015620007b0573d6000803e3d6000fd5b506022805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055604051620007ec90620025b8565b604051809103906000f08015801562000809573d6000803e3d6000fd5b506023805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556200088961737960f01b7f6e616d65737061636541000000000000000000000000000000000000000000007f73797374656d4100000000000000000000000000000000000000000000000000620022c9565b602455620008de61737960f01b7f6e616d65737061636542000000000000000000000000000000000000000000007f73797374656d4200000000000000000000000000000000000000000000000000620022c9565b6025556200091461737960f01b60007f73797374656d4100000000000000000000000000000000000000000000000000620022c9565b6026556200094a61737960f01b60007f73797374656d4200000000000000000000000000000000000000000000000000620022c9565b602755601f546024546001600160a01b039091169063b29e408990620009af907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b8152600401620009ce91815260200190565b600060405180830381600087803b158015620009e957600080fd5b505af1158015620009fe573d6000803e3d6000fd5b5050601f546025546001600160a01b03909116925063b29e4089915062000a64907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b815260040162000a8391815260200190565b600060405180830381600087803b15801562000a9e57600080fd5b505af115801562000ab3573d6000803e3d6000fd5b5050601f5460248054602054604051633350b6a960e01b815260048101929092526001600160a01b03908116928201929092526001604482015291169250633350b6a99150606401600060405180830381600087803b15801562000b1657600080fd5b505af115801562000b2b573d6000803e3d6000fd5b5050601f54602554602154604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000b8c57600080fd5b505af115801562000ba1573d6000803e3d6000fd5b5050601f54602654602254604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000c0257600080fd5b505af115801562000c17573d6000803e3d6000fd5b5050601f54602754602354604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000c7857600080fd5b505af115801562000c8d573d6000803e3d6000fd5b5050505050565b601f546026546040516060926001600160a01b031691633ae7af089162000cc29087908790602401620029f3565b60408051601f198184030181529181526020820180516001600160e01b03167f3ae7af0800000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815262000d3f929190600401620029f3565b6000604051808303816000875af115801562000d5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d899190810190620029a5565b80602001905181019062000d9e9190620029a5565b9392505050565b601f546026546040516060926001600160a01b031691633ae7af08916200050d9086906024016200278b565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000e2b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e0c575b5050505050905090565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e8457600080fd5b505af115801562000e99573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062001397565b9050620004de8180602001905181019062000ef3919062002a0e565b601f546001600160a01b031662002351565b601f54602554604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a4015b6020604051808303816000875af115801562000f98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbe919062002a39565b905060008160405160240162000fed9060208082526005908201526468656c6c6f60d81b604082015260600190565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252905163ca669fa760e01b81526110886004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200108957600080fd5b505af11580156200109e573d6000803e3d6000fd5b505050506000620010af8262000da5565b9050620010cb81806020019051810190620004ba9190620029a5565b505050565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200111f57600080fd5b505af115801562001134573d6000803e3d6000fd5b505060255460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084015b60408051601f198184030181529190526020810180516001600160e01b031663f15da72960e01b17905262000c94565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620011e557600080fd5b505af1158015620011fa573d6000803e3d6000fd5b505060275460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e925060840162001166565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200128057600080fd5b505af115801562001295573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062000c94565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b601f54602480546040516060936001600160a01b031692633ae7af08929162000cc2918891889101620029f3565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200141457600080fd5b505af115801562001429573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062001397565b601f54602554604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a4015b6020604051808303816000875af1158015620014fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001520919062002a39565b90506000816040516024016200154f9060208082526005908201526468656c6c6f60d81b604082015260600190565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252905163ca669fa760e01b81526110886004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620015eb57600080fd5b505af115801562001600573d6000803e3d6000fd5b505050506000620010af82620004e1565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200166057600080fd5b505af115801562001675573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b17905260009350620016b3925062000c94565b9050620004de81806020019051810190620016cf919062002a0e565b61108862002351565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620017c25760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620017a957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200176a5790505b50505050508152505081526020019060010190620016fc565b50505050905090565b601f54602754604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a40162000f78565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620017c2578382906000526020600020018054620018899062002a7d565b80601f0160208091040260200160405190810160405280929190818152602001828054620018b79062002a7d565b8015620019085780601f10620018dc5761010080835404028352916020019162001908565b820191906000526020600020905b815481529060010190602001808311620018ea57829003601f168201915b50505050508152602001906001019062001867565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200196c57600080fd5b505af115801562001981573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062000c94565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a0e57600080fd5b505af115801562001a23573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b1790526000935062001a61925062001397565b9050620004de8180602001905181019062001a7d919062002a0e565b6020546001600160a01b031662002351565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620017c25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b6057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001b215790505b5050505050815250508152602001906001019062001ab3565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001bc857600080fd5b505af115801562001bdd573d6000803e3d6000fd5b505060255460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084016200046e565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620017c257838290600052602060002001805462001c5a9062002a7d565b80601f016020809104026020016040519081016040528092919081815260200182805462001c889062002a7d565b801562001cd95780601f1062001cad5761010080835404028352916020019162001cd9565b820191906000526020600020905b81548152906001019060200180831162001cbb57829003601f168201915b50505050508152602001906001019062001c38565b60008054610100900460ff161562001d0f5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001e355760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001db7917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002ad2565b60408051601f198184030181529082905262001dd39162002b1c565b6000604051808303816000865af19150503d806000811462001e12576040519150601f19603f3d011682016040523d82523d6000602084013e62001e17565b606091505b509150508080602001905181019062001e31919062002b3a565b9150505b919050565b601f54602754604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a401620014da565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f6357600080fd5b505af115801562001f78573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b1790526000935062001a61925062001397565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200200557600080fd5b505af11580156200201a573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b17905260009350620016b3925062000c94565b806040516020016200206b919062002b1c565b604051602081830303815290604052805190602001208260405160200162002094919062002b1c565b6040516020818303038152906040528051906020012014620021ba577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620021369060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200216f919062002b5e565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620021a8919062002bb0565b60405180910390a1620021ba62002463565b5050565b6000604051620021ce90620025c6565b604051809103906000f080158015620021eb573d6000803e3d6000fd5b50604051620021fa90620025d4565b604051809103906000f08015801562002217573d6000803e3d6000fd5b506040516200222690620025e2565b604051809103906000f08015801562002243573d6000803e3d6000fd5b506040516200225290620025f0565b604051809103906000f0801580156200226f573d6000803e3d6000fd5b506040516200227e90620025fe565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022c3573d6000803e3d6000fd5b50905090565b6000620022d96070601062002bee565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316901c601084901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167fffff0000000000000000000000000000000000000000000000000000000000008616171790509392505050565b806001600160a01b0316826001600160a01b031614620021ba577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620023f19060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200242a919062002c29565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620021a8919062002c7e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200257c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002517929160200162002ad2565b60408051601f1981840301815290829052620025339162002b1c565b6000604051808303816000865af19150503d806000811462002572576040519150601f19603f3d011682016040523d82523d6000602084013e62002577565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b61553a8062002cbd83390190565b61154280620081f783390190565b611a79806200973983390190565b6118cc806200b1b283390190565b610b15806200ca7e83390190565b61567c806200d59383390190565b614c6d8062012c0f83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200266757620026676200260c565b604052919050565b600067ffffffffffffffff8211156200268c576200268c6200260c565b50601f01601f191660200190565b600082601f830112620026ac57600080fd5b8135620026c3620026bd826200266f565b6200263b565b818152846020838601011115620026d957600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156200270957600080fd5b813567ffffffffffffffff8111156200272157600080fd5b6200272f848285016200269a565b949350505050565b60005b83811015620027545781810151838201526020016200273a565b50506000910152565b600081518084526200277781602086016020860162002737565b601f01601f19169290920160200192915050565b60208152600062000d9e60208301846200275d565b60008060408385031215620027b457600080fd5b82359150602083013567ffffffffffffffff811115620027d357600080fd5b620027e1858286016200269a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156200282e5783516001600160a01b03168352928401929184019160010162002807565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620028fa57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620028e45783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190620028a0565b50978a0197955050509187019160010162002862565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200296257603f198886030184526200294f8583516200275d565b9450928501929085019060010162002930565b5092979650505050505050565b600062002980620026bd846200266f565b90508281528383830111156200299557600080fd5b62000d9e83602083018462002737565b600060208284031215620029b857600080fd5b815167ffffffffffffffff811115620029d057600080fd5b8201601f81018413620029e257600080fd5b6200272f848251602084016200296f565b8281526040602082015260006200272f60408301846200275d565b60006020828403121562002a2157600080fd5b81516001600160a01b038116811462000d9e57600080fd5b60006020828403121562002a4c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811462000d9e57600080fd5b600181811c9082168062002a9257607f821691505b60208210810362002acc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002b0e81600485016020870162002737565b919091016004019392505050565b6000825162002b3081846020870162002737565b9190910192915050565b60006020828403121562002b4d57600080fd5b8151801515811462000d9e57600080fd5b60408152600062002b9c60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200272f81856200275d565b60408152600062002b9c60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b80820180821115620005e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60408152600062002c6760408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062002c6760408301600a81527f202020202052696768740000000000000000000000000000000000000000000060208201526040019056fe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611522806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806345ec935411610076578063d737d0c71161005b578063d737d0c71461014b578063e1af802c14610153578063f15da7291461015b57600080fd5b806345ec93541461012557806396f09da61461013857600080fd5b806301ffc9a7146100a8578063119df25f146100d057806330b67baa146100fd5780633ae7af0814610105575b600080fd5b6100bb6100b6366004610f21565b61016c565b60405190151581526020015b60405180910390f35b6100d8610205565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c7565b6100d8610214565b610118610113366004611030565b61021e565b6040516100c791906110c7565b604051601f1936013581526020016100c7565b6101186101463660046110da565b610231565b6100d861023c565b6100d8610246565b61011861016936600461110f565b90565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ff57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061020f610250565b905090565b600061020f610246565b606061022a8383610281565b9392505050565b60606101ff826103f3565b600061020f610205565b600061020f6104a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061016957503390565b6060600061028d610246565b905073ffffffffffffffffffffffffffffffffffffffff811630036103505760006102b7856104ed565b50905073ffffffffffffffffffffffffffffffffffffffff811661031c57846102df86610611565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610313929190611158565b60405180910390fd5b6000610336610329610250565b36601f190135848861074e565b945090508061034857610348846107cf565b5050506101ff565b6040517f3ae7af0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690633ae7af08906103a49087908790600401611158565b6000604051808303816000875af11580156103c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103eb91908101906111b6565b949350505050565b6060600080610409610404856111eb565b6107d7565b91509150816000801b0361046f576040517ffdde54e20000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000600035166004820152602401610313565b6020840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16821790526103eb8285610281565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806104e8573391505090565b919050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106105275761052761123b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d730000000000000000000000000000000000000000000000000060308201528151808203909301835281019052600090819081906105f3906105cd90611251565b857e1502001401000000000000000000000000000000000000000000000000000061090d565b9250925092506106048383836109f7565b9550955050505050915091565b606081601081901b600061062483610a0f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561067f5761067a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a26565b6106b6565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156106ec576106e783610a26565b610723565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161073593929190611278565b6040516020818303038152906040529350505050919050565b600060608373ffffffffffffffffffffffffffffffffffffffff16610774848888610ad4565b6040516107819190611306565b600060405180830381855af49150503d80600081146107bc576040519150601f19603f3d011682016040523d82523d6000602084013e6107c1565b606091505b509097909650945050505050565b805160208201fd5b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108305761083061123b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906108fc906108d690611251565b857e2402002004000000000000000000000000000000000000000000000000000061090d565b925092509250610604838383610b03565b606060006060600061091d6104a1565b90503073ffffffffffffffffffffffffffffffffffffffff82160361095357610947878787610b0f565b935093509350506109ee565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd906109a9908a908a908a90600401611322565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109479190810190611379565b93509350939050565b600080610a0385610c17565b90969095509350505050565b6000610a1d607060106113fc565b9190911b919050565b606060005b6010811015610a95577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610a955780610a8d8161140f565b915050610a2b565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806103eb565b6060838383604051602001610aeb93929190611429565b60405160208183030381529060405290509392505050565b600080610a0385610c36565b6060600060606000610b2085610c48565b9050610b2d878783610c6b565b93506000610b3a86610cad565b90508015610c0c57610b4c8888610cea565b935066ffffffffffffff841667ffffffffffffffff811115610b7057610b70610f63565b6040519080825280601f01601f191660200182016040528015610b9a576020820181803683370190505b5092506020830160005b828160ff161015610c09576000610bbc8b8b84610cfd565b90506000610bd9888460ff166028026038011c64ffffffffff1690565b9050610be88260008387610d7d565b610bf281856113fc565b935050508080610c019061147b565b915050610ba4565b50505b505093509350939050565b6020810151603482015160609190911c9060009060f81c5b9050915091565b60208101516040820151600090610c2f565b60006008610c586002602061149a565b610c6291906114ad565b9190911c919050565b606081600003610c8a575060408051602081019091526000815261022a565b6000610c968585610e4a565b9050610ca481600085610ea0565b95945050505050565b60006008600180610cc06002602061149a565b610cca919061149a565b610cd4919061149a565b610cde91906114ad565b8260ff911c1692915050565b600061022a610cf98484610ecb565b5490565b60008383604051602001610d129291906114c4565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215610e065760208310610da757602083048401935060208381610da357610da36114ff565b0692505b8215610e06576020839003600081841015610dcb5750600019600884021c19610dd6565b50600019600882021c195b8554600886021b811984511682821617845250818411610df7575050610e44565b50600194909401939182900391015b5b60208210610e285783548152600190930192601f1990910190602001610e07565b8115610e445780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610e5f9291906114c4565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f8484010116604052828252610ec385858584610d7d565b509392505050565b60008282604051602001610ee09291906114c4565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060208284031215610f3357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461022a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fa257610fa2610f63565b604052919050565b600067ffffffffffffffff821115610fc457610fc4610f63565b50601f01601f191660200190565b6000610fe5610fe084610faa565b610f79565b9050828152838383011115610ff957600080fd5b828260208301376000602084830101529392505050565b600082601f83011261102157600080fd5b61022a83833560208501610fd2565b6000806040838503121561104357600080fd5b82359150602083013567ffffffffffffffff81111561106157600080fd5b61106d85828601611010565b9150509250929050565b60005b8381101561109257818101518382015260200161107a565b50506000910152565b600081518084526110b3816020860160208601611077565b601f01601f19169290920160200192915050565b60208152600061022a602083018461109b565b6000602082840312156110ec57600080fd5b813567ffffffffffffffff81111561110357600080fd5b6103eb84828501611010565b60006020828403121561112157600080fd5b813567ffffffffffffffff81111561113857600080fd5b8201601f8101841361114957600080fd5b6103eb84823560208401610fd2565b8281526040602082015260006103eb604083018461109b565b600082601f83011261118257600080fd5b8151611190610fe082610faa565b8181528460208386010111156111a557600080fd5b6103eb826020830160208701611077565b6000602082840312156111c857600080fd5b815167ffffffffffffffff8111156111df57600080fd5b6103eb84828501611171565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156112335780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015611272576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516112d9816003860160208901611077565b8084019050816003820152845191506112f9826004830160208801611077565b0160040195945050505050565b60008251611318818460208701611077565b9190910192915050565b6000606082018583526020606081850152818651808452608086019150828801935060005b8181101561136357845183529383019391830191600101611347565b5050809350505050826040830152949350505050565b60008060006060848603121561138e57600080fd5b835167ffffffffffffffff808211156113a657600080fd5b6113b287838801611171565b94506020860151935060408601519150808211156113cf57600080fd5b506113dc86828701611171565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ff576101ff6113e6565b60006000198203611422576114226113e6565b5060010190565b6000845161143b818460208901611077565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600060ff821660ff8103611491576114916113e6565b60010192915050565b818103818111156101ff576101ff6113e6565b80820281158282048414176101ff576101ff6113e6565b82815260006020808301845182860160005b828110156114f2578151845292840192908401906001016114d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000aa164736f6c6343000815000a","sourceMap":"1403:7562:200:-:0;;;1572:26:101;;;1594:4;-1:-1:-1;;1572:26:101;;;;;;;;3126:44:104;;;;;;;;;;;228:9:0;186:51;;1403:7562:200;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b50600436106200020d5760003560e01c806354dcf1321162000125578063aec62e1411620000af578063e20c9f71116200007a578063e20c9f7114620003ac578063e78c82e314620003b6578063ed3a185614620003c0578063fa7626d414620003ca57600080fd5b8063aec62e141462000373578063b5508aa9146200037d578063ba414fa61462000387578063c0310bf614620003a257600080fd5b806385226c8111620000f057806385226c81146200033c57806385dc086814620003555780638d95e4d6146200035f578063916a17c6146200036957600080fd5b806354dcf13214620003055780635af8de30146200030f57806366d9a9a0146200031957806378845560146200033257600080fd5b80632f2499f411620001a75780633e5e3c2311620001725780633e5e3c2314620002d05780633f7286f414620002da5780633fa01b9814620002e45780634478d61814620002fb57600080fd5b80632f2499f414620002a857806332d7d50514620002b25780633424e1c114620002bc5780633911733c14620002c657600080fd5b8063101f99a311620001e8578063101f99a31462000257578063199e1d17146200026e5780631ed7831c14620002855780632cb6867d146200029e57600080fd5b8063055e33e81462000212578063075d7777146200021e5780630a9254e4146200024d575b600080fd5b6200021c620003d8565b005b620002356200022f366004620026f6565b620004e1565b6040516200024491906200278b565b60405180910390f35b6200021c620005ef565b6200023562000268366004620027a0565b62000c94565b620002356200027f366004620026f6565b62000da5565b6200028f62000dd1565b604051620002449190620027eb565b6200021c62000e35565b6200021c62000f05565b6200021c620010d0565b6200021c62001196565b6200021c62001231565b6200028f620012d3565b6200028f62001335565b62000235620002f5366004620027a0565b62001397565b6200021c620013c5565b6200021c62001467565b6200021c62001611565b62000323620016d8565b6040516200024491906200283a565b6200021c620017cb565b6200034662001843565b60405162000244919062002909565b6200021c6200191d565b6200021c620019bf565b6200032362001a8f565b6200021c62001b79565b6200034662001c14565b6200039162001cee565b604051901515815260200162000244565b6200021c62001e3a565b6200028f62001eb2565b6200021c62001f14565b6200021c62001fb6565b600054620003919060ff1681565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200042757600080fd5b505af11580156200043c573d6000803e3d6000fd5b505060275460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084015b60408051601f198184030181529190526020810180516001600160e01b031663f15da72960e01b17905262001397565b9050620004de81806020019051810190620004ba9190620029a5565b6040518060400160405280600581526020016468656c6c6f60d81b81525062002058565b50565b601f54602480546040516060936001600160a01b031692633ae7af0892916200050d918791016200278b565b60408051601f198184030181529181526020820180516001600160e01b03167f96f09da600000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526200058a929190600401620029f3565b6000604051808303816000875af1158015620005aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620005d49190810190620029a5565b806020019051810190620005e99190620029a5565b92915050565b6000604051620005ff90620025aa565b604051809103906000f0801580156200061c573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de862000638620021be565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200069257600080fd5b505af1158015620006a7573d6000803e3d6000fd5b5050601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555050604051620006e190620025b8565b604051809103906000f080158015620006fe573d6000803e3d6000fd5b506020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040516200073a90620025b8565b604051809103906000f08015801562000757573d6000803e3d6000fd5b506021805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040516200079390620025b8565b604051809103906000f080158015620007b0573d6000803e3d6000fd5b506022805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055604051620007ec90620025b8565b604051809103906000f08015801562000809573d6000803e3d6000fd5b506023805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556200088961737960f01b7f6e616d65737061636541000000000000000000000000000000000000000000007f73797374656d4100000000000000000000000000000000000000000000000000620022c9565b602455620008de61737960f01b7f6e616d65737061636542000000000000000000000000000000000000000000007f73797374656d4200000000000000000000000000000000000000000000000000620022c9565b6025556200091461737960f01b60007f73797374656d4100000000000000000000000000000000000000000000000000620022c9565b6026556200094a61737960f01b60007f73797374656d4200000000000000000000000000000000000000000000000000620022c9565b602755601f546024546001600160a01b039091169063b29e408990620009af907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b8152600401620009ce91815260200190565b600060405180830381600087803b158015620009e957600080fd5b505af1158015620009fe573d6000803e3d6000fd5b5050601f546025546001600160a01b03909116925063b29e4089915062000a64907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b815260040162000a8391815260200190565b600060405180830381600087803b15801562000a9e57600080fd5b505af115801562000ab3573d6000803e3d6000fd5b5050601f5460248054602054604051633350b6a960e01b815260048101929092526001600160a01b03908116928201929092526001604482015291169250633350b6a99150606401600060405180830381600087803b15801562000b1657600080fd5b505af115801562000b2b573d6000803e3d6000fd5b5050601f54602554602154604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000b8c57600080fd5b505af115801562000ba1573d6000803e3d6000fd5b5050601f54602654602254604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000c0257600080fd5b505af115801562000c17573d6000803e3d6000fd5b5050601f54602754602354604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000c7857600080fd5b505af115801562000c8d573d6000803e3d6000fd5b5050505050565b601f546026546040516060926001600160a01b031691633ae7af089162000cc29087908790602401620029f3565b60408051601f198184030181529181526020820180516001600160e01b03167f3ae7af0800000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815262000d3f929190600401620029f3565b6000604051808303816000875af115801562000d5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d899190810190620029a5565b80602001905181019062000d9e9190620029a5565b9392505050565b601f546026546040516060926001600160a01b031691633ae7af08916200050d9086906024016200278b565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000e2b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e0c575b5050505050905090565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e8457600080fd5b505af115801562000e99573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062001397565b9050620004de8180602001905181019062000ef3919062002a0e565b601f546001600160a01b031662002351565b601f54602554604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a4015b6020604051808303816000875af115801562000f98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbe919062002a39565b905060008160405160240162000fed9060208082526005908201526468656c6c6f60d81b604082015260600190565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252905163ca669fa760e01b81526110886004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200108957600080fd5b505af11580156200109e573d6000803e3d6000fd5b505050506000620010af8262000da5565b9050620010cb81806020019051810190620004ba9190620029a5565b505050565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200111f57600080fd5b505af115801562001134573d6000803e3d6000fd5b505060255460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084015b60408051601f198184030181529190526020810180516001600160e01b031663f15da72960e01b17905262000c94565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620011e557600080fd5b505af1158015620011fa573d6000803e3d6000fd5b505060275460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e925060840162001166565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200128057600080fd5b505af115801562001295573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062000c94565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b601f54602480546040516060936001600160a01b031692633ae7af08929162000cc2918891889101620029f3565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200141457600080fd5b505af115801562001429573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062001397565b601f54602554604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a4015b6020604051808303816000875af1158015620014fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001520919062002a39565b90506000816040516024016200154f9060208082526005908201526468656c6c6f60d81b604082015260600190565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252905163ca669fa760e01b81526110886004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620015eb57600080fd5b505af115801562001600573d6000803e3d6000fd5b505050506000620010af82620004e1565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200166057600080fd5b505af115801562001675573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b17905260009350620016b3925062000c94565b9050620004de81806020019051810190620016cf919062002a0e565b61108862002351565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620017c25760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620017a957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200176a5790505b50505050508152505081526020019060010190620016fc565b50505050905090565b601f54602754604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a40162000f78565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620017c2578382906000526020600020018054620018899062002a7d565b80601f0160208091040260200160405190810160405280929190818152602001828054620018b79062002a7d565b8015620019085780601f10620018dc5761010080835404028352916020019162001908565b820191906000526020600020905b815481529060010190602001808311620018ea57829003601f168201915b50505050508152602001906001019062001867565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200196c57600080fd5b505af115801562001981573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062000c94565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a0e57600080fd5b505af115801562001a23573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b1790526000935062001a61925062001397565b9050620004de8180602001905181019062001a7d919062002a0e565b6020546001600160a01b031662002351565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620017c25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b6057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001b215790505b5050505050815250508152602001906001019062001ab3565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001bc857600080fd5b505af115801562001bdd573d6000803e3d6000fd5b505060255460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084016200046e565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620017c257838290600052602060002001805462001c5a9062002a7d565b80601f016020809104026020016040519081016040528092919081815260200182805462001c889062002a7d565b801562001cd95780601f1062001cad5761010080835404028352916020019162001cd9565b820191906000526020600020905b81548152906001019060200180831162001cbb57829003601f168201915b50505050508152602001906001019062001c38565b60008054610100900460ff161562001d0f5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001e355760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001db7917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002ad2565b60408051601f198184030181529082905262001dd39162002b1c565b6000604051808303816000865af19150503d806000811462001e12576040519150601f19603f3d011682016040523d82523d6000602084013e62001e17565b606091505b509150508080602001905181019062001e31919062002b3a565b9150505b919050565b601f54602754604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a401620014da565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f6357600080fd5b505af115801562001f78573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b1790526000935062001a61925062001397565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200200557600080fd5b505af11580156200201a573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b17905260009350620016b3925062000c94565b806040516020016200206b919062002b1c565b604051602081830303815290604052805190602001208260405160200162002094919062002b1c565b6040516020818303038152906040528051906020012014620021ba577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620021369060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200216f919062002b5e565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620021a8919062002bb0565b60405180910390a1620021ba62002463565b5050565b6000604051620021ce90620025c6565b604051809103906000f080158015620021eb573d6000803e3d6000fd5b50604051620021fa90620025d4565b604051809103906000f08015801562002217573d6000803e3d6000fd5b506040516200222690620025e2565b604051809103906000f08015801562002243573d6000803e3d6000fd5b506040516200225290620025f0565b604051809103906000f0801580156200226f573d6000803e3d6000fd5b506040516200227e90620025fe565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022c3573d6000803e3d6000fd5b50905090565b6000620022d96070601062002bee565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316901c601084901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167fffff0000000000000000000000000000000000000000000000000000000000008616171790509392505050565b806001600160a01b0316826001600160a01b031614620021ba577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620023f19060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200242a919062002c29565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620021a8919062002c7e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200257c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002517929160200162002ad2565b60408051601f1981840301815290829052620025339162002b1c565b6000604051808303816000865af19150503d806000811462002572576040519150601f19603f3d011682016040523d82523d6000602084013e62002577565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b61553a8062002cbd83390190565b61154280620081f783390190565b611a79806200973983390190565b6118cc806200b1b283390190565b610b15806200ca7e83390190565b61567c806200d59383390190565b614c6d8062012c0f83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200266757620026676200260c565b604052919050565b600067ffffffffffffffff8211156200268c576200268c6200260c565b50601f01601f191660200190565b600082601f830112620026ac57600080fd5b8135620026c3620026bd826200266f565b6200263b565b818152846020838601011115620026d957600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156200270957600080fd5b813567ffffffffffffffff8111156200272157600080fd5b6200272f848285016200269a565b949350505050565b60005b83811015620027545781810151838201526020016200273a565b50506000910152565b600081518084526200277781602086016020860162002737565b601f01601f19169290920160200192915050565b60208152600062000d9e60208301846200275d565b60008060408385031215620027b457600080fd5b82359150602083013567ffffffffffffffff811115620027d357600080fd5b620027e1858286016200269a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156200282e5783516001600160a01b03168352928401929184019160010162002807565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620028fa57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620028e45783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190620028a0565b50978a0197955050509187019160010162002862565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200296257603f198886030184526200294f8583516200275d565b9450928501929085019060010162002930565b5092979650505050505050565b600062002980620026bd846200266f565b90508281528383830111156200299557600080fd5b62000d9e83602083018462002737565b600060208284031215620029b857600080fd5b815167ffffffffffffffff811115620029d057600080fd5b8201601f81018413620029e257600080fd5b6200272f848251602084016200296f565b8281526040602082015260006200272f60408301846200275d565b60006020828403121562002a2157600080fd5b81516001600160a01b038116811462000d9e57600080fd5b60006020828403121562002a4c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811462000d9e57600080fd5b600181811c9082168062002a9257607f821691505b60208210810362002acc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002b0e81600485016020870162002737565b919091016004019392505050565b6000825162002b3081846020870162002737565b9190910192915050565b60006020828403121562002b4d57600080fd5b8151801515811462000d9e57600080fd5b60408152600062002b9c60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200272f81856200275d565b60408152600062002b9c60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b80820180821115620005e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60408152600062002c6760408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062002c6760408301600a81527f202020202052696768740000000000000000000000000000000000000000000060208201526040019056fe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611522806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806345ec935411610076578063d737d0c71161005b578063d737d0c71461014b578063e1af802c14610153578063f15da7291461015b57600080fd5b806345ec93541461012557806396f09da61461013857600080fd5b806301ffc9a7146100a8578063119df25f146100d057806330b67baa146100fd5780633ae7af0814610105575b600080fd5b6100bb6100b6366004610f21565b61016c565b60405190151581526020015b60405180910390f35b6100d8610205565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c7565b6100d8610214565b610118610113366004611030565b61021e565b6040516100c791906110c7565b604051601f1936013581526020016100c7565b6101186101463660046110da565b610231565b6100d861023c565b6100d8610246565b61011861016936600461110f565b90565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ff57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061020f610250565b905090565b600061020f610246565b606061022a8383610281565b9392505050565b60606101ff826103f3565b600061020f610205565b600061020f6104a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061016957503390565b6060600061028d610246565b905073ffffffffffffffffffffffffffffffffffffffff811630036103505760006102b7856104ed565b50905073ffffffffffffffffffffffffffffffffffffffff811661031c57846102df86610611565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610313929190611158565b60405180910390fd5b6000610336610329610250565b36601f190135848861074e565b945090508061034857610348846107cf565b5050506101ff565b6040517f3ae7af0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690633ae7af08906103a49087908790600401611158565b6000604051808303816000875af11580156103c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103eb91908101906111b6565b949350505050565b6060600080610409610404856111eb565b6107d7565b91509150816000801b0361046f576040517ffdde54e20000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000600035166004820152602401610313565b6020840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16821790526103eb8285610281565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806104e8573391505090565b919050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106105275761052761123b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d730000000000000000000000000000000000000000000000000060308201528151808203909301835281019052600090819081906105f3906105cd90611251565b857e1502001401000000000000000000000000000000000000000000000000000061090d565b9250925092506106048383836109f7565b9550955050505050915091565b606081601081901b600061062483610a0f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561067f5761067a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a26565b6106b6565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156106ec576106e783610a26565b610723565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161073593929190611278565b6040516020818303038152906040529350505050919050565b600060608373ffffffffffffffffffffffffffffffffffffffff16610774848888610ad4565b6040516107819190611306565b600060405180830381855af49150503d80600081146107bc576040519150601f19603f3d011682016040523d82523d6000602084013e6107c1565b606091505b509097909650945050505050565b805160208201fd5b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108305761083061123b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906108fc906108d690611251565b857e2402002004000000000000000000000000000000000000000000000000000061090d565b925092509250610604838383610b03565b606060006060600061091d6104a1565b90503073ffffffffffffffffffffffffffffffffffffffff82160361095357610947878787610b0f565b935093509350506109ee565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd906109a9908a908a908a90600401611322565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109479190810190611379565b93509350939050565b600080610a0385610c17565b90969095509350505050565b6000610a1d607060106113fc565b9190911b919050565b606060005b6010811015610a95577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610a955780610a8d8161140f565b915050610a2b565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806103eb565b6060838383604051602001610aeb93929190611429565b60405160208183030381529060405290509392505050565b600080610a0385610c36565b6060600060606000610b2085610c48565b9050610b2d878783610c6b565b93506000610b3a86610cad565b90508015610c0c57610b4c8888610cea565b935066ffffffffffffff841667ffffffffffffffff811115610b7057610b70610f63565b6040519080825280601f01601f191660200182016040528015610b9a576020820181803683370190505b5092506020830160005b828160ff161015610c09576000610bbc8b8b84610cfd565b90506000610bd9888460ff166028026038011c64ffffffffff1690565b9050610be88260008387610d7d565b610bf281856113fc565b935050508080610c019061147b565b915050610ba4565b50505b505093509350939050565b6020810151603482015160609190911c9060009060f81c5b9050915091565b60208101516040820151600090610c2f565b60006008610c586002602061149a565b610c6291906114ad565b9190911c919050565b606081600003610c8a575060408051602081019091526000815261022a565b6000610c968585610e4a565b9050610ca481600085610ea0565b95945050505050565b60006008600180610cc06002602061149a565b610cca919061149a565b610cd4919061149a565b610cde91906114ad565b8260ff911c1692915050565b600061022a610cf98484610ecb565b5490565b60008383604051602001610d129291906114c4565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215610e065760208310610da757602083048401935060208381610da357610da36114ff565b0692505b8215610e06576020839003600081841015610dcb5750600019600884021c19610dd6565b50600019600882021c195b8554600886021b811984511682821617845250818411610df7575050610e44565b50600194909401939182900391015b5b60208210610e285783548152600190930192601f1990910190602001610e07565b8115610e445780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610e5f9291906114c4565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f8484010116604052828252610ec385858584610d7d565b509392505050565b60008282604051602001610ee09291906114c4565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060208284031215610f3357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461022a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fa257610fa2610f63565b604052919050565b600067ffffffffffffffff821115610fc457610fc4610f63565b50601f01601f191660200190565b6000610fe5610fe084610faa565b610f79565b9050828152838383011115610ff957600080fd5b828260208301376000602084830101529392505050565b600082601f83011261102157600080fd5b61022a83833560208501610fd2565b6000806040838503121561104357600080fd5b82359150602083013567ffffffffffffffff81111561106157600080fd5b61106d85828601611010565b9150509250929050565b60005b8381101561109257818101518382015260200161107a565b50506000910152565b600081518084526110b3816020860160208601611077565b601f01601f19169290920160200192915050565b60208152600061022a602083018461109b565b6000602082840312156110ec57600080fd5b813567ffffffffffffffff81111561110357600080fd5b6103eb84828501611010565b60006020828403121561112157600080fd5b813567ffffffffffffffff81111561113857600080fd5b8201601f8101841361114957600080fd5b6103eb84823560208401610fd2565b8281526040602082015260006103eb604083018461109b565b600082601f83011261118257600080fd5b8151611190610fe082610faa565b8181528460208386010111156111a557600080fd5b6103eb826020830160208701611077565b6000602082840312156111c857600080fd5b815167ffffffffffffffff8111156111df57600080fd5b6103eb84828501611171565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156112335780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015611272576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516112d9816003860160208901611077565b8084019050816003820152845191506112f9826004830160208801611077565b0160040195945050505050565b60008251611318818460208701611077565b9190910192915050565b6000606082018583526020606081850152818651808452608086019150828801935060005b8181101561136357845183529383019391830191600101611347565b5050809350505050826040830152949350505050565b60008060006060848603121561138e57600080fd5b835167ffffffffffffffff808211156113a657600080fd5b6113b287838801611171565b94506020860151935060408601519150808211156113cf57600080fd5b506113dc86828701611171565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ff576101ff6113e6565b60006000198203611422576114226113e6565b5060010190565b6000845161143b818460208901611077565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600060ff821660ff8103611491576114916113e6565b60010192915050565b818103818111156101ff576101ff6113e6565b80820281158282048414176101ff576101ff6113e6565b82815260006020808301845182860160005b828110156114f2578151845292840192908401906001016114d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000aa164736f6c6343000815000a","sourceMap":"1403:7562:200:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5700:240;;;:::i;:::-;;3601:198;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1726:1209;;;:::i;2939:226::-;;;;;;:::i;:::-;;:::i;3391:206::-;;;;;;:::i;:::-;;:::i;2170:134:107:-;;;:::i;:::-;;;;;;;:::i;5453:243:200:-;;;:::i;7230:437::-;;;:::i;6986:240::-;;;:::i;4402:241::-;;;:::i;4154:244::-;;;:::i;2939:133:107:-;;;:::i;2640:141::-;;;:::i;3169:218:200:-;;;;;;:::i;:::-;;:::i;8038:242::-;;;:::i;8527:436::-;;;:::i;6492:243::-;;;:::i;2456:178:107:-;;;:::i;:::-;;;;;;;:::i;4647:438:200:-;;;:::i;2310:140:107:-;;;:::i;:::-;;;;;;;:::i;6739:243:200:-;;;:::i;7782:252::-;;;:::i;2787:146:107:-;;;:::i;8284:239:200:-;;;:::i;1875:141:107:-;;;:::i;1819:584:101:-;;;:::i;:::-;;;6238:14:203;;6231:22;6213:41;;6201:2;6186:18;1819:584:101;6073:187:203;5944:437:200;;;:::i;2022:142:107:-;;;:::i;5196:253:200:-;;;:::i;3906:244::-;;;:::i;1572:26:101:-;;;;;;;;;5700:240:200;5752:16;;-1:-1:-1;;;5752:16:200;;1395:4;5752:16;;;6411:74:203;5752:8:200;;;;6384:18:203;;5752:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5820:13:200;;5835:42;;6698:2:203;5835:42:200;;;6680:21:203;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6755:18:203;;;6748:35;5774:23:200;;-1:-1:-1;5800:78:200;;-1:-1:-1;6800:18:203;;5835:42:200;;;;-1:-1:-1;;5835:42:200;;;;;;;;;;;;;;-1:-1:-1;;;;;5835:42:200;-1:-1:-1;;;5835:42:200;;;5800:19;:78::i;:::-;5774:104;;5884:51;5904:10;5893:32;;;;;;;;;;;;:::i;:::-;5884:51;;;;;;;;;;;;;-1:-1:-1;;;5884:51:200;;;:8;:51::i;:::-;5746:194;5700:240::o;3601:198::-;3707:5;;3718:9;;;3729:54;;3669:12;;-1:-1:-1;;;;;3707:5:200;;:10;;3718:9;3729:54;;3773:8;;3729:54;;:::i;:::-;;;;-1:-1:-1;;3729:54:200;;;;;;;;;;;;;;-1:-1:-1;;;;;3729:54:200;;;;;3707:77;;3729:54;3707:77;;;;;;;;;3729:54;3707:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3707:77:200;;;;;;;;;;;;:::i;:::-;3696:98;;;;;;;;;;;;:::i;:::-;3689:105;3601:198;-1:-1:-1;;3601:198:200:o;1726:1209::-;1776:12;1791:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1776:26;;1808:6;-1:-1:-1;;;;;1808:17:200;;1826:18;:16;:18::i;:::-;1808:37;;;;;;;;;;-1:-1:-1;;;;;6429:55:203;;;1808:37:200;;;6411:74:203;6384:18;;1808:37:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1851:5:200;:35;;-1:-1:-1;;1851:35:200;-1:-1:-1;;;;;1851:35:200;;;;;-1:-1:-1;;1925:16:200;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1915:7:200;:26;;-1:-1:-1;;1915:26:200;-1:-1:-1;;;;;1915:26:200;;;;;;;;;;1957:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1947:7:200;:26;;-1:-1:-1;;1947:26:200;-1:-1:-1;;;;;1947:26:200;;;;;;;;;;1993:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1979:11:200;:30;;-1:-1:-1;;1979:30:200;-1:-1:-1;;;;;1979:30:200;;;;;;;;;;2029:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2015:11:200;:30;;-1:-1:-1;;2015:30:200;-1:-1:-1;;;;;2015:30:200;;;;;;;;;;2089:96;-1:-1:-1;;;2089:96:200;;:25;:96::i;:::-;2077:9;:108;2203:96;-1:-1:-1;;;2203:96:200;;:25;:96::i;:::-;2191:9;:108;2321:98;-1:-1:-1;;;2385:14:200;2321:98;:25;:98::i;:::-;2305:13;:114;2441:98;-1:-1:-1;;;2505:14:200;2441:98;:25;:98::i;:::-;2425:13;:114;2573:5;;2597:9;;-1:-1:-1;;;;;2573:5:200;;;;:23;;2597:26;;539:36:59;2781:46;816:18:94;2780:74:59;;2669:191;2597:26:200;2573:51;;;;;;;;;;;;;8834:25:203;;8822:2;8807:18;;8657:208;2573:51:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2630:5:200;;2654:9;;-1:-1:-1;;;;;2630:5:200;;;;-1:-1:-1;2630:23:200;;-1:-1:-1;2654:26:200;;539:36:59;2781:46;816:18:94;2780:74:59;;2669:191;2654:26:200;2630:51;;;;;;;;;;;;;8834:25:203;;8822:2;8807:18;;8657:208;2630:51:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2712:5:200;;2733:9;;;2744:7;;2712:46;;-1:-1:-1;;;2712:46:200;;;;;9118:25:203;;;;-1:-1:-1;;;;;2744:7:200;;;9159:18:203;;;9152:83;;;;2712:5:200;9251:18:203;;;9244:50;2712:5:200;;;-1:-1:-1;2712:20:200;;-1:-1:-1;9091:18:203;;2712:46:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2764:5:200;;2785:9;;2796:7;;2764:46;;-1:-1:-1;;;2764:46:200;;;;;9118:25:203;;;;-1:-1:-1;;;;;2796:7:200;;;9159:18:203;;;9152:83;2764:5:200;9251:18:203;;;9244:50;2764:5:200;;;;-1:-1:-1;2764:20:200;;-1:-1:-1;9091:18:203;;2764:46:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2816:5:200;;2837:13;;2852:11;;2816:54;;-1:-1:-1;;;2816:54:200;;;;;9118:25:203;;;;-1:-1:-1;;;;;2852:11:200;;;9159:18:203;;;9152:83;2816:5:200;9251:18:203;;;9244:50;2816:5:200;;;;-1:-1:-1;2816:20:200;;-1:-1:-1;9091:18:203;;2816:54:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2876:5:200;;2897:13;;2912:11;;2876:54;;-1:-1:-1;;;2876:54:200;;;;;9118:25:203;;;;-1:-1:-1;;;;;2912:11:200;;;9159:18:203;;;9152:83;2876:5:200;9251:18:203;;;9244:50;2876:5:200;;;;-1:-1:-1;2876:20:200;;-1:-1:-1;9091:18:203;;2876:54:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1750:1185;1726:1209::o;2939:226::-;3070:5;;3081:13;;3096:53;;3032:12;;-1:-1:-1;;;;;3070:5:200;;:10;;3096:53;;3129:8;;3139;;3096:53;;;:::i;:::-;;;;-1:-1:-1;;3096:53:200;;;;;;;;;;;;;;-1:-1:-1;;;;;3096:53:200;;;;;3070:80;;3096:53;3070:80;;;;;;;;;3096:53;3070:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3070:80:200;;;;;;;;;;;;:::i;:::-;3059:101;;;;;;;;;;;;:::i;:::-;3052:108;2939:226;-1:-1:-1;;;2939:226:200:o;3391:206::-;3501:5;;3512:13;;3527:54;;3463:12;;-1:-1:-1;;;;;3501:5:200;;:10;;3527:54;;3571:8;;3527:54;;;:::i;2170:134:107:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:107;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;5453:243:200:-;5506:16;;-1:-1:-1;;;5506:16:200;;1395:4;5506:16;;;6411:74:203;5506:8:200;;;;6384:18:203;;5506:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5574:13:200;;5589:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5589:36:200;-1:-1:-1;;;5589:36:200;;;5528:23;;-1:-1:-1;5554:72:200;;-1:-1:-1;5554:19:200;:72::i;:::-;5528:98;;5632:59;5652:10;5641:33;;;;;;;;;;;;:::i;:::-;5684:5;;-1:-1:-1;;;;;5684:5:200;5632:8;:59::i;7230:437::-;7322:5;;7364:9;;7322:111;;-1:-1:-1;;;7322:111:200;;;;;9900:25:203;;;;9961:2;9941:18;;;9934:30;10000:2;9980:18;;;9973:30;10040:14;10019:19;;;10012:43;-1:-1:-1;;;10107:18:203;;;10100:107;7291:28:200;;-1:-1:-1;;;;;7322:5:200;;:34;;10072:19:203;;7322:111:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7291:142;;7439:21;7486;7463:54;;;;;;6698:2:203;6680:21;;;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6770:2:203;6755:18;;6748:35;6815:2;6800:18;;6496:328;7463:54:200;;;;-1:-1:-1;;7463:54:200;;;;;;;;;;;;;;-1:-1:-1;;;;;7463:54:200;;;;;;;;;;;;;7524:16;;-1:-1:-1;;;7524:16:200;;1395:4;7524:16;;;6411:74:203;7463:54:200;;-1:-1:-1;7524:8:200;;;;6384:18:203;;7524:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7546:23;7572:33;7596:8;7572:23;:33::i;:::-;7546:59;;7611:51;7631:10;7620:32;;;;;;;;;;;;:::i;7611:51::-;7285:382;;;7230:437::o;6986:240::-;7038:16;;-1:-1:-1;;;7038:16:200;;1395:4;7038:16;;;6411:74:203;7038:8:200;;;;6384:18:203;;7038:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7110:9:200;;7121:42;;6698:2:203;7121:42:200;;;6680:21:203;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6755:18:203;;;6748:35;7060:23:200;;-1:-1:-1;7086:78:200;;-1:-1:-1;6800:18:203;;7121:42:200;;;;-1:-1:-1;;7121:42:200;;;;;;;;;;;;;;-1:-1:-1;;;;;7121:42:200;-1:-1:-1;;;7121:42:200;;;7086:23;:78::i;4402:241::-;4451:16;;-1:-1:-1;;;4451:16:200;;1395:4;4451:16;;;6411:74:203;4451:8:200;;;;6384:18:203;;4451:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4523:13:200;;4538:42;;6698:2:203;4538:42:200;;;6680:21:203;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6755:18:203;;;6748:35;4473:23:200;;-1:-1:-1;4499:82:200;;-1:-1:-1;6800:18:203;;4538:42:200;6496:328:203;4154:244:200;4204:16;;-1:-1:-1;;;4204:16:200;;1395:4;4204:16;;;6411:74:203;4204:8:200;;;;6384:18:203;;4204:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4276:13:200;;4291:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4291:36:200;-1:-1:-1;;;4291:36:200;;;4226:23;;-1:-1:-1;4252:76:200;;-1:-1:-1;4252:23:200;:76::i;2939:133:107:-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:107;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:107;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;3169:218:200:-;3296:5;;3307:9;;;3318:53;;3258:12;;-1:-1:-1;;;;;3296:5:200;;:10;;3307:9;3318:53;;3351:8;;3361;;3318:53;;:::i;8038:242::-;8094:16;;-1:-1:-1;;;8094:16:200;;1395:4;8094:16;;;6411:74:203;8094:8:200;;;;6384:18:203;;8094:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8162:9:200;;8173:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8173:36:200;-1:-1:-1;;;8173:36:200;;;8116:23;;-1:-1:-1;8142:68:200;;-1:-1:-1;8142:19:200;:68::i;8527:436::-;8622:5;;8664:9;;8622:111;;-1:-1:-1;;;8622:111:200;;;;;9900:25:203;;;;9961:2;9941:18;;;9934:30;10000:2;9980:18;;;9973:30;10040:14;10019:19;;;10012:43;-1:-1:-1;;;10107:18:203;;;10100:107;8591:28:200;;-1:-1:-1;;;;;8622:5:200;;:34;;10072:19:203;;8622:111:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8591:142;;8739:21;8786;8763:54;;;;;;6698:2:203;6680:21;;;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6770:2:203;6755:18;;6748:35;6815:2;6800:18;;6496:328;8763:54:200;;;;-1:-1:-1;;8763:54:200;;;;;;;;;;;;;;-1:-1:-1;;;;;8763:54:200;;;;;;;;;;;;;8824:16;;-1:-1:-1;;;8824:16:200;;1395:4;8824:16;;;6411:74:203;8763:54:200;;-1:-1:-1;8824:8:200;;;;6384:18:203;;8824:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8846:23;8872:29;8892:8;8872:19;:29::i;6492:243::-;6549:16;;-1:-1:-1;;;6549:16:200;;1395:4;6549:16;;;6411:74:203;6549:8:200;;;;6384:18:203;;6549:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6621:9:200;;6632:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6632:40:200;-1:-1:-1;;;6632:40:200;;;6571:23;;-1:-1:-1;6597:76:200;;-1:-1:-1;6597:23:200;:76::i;:::-;6571:102;;6679:51;6699:10;6688:33;;;;;;;;;;;;:::i;:::-;1395:4;6679:8;:51::i;2456:178:107:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;4647:438:200:-;4736:5;;4778:13;;4736:115;;-1:-1:-1;;;4736:115:200;;;;;9900:25:203;;;;9961:2;9941:18;;;9934:30;10000:2;9980:18;;;9973:30;10040:14;10019:19;;;10012:43;-1:-1:-1;;;10107:18:203;;;10100:107;4705:28:200;;-1:-1:-1;;;;;4736:5:200;;:34;;10072:19:203;;4736:115:200;9631:582:203;2310:140:107;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6739:243:200;6792:16;;-1:-1:-1;;;6792:16:200;;1395:4;6792:16;;;6411:74:203;6792:8:200;;;;6384:18:203;;6792:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6864:9:200;;6875:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6875:36:200;-1:-1:-1;;;6875:36:200;;;6814:23;;-1:-1:-1;6840:72:200;;-1:-1:-1;6840:23:200;:72::i;7782:252::-;7842:16;;-1:-1:-1;;;7842:16:200;;1395:4;7842:16;;;6411:74:203;7842:8:200;;;;6384:18:203;;7842:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7910:9:200;;7921:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7921:40:200;-1:-1:-1;;;7921:40:200;;;7864:23;;-1:-1:-1;7890:72:200;;-1:-1:-1;7890:19:200;:72::i;:::-;7864:98;;7968:61;7988:10;7977:33;;;;;;;;;;;;:::i;:::-;8020:7;;-1:-1:-1;;;;;8020:7:200;7968:8;:61::i;2787:146:107:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8284:239:200;8339:16;;-1:-1:-1;;;8339:16:200;;1395:4;8339:16;;;6411:74:203;8339:8:200;;;;6384:18:203;;8339:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8407:9:200;;8418:42;;6698:2:203;8418:42:200;;;6680:21:203;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6755:18:203;;;6748:35;8361:23:200;;-1:-1:-1;8387:74:200;;-1:-1:-1;6800:18:203;;8418:42:200;6496:328:203;1875:141:107;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:101;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:101;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;11175:74:203;;;2221:17:101;11265:18:203;;;11258:34;2196:43:101;;;;;;;;;11148:18:203;;;2196:43:101;;;-1:-1:-1;;1671:64:101;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:101;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:101:o;5944:437:200:-;6036:5;;6078:13;;6036:115;;-1:-1:-1;;;6036:115:200;;;;;9900:25:203;;;;9961:2;9941:18;;;9934:30;10000:2;9980:18;;;9973:30;10040:14;10019:19;;;10012:43;-1:-1:-1;;;10107:18:203;;;10100:107;6005:28:200;;-1:-1:-1;;;;;6036:5:200;;:34;;10072:19:203;;6036:115:200;9631:582:203;2022:142:107;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:107;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;5196:253:200:-;5253:16;;-1:-1:-1;;;5253:16:200;;1395:4;5253:16;;;6411:74:203;5253:8:200;;;;6384:18:203;;5253:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5321:13:200;;5336:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5336:40:200;-1:-1:-1;;;5336:40:200;;;5275:23;;-1:-1:-1;5301:76:200;;-1:-1:-1;5301:19:200;:76::i;3906:244::-;3960:16;;-1:-1:-1;;;3960:16:200;;1395:4;3960:16;;;6411:74:203;3960:8:200;;;;6384:18:203;;3960:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4032:13:200;;4047:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4047:40:200;-1:-1:-1;;;4047:40:200;;;3982:23;;-1:-1:-1;4008:80:200;;-1:-1:-1;4008:23:200;:80::i;17902:344:101:-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;12808:2:203;12790:21;;;12847:2;12827:18;;;12820:30;12886:34;12881:2;12866:18;;12859:62;12957:6;12952:2;12937:18;;12930:34;12996:3;12981:19;;12606:400;18062:43:101;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;:::-;17902:344;;:::o;514:223:100:-;551:10;600:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;636:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;671:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;700:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;578:156;;;;;:::i;:::-;-1:-1:-1;;;;;14657:15:203;;;14639:34;;14709:15;;;14704:2;14689:18;;14682:43;14761:15;;;14756:2;14741:18;;14734:43;14813:15;;;14808:2;14793:18;;14786:43;14565:3;14550:19;578:156:100;;;;;;;;;;;;;;;;;;;;;;;567:167;;514:223;:::o;941:257:59:-;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;1139:13;;;:45;;336:5:16;1103:31:59;;;;;1084:15;;;:51;:101;;-1:-1:-1;941:257:59;;;;;:::o;3622:277:101:-;3690:1;-1:-1:-1;;;;;3685:6:101;:1;-1:-1:-1;;;;;3685:6:101;;3681:212;;3712:44;;;;;15326:2:203;15308:21;;;15365:2;15345:18;;;15338:30;15404:34;15399:2;15384:18;;15377:62;15475:7;15470:2;15455:18;;15448:35;15515:3;15500:19;;15124:401;3712:44:101;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;16536:74:203;;;2677:17:101;16626:18:203;;;16619:34;;;;2712:4:101;16669:18:203;;;16662:34;2489:11:101;;1671:64;2586:43;;16509:18:203;;2652:67:101;;;-1:-1:-1;;2652:67:101;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:101;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:101;2820:7;:14;;;;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:184:203:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:334;274:2;268:9;330:2;320:13;;-1:-1:-1;;316:86:203;304:99;;433:18;418:34;;454:22;;;415:62;412:88;;;480:18;;:::i;:::-;516:2;509:22;203:334;;-1:-1:-1;203:334:203:o;542:245::-;590:4;623:18;615:6;612:30;609:56;;;645:18;;:::i;:::-;-1:-1:-1;702:2:203;690:15;-1:-1:-1;;686:88:203;776:4;682:99;;542:245::o;792:462::-;834:5;887:3;880:4;872:6;868:17;864:27;854:55;;905:1;902;895:12;854:55;941:6;928:20;972:48;988:31;1016:2;988:31;:::i;:::-;972:48;:::i;:::-;1045:2;1036:7;1029:19;1091:3;1084:4;1079:2;1071:6;1067:15;1063:26;1060:35;1057:55;;;1108:1;1105;1098:12;1057:55;1173:2;1166:4;1158:6;1154:17;1147:4;1138:7;1134:18;1121:55;1221:1;1196:16;;;1214:4;1192:27;1185:38;;;;1200:7;792:462;-1:-1:-1;;;792:462:203:o;1259:320::-;1327:6;1380:2;1368:9;1359:7;1355:23;1351:32;1348:52;;;1396:1;1393;1386:12;1348:52;1436:9;1423:23;1469:18;1461:6;1458:30;1455:50;;;1501:1;1498;1491:12;1455:50;1524:49;1565:7;1556:6;1545:9;1541:22;1524:49;:::i;:::-;1514:59;1259:320;-1:-1:-1;;;;1259:320:203:o;1584:250::-;1669:1;1679:113;1693:6;1690:1;1687:13;1679:113;;;1769:11;;;1763:18;1750:11;;;1743:39;1715:2;1708:10;1679:113;;;-1:-1:-1;;1826:1:203;1808:16;;1801:27;1584:250::o;1839:329::-;1880:3;1918:5;1912:12;1945:6;1940:3;1933:19;1961:76;2030:6;2023:4;2018:3;2014:14;2007:4;2000:5;1996:16;1961:76;:::i;:::-;2082:2;2070:15;-1:-1:-1;;2066:88:203;2057:98;;;;2157:4;2053:109;;1839:329;-1:-1:-1;;1839:329:203:o;2173:217::-;2320:2;2309:9;2302:21;2283:4;2340:44;2380:2;2369:9;2365:18;2357:6;2340:44;:::i;2395:419::-;2503:6;2511;2564:2;2552:9;2543:7;2539:23;2535:32;2532:52;;;2580:1;2577;2570:12;2532:52;2616:9;2603:23;2593:33;;2677:2;2666:9;2662:18;2649:32;2704:18;2696:6;2693:30;2690:50;;;2736:1;2733;2726:12;2690:50;2759:49;2800:7;2791:6;2780:9;2776:22;2759:49;:::i;:::-;2749:59;;;2395:419;;;;;:::o;2819:681::-;2990:2;3042:21;;;3112:13;;3015:18;;;3134:22;;;2961:4;;2990:2;3213:15;;;;3187:2;3172:18;;;2961:4;3256:218;3270:6;3267:1;3264:13;3256:218;;;3335:13;;-1:-1:-1;;;;;3331:62:203;3319:75;;3449:15;;;;3414:12;;;;3292:1;3285:9;3256:218;;;-1:-1:-1;3491:3:203;;2819:681;-1:-1:-1;;;;;;2819:681:203:o;3505:1697::-;3709:4;3738:2;3778;3767:9;3763:18;3808:2;3797:9;3790:21;3831:6;3866;3860:13;3897:6;3889;3882:22;3923:2;3913:12;;3956:2;3945:9;3941:18;3934:25;;4018:2;4008:6;4005:1;4001:14;3990:9;3986:30;3982:39;4056:2;4048:6;4044:15;4077:1;4098;4108:1065;4124:6;4119:3;4116:15;4108:1065;;;4193:22;;;-1:-1:-1;;4189:95:203;4177:108;;4308:13;;4395:9;;-1:-1:-1;;;;;4391:58:203;4376:74;;4489:11;;4483:18;4521:15;;;4514:27;;;4602:19;;4348:15;;;4634:24;;;4724:21;;;;4769:1;;4692:2;4680:15;;;4783:282;4799:8;4794:3;4791:17;4783:282;;;4880:15;;4897:66;4876:88;4862:103;;5034:17;;;;4827:1;4818:11;;;;;4991:14;;;;4783:282;;;-1:-1:-1;5151:12:203;;;;5088:5;-1:-1:-1;;;5116:15:203;;;;4150:1;4141:11;4108:1065;;;-1:-1:-1;5190:6:203;;3505:1697;-1:-1:-1;;;;;;;;;3505:1697:203:o;5207:861::-;5369:4;5398:2;5438;5427:9;5423:18;5468:2;5457:9;5450:21;5491:6;5526;5520:13;5557:6;5549;5542:22;5595:2;5584:9;5580:18;5573:25;;5657:2;5647:6;5644:1;5640:14;5629:9;5625:30;5621:39;5607:53;;5695:2;5687:6;5683:15;5716:1;5726:313;5740:6;5737:1;5734:13;5726:313;;;-1:-1:-1;;5817:9:203;5809:6;5805:22;5801:95;5796:3;5789:108;5920:39;5952:6;5943;5937:13;5920:39;:::i;:::-;5910:49;-1:-1:-1;6017:12:203;;;;5982:15;;;;5762:1;5755:9;5726:313;;;-1:-1:-1;6056:6:203;;5207:861;-1:-1:-1;;;;;;;5207:861:203:o;6829:321::-;6905:5;6934:52;6950:35;6978:6;6950:35;:::i;6934:52::-;6925:61;;7009:6;7002:5;6995:21;7049:3;7040:6;7035:3;7031:16;7028:25;7025:45;;;7066:1;7063;7056:12;7025:45;7079:65;7137:6;7130:4;7123:5;7119:16;7114:3;7079:65;:::i;7155:459::-;7235:6;7288:2;7276:9;7267:7;7263:23;7259:32;7256:52;;;7304:1;7301;7294:12;7256:52;7337:9;7331:16;7370:18;7362:6;7359:30;7356:50;;;7402:1;7399;7392:12;7356:50;7425:22;;7478:4;7470:13;;7466:27;-1:-1:-1;7456:55:203;;7507:1;7504;7497:12;7456:55;7530:78;7600:7;7595:2;7589:9;7584:2;7580;7576:11;7530:78;:::i;7619:319::-;7825:6;7814:9;7807:25;7868:2;7863;7852:9;7848:18;7841:30;7788:4;7888:44;7928:2;7917:9;7913:18;7905:6;7888:44;:::i;9305:321::-;9383:6;9436:2;9424:9;9415:7;9411:23;9407:32;9404:52;;;9452:1;9449;9442:12;9404:52;9484:9;9478:16;-1:-1:-1;;;;;9527:5:203;9523:54;9516:5;9513:65;9503:93;;9592:1;9589;9582:12;10218:336;10287:6;10340:2;10328:9;10319:7;10315:23;10311:32;10308:52;;;10356:1;10353;10346:12;10308:52;10388:9;10382:16;10438:66;10431:5;10427:78;10420:5;10417:89;10407:117;;10520:1;10517;10510:12;10559:437;10638:1;10634:12;;;;10681;;;10702:61;;10756:4;10748:6;10744:17;10734:27;;10702:61;10809:2;10801:6;10798:14;10778:18;10775:38;10772:218;;10846:77;10843:1;10836:88;10947:4;10944:1;10937:15;10975:4;10972:1;10965:15;10772:218;;10559:437;;;:::o;11303:430::-;11500:66;11492:6;11488:79;11483:3;11476:92;11458:3;11597:6;11591:13;11613:74;11680:6;11676:1;11671:3;11667:11;11660:4;11652:6;11648:17;11613:74;:::i;:::-;11707:16;;;;11725:1;11703:24;;11303:430;-1:-1:-1;;;11303:430:203:o;11738:287::-;11867:3;11905:6;11899:13;11921:66;11980:6;11975:3;11968:4;11960:6;11956:17;11921:66;:::i;:::-;12003:16;;;;;11738:287;-1:-1:-1;;11738:287:203:o;12030:277::-;12097:6;12150:2;12138:9;12129:7;12125:23;12121:32;12118:52;;;12166:1;12163;12156:12;12118:52;12198:9;12192:16;12251:5;12244:13;12237:21;12230:5;12227:32;12217:60;;12273:1;12270;12263:12;13175:439;13425:2;13414:9;13407:21;13388:4;13451:49;13496:2;13485:9;13481:18;13088:2;13076:15;;13123:12;13116:4;13107:14;;13100:36;13161:2;13152:12;;13011:159;13451:49;13548:9;13540:6;13536:22;13531:2;13520:9;13516:18;13509:50;13576:32;13601:6;13593;13576:32;:::i;13783:439::-;14033:2;14022:9;14015:21;13996:4;14059:49;14104:2;14093:9;14089:18;13696:2;13684:15;;13731:12;13724:4;13715:14;;13708:36;13769:2;13760:12;;13619:159;14840:279;14905:9;;;14926:10;;;14923:190;;;14969:77;14966:1;14959:88;15070:4;15067:1;15060:15;15098:4;15095:1;15088:15;15530:397;15760:2;15749:9;15742:21;15723:4;15780:49;15825:2;15814:9;15810:18;13088:2;13076:15;;13123:12;13116:4;13107:14;;13100:36;13161:2;13152:12;;13011:159;15780:49;15772:57;;-1:-1:-1;;;;;15869:6:203;15865:55;15860:2;15849:9;15845:18;15838:83;15530:397;;;;:::o;15932:::-;16162:2;16151:9;16144:21;16125:4;16182:49;16227:2;16216:9;16212:18;13696:2;13684:15;;13731:12;13724:4;13715:14;;13708:36;13769:2;13760:12;;13619:159","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","_executeFromRootSystemA(bytes)":"199e1d17","_executeFromRootSystemA(bytes32,bytes)":"101f99a3","_executeFromSystemA(bytes)":"075d7777","_executeFromSystemA(bytes32,bytes)":"3fa01b98","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testCallNonRootFromNonRootMsgSender()":"8d95e4d6","testCallNonRootFromRootMsgSender()":"5af8de30","testCallRootFromNonRootEcho()":"055e33e8","testCallRootFromNonRootMsgSender()":"e78c82e3","testCallRootFromNonRootWorld()":"2cb6867d","testCallRootFromNonRootWorldSelector()":"c0310bf6","testCallRootFromRootEcho()":"3424e1c1","testCallRootFromRootMsgSender()":"ed3a1856","testCallRootFromRootWorld()":"3911733c","testCallRootFromRootWorldSelector()":"78845560","testNonCallRootFromNonRootEcho()":"aec62e14","testNonCallRootFromNonRootWorld()":"4478d618","testNonCallRootFromNonRootWorldSelector()":"54dcf132","testNonCallRootFromRootEcho()":"32d7d505","testNonCallRootFromRootWorld()":"85dc0868","testNonCallRootFromRootWorldSelector()":"2f2499f4"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"systemId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"_executeFromRootSystemA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"_executeFromRootSystemA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"_executeFromSystemA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"systemId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"_executeFromSystemA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallNonRootFromNonRootMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallNonRootFromRootMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromNonRootEcho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromNonRootMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromNonRootWorld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromNonRootWorldSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromRootEcho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromRootMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromRootWorld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromRootWorldSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromNonRootEcho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromNonRootWorld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromNonRootWorldSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromRootEcho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromRootWorld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromRootWorldSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/SystemSwitch.t.sol\":\"SystemSwitchTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f\",\"dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4\",\"dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a\",\"dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f\",\"dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d\",\"dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2\",\"dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0\",\"dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a\",\"dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc\",\"dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d\",\"dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5\",\"dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac\",\"dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115\",\"dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1\",\"dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5\",\"dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8\",\"dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9\",\"dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3\",\"dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3\",\"dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e\",\"dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a\",\"dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279\",\"dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738\",\"dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7\",\"dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6\",\"dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f\",\"dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9\",\"dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695\",\"dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee\",\"dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793\",\"dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC\"]},\"node_modules/@latticexyz/store/src/leftMask.sol\":{\"keccak256\":\"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793\",\"dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81\",\"dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84\",\"dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1\",\"dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49\",\"dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25\",\"dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491\",\"dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952\",\"dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716\",\"dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1\",\"dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d\",\"dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5\",\"dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35\",\"dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c\",\"dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef\",\"dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83\",\"dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c\",\"dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce\",\"dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd\",\"dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01\",\"dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14\",\"dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518\",\"dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc\",\"dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255\",\"dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5\",\"dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024\",\"dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8\",\"dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol\":{\"keccak256\":\"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43\",\"dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0\",\"dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad\",\"dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961\",\"dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e\",\"dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91\",\"dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4\",\"dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b\",\"dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b\",\"dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a\",\"dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436\",\"dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330\",\"dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231\",\"dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231\",\"dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218\",\"dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol\":{\"keccak256\":\"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9\",\"dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol\":{\"keccak256\":\"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417\",\"dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb\"]},\"node_modules/@latticexyz/world/src/modules/core/constants.sol\":{\"keccak256\":\"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e\",\"dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0\",\"dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e\",\"dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c\",\"dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6\",\"dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24\",\"dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198\",\"dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm\"]},\"node_modules/@latticexyz/world/src/modules/core/types.sol\":{\"keccak256\":\"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3\",\"dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795\",\"dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df\",\"dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9\",\"dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a\",\"dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45\",\"dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4\"]},\"node_modules/@latticexyz/world/test/createCoreModule.sol\":{\"keccak256\":\"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2\",\"dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/utils/SystemSwitch.sol\":{\"keccak256\":\"0x8242e32af7f919eebac06852a64d354f8d24ee777079244d430852f22d47230e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32745bde5e8e24e0c293545b1047a580a77602f01b8695c2236192187bdc1da\",\"dweb:/ipfs/QmeX59sxxU6SoM9o1KbCDxuR4DmHB3nyx1Kee4nLgfq6UH\"]},\"test/SystemSwitch.t.sol\":{\"keccak256\":\"0x4b94a3137e904e582c3af482afe01316d34b67d57bdd31b65c7174364a530c7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9276851302c3115c7016e495cc2557c1c1a8d9dc2fa17d9d5cf5d49d776742dd\",\"dweb:/ipfs/Qmf72JqyVeSe6RG13ZbAaq5m6zPz4N5viECBftKNcFcV41\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"ResourceId","name":"systemId","type":"bytes32"},{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_executeFromRootSystemA","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_executeFromRootSystemA","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_executeFromSystemA","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"ResourceId","name":"systemId","type":"bytes32"},{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_executeFromSystemA","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallNonRootFromNonRootMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallNonRootFromRootMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromNonRootEcho"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromNonRootMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromNonRootWorld"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromNonRootWorldSelector"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromRootEcho"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromRootMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromRootWorld"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromRootWorldSelector"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromNonRootEcho"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromNonRootWorld"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromNonRootWorldSelector"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromRootEcho"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromRootWorld"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromRootWorldSelector"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/SystemSwitch.t.sol":"SystemSwitchTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b","urls":["bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f","dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb","urls":["bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4","dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b","urls":["bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a","dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f","urls":["bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f","dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a","urls":["bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d","dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf","urls":["bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2","dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827","urls":["bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0","dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5","urls":["bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a","dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212","urls":["bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc","dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f","urls":["bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d","dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9","urls":["bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5","dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37","urls":["bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac","dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f","urls":["bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115","dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b","urls":["bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1","dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7","urls":["bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5","dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91","urls":["bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8","dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9","urls":["bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9","dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401","urls":["bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3","dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710","urls":["bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3","dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7","urls":["bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e","dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94","urls":["bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a","dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526","urls":["bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279","dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa","urls":["bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738","dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416","urls":["bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7","dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3","urls":["bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6","dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6","urls":["bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f","dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782","urls":["bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9","dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d","urls":["bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695","dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91","urls":["bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee","dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076","urls":["bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793","dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC"],"license":"MIT"},"node_modules/@latticexyz/store/src/leftMask.sol":{"keccak256":"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f","urls":["bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793","dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5","urls":["bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81","dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2","urls":["bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84","dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04","urls":["bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1","dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d","urls":["bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49","dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650","urls":["bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25","dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c","urls":["bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491","dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41","urls":["bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952","dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89","urls":["bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716","dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270","urls":["bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1","dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553","urls":["bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d","dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47","urls":["bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5","dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900","urls":["bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35","dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9","urls":["bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c","dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881","urls":["bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef","dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7","urls":["bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83","dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb","urls":["bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c","dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19","urls":["bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce","dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd","urls":["bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd","dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2","urls":["bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01","dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b","urls":["bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14","dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a","urls":["bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518","dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff","urls":["bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc","dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593","urls":["bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255","dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55","urls":["bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5","dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed","urls":["bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024","dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97","urls":["bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8","dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol":{"keccak256":"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350","urls":["bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43","dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263","urls":["bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0","dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62","urls":["bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad","dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8","urls":["bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961","dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb","urls":["bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e","dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426","urls":["bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91","dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac","urls":["bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4","dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed","urls":["bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b","dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd","urls":["bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b","dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527","urls":["bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a","dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8","urls":["bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436","dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22","urls":["bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330","dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a","urls":["bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231","dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5","urls":["bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231","dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588","urls":["bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218","dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol":{"keccak256":"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43","urls":["bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9","dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol":{"keccak256":"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125","urls":["bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417","dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/constants.sol":{"keccak256":"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0","urls":["bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e","dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol":{"keccak256":"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc","urls":["bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0","dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol":{"keccak256":"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc","urls":["bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e","dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol":{"keccak256":"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1","urls":["bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c","dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d","urls":["bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6","dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol":{"keccak256":"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc","urls":["bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24","dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427","urls":["bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198","dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/types.sol":{"keccak256":"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a","urls":["bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3","dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039","urls":["bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795","dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55","urls":["bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df","dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb","urls":["bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9","dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44","urls":["bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a","dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3","urls":["bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45","dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4"],"license":"MIT"},"node_modules/@latticexyz/world/test/createCoreModule.sol":{"keccak256":"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8","urls":["bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2","dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/utils/SystemSwitch.sol":{"keccak256":"0x8242e32af7f919eebac06852a64d354f8d24ee777079244d430852f22d47230e","urls":["bzz-raw://d32745bde5e8e24e0c293545b1047a580a77602f01b8695c2236192187bdc1da","dweb:/ipfs/QmeX59sxxU6SoM9o1KbCDxuR4DmHB3nyx1Kee4nLgfq6UH"],"license":"MIT"},"test/SystemSwitch.t.sol":{"keccak256":"0x4b94a3137e904e582c3af482afe01316d34b67d57bdd31b65c7174364a530c7a","urls":["bzz-raw://9276851302c3115c7016e495cc2557c1c1a8d9dc2fa17d9d5cf5d49d776742dd","dweb:/ipfs/Qmf72JqyVeSe6RG13ZbAaq5m6zPz4N5viECBftKNcFcV41"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"test/SystemSwitch.t.sol","id":135838,"exportedSymbols":{"EchoSystem":[134941],"GasReporter":[226],"IBaseWorld":[24400],"RESOURCE_SYSTEM":[37052],"ROOT_NAMESPACE":[34848],"ResourceId":[2782],"System":[22601],"SystemSwitch":[126723],"SystemSwitchTest":[135837],"Test":[58812],"World":[23730],"WorldResourceIdInstance":[24272],"WorldResourceIdLib":[24145],"caller":[134947],"createCoreModule":[46913]},"nodeType":"SourceUnit","src":"32:8934:200","nodes":[{"id":134858,"nodeType":"PragmaDirective","src":"32:25:200","nodes":[],"literals":["solidity",">=","0.8",".21"]},{"id":134860,"nodeType":"ImportDirective","src":"59:42:200","nodes":[],"absolutePath":"node_modules/forge-std/src/Test.sol","file":"forge-std/Test.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":58813,"symbolAliases":[{"foreign":{"id":134859,"name":"Test","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58812,"src":"68:4:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134862,"nodeType":"ImportDirective","src":"102:73:200","nodes":[],"absolutePath":"node_modules/@latticexyz/gas-report/src/GasReporter.sol","file":"@latticexyz/gas-report/src/GasReporter.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":227,"symbolAliases":[{"foreign":{"id":134861,"name":"GasReporter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"111:11:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134864,"nodeType":"ImportDirective","src":"177:58:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/System.sol","file":"@latticexyz/world/src/System.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":22602,"symbolAliases":[{"foreign":{"id":134863,"name":"System","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22601,"src":"186:6:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134866,"nodeType":"ImportDirective","src":"236:85:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":24401,"symbolAliases":[{"foreign":{"id":134865,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"245:10:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134868,"nodeType":"ImportDirective","src":"322:56:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/World.sol","file":"@latticexyz/world/src/World.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":23731,"symbolAliases":[{"foreign":{"id":134867,"name":"World","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23730,"src":"331:5:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134870,"nodeType":"ImportDirective","src":"379:79:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/createCoreModule.sol","file":"@latticexyz/world/test/createCoreModule.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":46914,"symbolAliases":[{"foreign":{"id":134869,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"388:16:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134874,"nodeType":"ImportDirective","src":"459:116:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":24273,"symbolAliases":[{"foreign":{"id":134871,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"468:10:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134872,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"480:18:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134873,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24272,"src":"500:23:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134876,"nodeType":"ImportDirective","src":"576:79:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":37059,"symbolAliases":[{"foreign":{"id":134875,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"585:15:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134878,"nodeType":"ImportDirective","src":"656:69:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/constants.sol","file":"@latticexyz/world/src/constants.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":34921,"symbolAliases":[{"foreign":{"id":134877,"name":"ROOT_NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34848,"src":"665:14:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134880,"nodeType":"ImportDirective","src":"726:61:200","nodes":[],"absolutePath":"src/utils/SystemSwitch.sol","file":"../src/utils/SystemSwitch.sol","nameLocation":"-1:-1:-1","scope":135838,"sourceUnit":126724,"symbolAliases":[{"foreign":{"id":134879,"name":"SystemSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126723,"src":"735:12:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134941,"nodeType":"ContractDefinition","src":"789:570:200","nodes":[{"id":134891,"nodeType":"FunctionDefinition","src":"823:81:200","nodes":[],"body":{"id":134890,"nodeType":"Block","src":"874:30:200","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134887,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23760,"src":"887:10:200","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":134888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"887:12:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":134886,"id":134889,"nodeType":"Return","src":"880:19:200"}]},"functionSelector":"d737d0c7","implemented":true,"kind":"function","modifiers":[],"name":"msgSender","nameLocation":"832:9:200","parameters":{"id":134883,"nodeType":"ParameterList","parameters":[],"src":"841:2:200"},"returnParameters":{"id":134886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134891,"src":"865:7:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134884,"name":"address","nodeType":"ElementaryTypeName","src":"865:7:200","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"864:9:200"},"scope":134941,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":134900,"nodeType":"FunctionDefinition","src":"908:73:200","nodes":[],"body":{"id":134899,"nodeType":"Block","src":"955:26:200","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134896,"name":"_world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23782,"src":"968:6:200","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":134897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"968:8:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":134895,"id":134898,"nodeType":"Return","src":"961:15:200"}]},"functionSelector":"30b67baa","implemented":true,"kind":"function","modifiers":[],"name":"world","nameLocation":"917:5:200","parameters":{"id":134892,"nodeType":"ParameterList","parameters":[],"src":"922:2:200"},"returnParameters":{"id":134895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134894,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134900,"src":"946:7:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134893,"name":"address","nodeType":"ElementaryTypeName","src":"946:7:200","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"945:9:200"},"scope":134941,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":134910,"nodeType":"FunctionDefinition","src":"985:98:200","nodes":[],"body":{"id":134909,"nodeType":"Block","src":"1058:25:200","nodes":[],"statements":[{"expression":{"id":134907,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134902,"src":"1071:7:200","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":134906,"id":134908,"nodeType":"Return","src":"1064:14:200"}]},"functionSelector":"f15da729","implemented":true,"kind":"function","modifiers":[],"name":"echo","nameLocation":"994:4:200","parameters":{"id":134903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134902,"mutability":"mutable","name":"message","nameLocation":"1013:7:200","nodeType":"VariableDeclaration","scope":134910,"src":"999:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":134901,"name":"string","nodeType":"ElementaryTypeName","src":"999:6:200","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"998:23:200"},"returnParameters":{"id":134906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134905,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134910,"src":"1043:13:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":134904,"name":"string","nodeType":"ElementaryTypeName","src":"1043:6:200","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1042:15:200"},"scope":134941,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":134927,"nodeType":"FunctionDefinition","src":"1087:143:200","nodes":[],"body":{"id":134926,"nodeType":"Block","src":"1175:55:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":134922,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134913,"src":"1206:8:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":134923,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134915,"src":"1216:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134920,"name":"SystemSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126723,"src":"1188:12:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemSwitch_$126723_$","typeString":"type(library SystemSwitch)"}},"id":134921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1201:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":126676,"src":"1188:17:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":134924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:37:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":134919,"id":134925,"nodeType":"Return","src":"1181:44:200"}]},"functionSelector":"3ae7af08","implemented":true,"kind":"function","modifiers":[],"name":"call","nameLocation":"1096:4:200","parameters":{"id":134916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134913,"mutability":"mutable","name":"systemId","nameLocation":"1112:8:200","nodeType":"VariableDeclaration","scope":134927,"src":"1101:19:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134912,"nodeType":"UserDefinedTypeName","pathNode":{"id":134911,"name":"ResourceId","nameLocations":["1101:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1101:10:200"},"referencedDeclaration":2782,"src":"1101:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"constant":false,"id":134915,"mutability":"mutable","name":"callData","nameLocation":"1135:8:200","nodeType":"VariableDeclaration","scope":134927,"src":"1122:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134914,"name":"bytes","nodeType":"ElementaryTypeName","src":"1122:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1100:44:200"},"returnParameters":{"id":134919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134927,"src":"1161:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134917,"name":"bytes","nodeType":"ElementaryTypeName","src":"1161:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1160:14:200"},"scope":134941,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134940,"nodeType":"FunctionDefinition","src":"1234:123:200","nodes":[],"body":{"id":134939,"nodeType":"Block","src":"1312:45:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":134936,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134929,"src":"1343:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134934,"name":"SystemSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126723,"src":"1325:12:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemSwitch_$126723_$","typeString":"type(library SystemSwitch)"}},"id":134935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1338:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":126722,"src":"1325:17:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":134937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1325:27:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":134933,"id":134938,"nodeType":"Return","src":"1318:34:200"}]},"functionSelector":"96f09da6","implemented":true,"kind":"function","modifiers":[],"name":"callViaSelector","nameLocation":"1243:15:200","parameters":{"id":134930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134929,"mutability":"mutable","name":"callData","nameLocation":"1272:8:200","nodeType":"VariableDeclaration","scope":134940,"src":"1259:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134928,"name":"bytes","nodeType":"ElementaryTypeName","src":"1259:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1258:23:200"},"returnParameters":{"id":134933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134940,"src":"1298:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134931,"name":"bytes","nodeType":"ElementaryTypeName","src":"1298:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1297:14:200"},"scope":134941,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":134881,"name":"System","nameLocations":["812:6:200"],"nodeType":"IdentifierPath","referencedDeclaration":22601,"src":"812:6:200"},"id":134882,"nodeType":"InheritanceSpecifier","src":"812:6:200"}],"canonicalName":"EchoSystem","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[134941,22601,23800,22336,22203],"name":"EchoSystem","nameLocation":"798:10:200","scope":135838,"usedErrors":[22360,22390],"usedEvents":[]},{"id":134947,"nodeType":"VariableDeclaration","src":"1361:39:200","nodes":[],"constant":true,"mutability":"constant","name":"caller","nameLocation":"1378:6:200","scope":135838,"stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134942,"name":"address","nodeType":"ElementaryTypeName","src":"1361:7:200","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"34323332","id":134945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1395:4:200","typeDescriptions":{"typeIdentifier":"t_rational_4232_by_1","typeString":"int_const 4232"},"value":"4232"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_4232_by_1","typeString":"int_const 4232"}],"id":134944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1387:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134943,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:200","typeDescriptions":{}}},"id":134946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1387:13:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"id":135837,"nodeType":"ContractDefinition","src":"1403:7562:200","nodes":[{"id":134955,"nodeType":"UsingForDirective","src":"1454:45:200","nodes":[],"global":false,"libraryName":{"id":134952,"name":"WorldResourceIdInstance","nameLocations":["1460:23:200"],"nodeType":"IdentifierPath","referencedDeclaration":24272,"src":"1460:23:200"},"typeName":{"id":134954,"nodeType":"UserDefinedTypeName","pathNode":{"id":134953,"name":"ResourceId","nameLocations":["1488:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1488:10:200"},"referencedDeclaration":2782,"src":"1488:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}},{"id":134958,"nodeType":"VariableDeclaration","src":"1503:16:200","nodes":[],"constant":false,"mutability":"mutable","name":"world","nameLocation":"1514:5:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"},"typeName":{"id":134957,"nodeType":"UserDefinedTypeName","pathNode":{"id":134956,"name":"IBaseWorld","nameLocations":["1503:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":24400,"src":"1503:10:200"},"referencedDeclaration":24400,"src":"1503:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"visibility":"internal"},{"id":134961,"nodeType":"VariableDeclaration","src":"1524:18:200","nodes":[],"constant":false,"mutability":"mutable","name":"systemA","nameLocation":"1535:7:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"},"typeName":{"id":134960,"nodeType":"UserDefinedTypeName","pathNode":{"id":134959,"name":"EchoSystem","nameLocations":["1524:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134941,"src":"1524:10:200"},"referencedDeclaration":134941,"src":"1524:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"visibility":"internal"},{"id":134964,"nodeType":"VariableDeclaration","src":"1546:18:200","nodes":[],"constant":false,"mutability":"mutable","name":"systemB","nameLocation":"1557:7:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"},"typeName":{"id":134963,"nodeType":"UserDefinedTypeName","pathNode":{"id":134962,"name":"EchoSystem","nameLocations":["1546:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134941,"src":"1546:10:200"},"referencedDeclaration":134941,"src":"1546:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"visibility":"internal"},{"id":134967,"nodeType":"VariableDeclaration","src":"1568:22:200","nodes":[],"constant":false,"mutability":"mutable","name":"rootSystemA","nameLocation":"1579:11:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"},"typeName":{"id":134966,"nodeType":"UserDefinedTypeName","pathNode":{"id":134965,"name":"EchoSystem","nameLocations":["1568:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134941,"src":"1568:10:200"},"referencedDeclaration":134941,"src":"1568:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"visibility":"internal"},{"id":134970,"nodeType":"VariableDeclaration","src":"1594:22:200","nodes":[],"constant":false,"mutability":"mutable","name":"rootSystemB","nameLocation":"1605:11:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"},"typeName":{"id":134969,"nodeType":"UserDefinedTypeName","pathNode":{"id":134968,"name":"EchoSystem","nameLocations":["1594:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134941,"src":"1594:10:200"},"referencedDeclaration":134941,"src":"1594:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"visibility":"internal"},{"id":134973,"nodeType":"VariableDeclaration","src":"1621:20:200","nodes":[],"constant":false,"mutability":"mutable","name":"systemAId","nameLocation":"1632:9:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134972,"nodeType":"UserDefinedTypeName","pathNode":{"id":134971,"name":"ResourceId","nameLocations":["1621:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1621:10:200"},"referencedDeclaration":2782,"src":"1621:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":134976,"nodeType":"VariableDeclaration","src":"1645:20:200","nodes":[],"constant":false,"mutability":"mutable","name":"systemBId","nameLocation":"1656:9:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134975,"nodeType":"UserDefinedTypeName","pathNode":{"id":134974,"name":"ResourceId","nameLocations":["1645:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1645:10:200"},"referencedDeclaration":2782,"src":"1645:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":134979,"nodeType":"VariableDeclaration","src":"1669:24:200","nodes":[],"constant":false,"mutability":"mutable","name":"rootSystemAId","nameLocation":"1680:13:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134978,"nodeType":"UserDefinedTypeName","pathNode":{"id":134977,"name":"ResourceId","nameLocations":["1669:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1669:10:200"},"referencedDeclaration":2782,"src":"1669:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":134982,"nodeType":"VariableDeclaration","src":"1697:24:200","nodes":[],"constant":false,"mutability":"mutable","name":"rootSystemBId","nameLocation":"1708:13:200","scope":135837,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134981,"nodeType":"UserDefinedTypeName","pathNode":{"id":134980,"name":"ResourceId","nameLocations":["1697:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1697:10:200"},"referencedDeclaration":2782,"src":"1697:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":135122,"nodeType":"FunctionDefinition","src":"1726:1209:200","nodes":[],"body":{"id":135121,"nodeType":"Block","src":"1750:1185:200","nodes":[],"statements":[{"assignments":[134987],"declarations":[{"constant":false,"id":134987,"mutability":"mutable","name":"_world","nameLocation":"1782:6:200","nodeType":"VariableDeclaration","scope":135121,"src":"1776:12:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"},"typeName":{"id":134986,"nodeType":"UserDefinedTypeName","pathNode":{"id":134985,"name":"World","nameLocations":["1776:5:200"],"nodeType":"IdentifierPath","referencedDeclaration":23730,"src":"1776:5:200"},"referencedDeclaration":23730,"src":"1776:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}},"visibility":"internal"}],"id":134992,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":134990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1791:9:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_World_$23730_$","typeString":"function () returns (contract World)"},"typeName":{"id":134989,"nodeType":"UserDefinedTypeName","pathNode":{"id":134988,"name":"World","nameLocations":["1795:5:200"],"nodeType":"IdentifierPath","referencedDeclaration":23730,"src":"1795:5:200"},"referencedDeclaration":23730,"src":"1795:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}},"id":134991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1791:11:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}},"nodeType":"VariableDeclarationStatement","src":"1776:26:200"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":134996,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"1826:16:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_contract$_CoreModule_$35431_$","typeString":"function () returns (contract CoreModule)"}},"id":134997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:18:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}],"expression":{"id":134993,"name":"_world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134987,"src":"1808:6:200","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}},"id":134995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1815:10:200","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":23071,"src":"1808:17:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$returns$__$","typeString":"function (contract IModule) external"}},"id":134998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1808:37:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134999,"nodeType":"ExpressionStatement","src":"1808:37:200"},{"expression":{"id":135007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135000,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"1851:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":135004,"name":"_world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134987,"src":"1878:6:200","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}],"id":135003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1870:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135002,"name":"address","nodeType":"ElementaryTypeName","src":"1870:7:200","typeDescriptions":{}}},"id":135005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1870:15:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":135001,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"1859:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseWorld_$24400_$","typeString":"type(contract IBaseWorld)"}},"id":135006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1859:27:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"src":"1851:35:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135008,"nodeType":"ExpressionStatement","src":"1851:35:200"},{"expression":{"id":135014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135009,"name":"systemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134961,"src":"1915:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1925:14:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_EchoSystem_$134941_$","typeString":"function () returns (contract EchoSystem)"},"typeName":{"id":135011,"nodeType":"UserDefinedTypeName","pathNode":{"id":135010,"name":"EchoSystem","nameLocations":["1929:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134941,"src":"1929:10:200"},"referencedDeclaration":134941,"src":"1929:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}}},"id":135013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1925:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"src":"1915:26:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"id":135015,"nodeType":"ExpressionStatement","src":"1915:26:200"},{"expression":{"id":135021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135016,"name":"systemB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134964,"src":"1947:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1957:14:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_EchoSystem_$134941_$","typeString":"function () returns (contract EchoSystem)"},"typeName":{"id":135018,"nodeType":"UserDefinedTypeName","pathNode":{"id":135017,"name":"EchoSystem","nameLocations":["1961:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134941,"src":"1961:10:200"},"referencedDeclaration":134941,"src":"1961:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}}},"id":135020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1957:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"src":"1947:26:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"id":135022,"nodeType":"ExpressionStatement","src":"1947:26:200"},{"expression":{"id":135028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135023,"name":"rootSystemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134967,"src":"1979:11:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1993:14:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_EchoSystem_$134941_$","typeString":"function () returns (contract EchoSystem)"},"typeName":{"id":135025,"nodeType":"UserDefinedTypeName","pathNode":{"id":135024,"name":"EchoSystem","nameLocations":["1997:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134941,"src":"1997:10:200"},"referencedDeclaration":134941,"src":"1997:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}}},"id":135027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1993:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"src":"1979:30:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"id":135029,"nodeType":"ExpressionStatement","src":"1979:30:200"},{"expression":{"id":135035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135030,"name":"rootSystemB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134970,"src":"2015:11:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2029:14:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_EchoSystem_$134941_$","typeString":"function () returns (contract EchoSystem)"},"typeName":{"id":135032,"nodeType":"UserDefinedTypeName","pathNode":{"id":135031,"name":"EchoSystem","nameLocations":["2033:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134941,"src":"2033:10:200"},"referencedDeclaration":134941,"src":"2033:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}}},"id":135034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2029:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"src":"2015:30:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},"id":135036,"nodeType":"ExpressionStatement","src":"2015:30:200"},{"expression":{"id":135044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135037,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134973,"src":"2077:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135040,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"2125:15:200","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d65737061636541","id":135041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2153:12:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_e5249ea074de3b5c1907767d7daf078e87d4b0a31b187546ff27e540c44dd67f","typeString":"literal_string \"namespaceA\""},"value":"namespaceA"},{"hexValue":"73797374656d41","id":135042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2173:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c9562a232d8ed813eff016ef7af580f4ac4d26e2d3dbec81d3bf494297695e","typeString":"literal_string \"systemA\""},"value":"systemA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_e5249ea074de3b5c1907767d7daf078e87d4b0a31b187546ff27e540c44dd67f","typeString":"literal_string \"namespaceA\""},{"typeIdentifier":"t_stringliteral_47c9562a232d8ed813eff016ef7af580f4ac4d26e2d3dbec81d3bf494297695e","typeString":"literal_string \"systemA\""}],"expression":{"id":135038,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"2089:18:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2108:6:200","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"2089:25:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2117:6:200","2142:9:200","2167:4:200"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"2089:96:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"src":"2077:108:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135045,"nodeType":"ExpressionStatement","src":"2077:108:200"},{"expression":{"id":135053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135046,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"2191:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135049,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"2239:15:200","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d65737061636542","id":135050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2267:12:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_9966cb362f88b0d958879f3f2d1e887cd1b93cd84663a71d6f07414bb1f92582","typeString":"literal_string \"namespaceB\""},"value":"namespaceB"},{"hexValue":"73797374656d42","id":135051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2287:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b22053f4496c362f888b764f547d8ea33d632edb4e459a3de001e0e5add5a7c","typeString":"literal_string \"systemB\""},"value":"systemB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_9966cb362f88b0d958879f3f2d1e887cd1b93cd84663a71d6f07414bb1f92582","typeString":"literal_string \"namespaceB\""},{"typeIdentifier":"t_stringliteral_4b22053f4496c362f888b764f547d8ea33d632edb4e459a3de001e0e5add5a7c","typeString":"literal_string \"systemB\""}],"expression":{"id":135047,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"2203:18:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2222:6:200","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"2203:25:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2231:6:200","2256:9:200","2281:4:200"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"2203:96:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"src":"2191:108:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135054,"nodeType":"ExpressionStatement","src":"2191:108:200"},{"expression":{"id":135062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135055,"name":"rootSystemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134979,"src":"2305:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135058,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"2357:15:200","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"id":135059,"name":"ROOT_NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34848,"src":"2385:14:200","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"hexValue":"73797374656d41","id":135060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2407:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c9562a232d8ed813eff016ef7af580f4ac4d26e2d3dbec81d3bf494297695e","typeString":"literal_string \"systemA\""},"value":"systemA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_stringliteral_47c9562a232d8ed813eff016ef7af580f4ac4d26e2d3dbec81d3bf494297695e","typeString":"literal_string \"systemA\""}],"expression":{"id":135056,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"2321:18:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2340:6:200","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"2321:25:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2349:6:200","2374:9:200","2401:4:200"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"2321:98:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"src":"2305:114:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135063,"nodeType":"ExpressionStatement","src":"2305:114:200"},{"expression":{"id":135071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135064,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"2425:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135067,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"2477:15:200","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"id":135068,"name":"ROOT_NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34848,"src":"2505:14:200","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"hexValue":"73797374656d42","id":135069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2527:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b22053f4496c362f888b764f547d8ea33d632edb4e459a3de001e0e5add5a7c","typeString":"literal_string \"systemB\""},"value":"systemB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_stringliteral_4b22053f4496c362f888b764f547d8ea33d632edb4e459a3de001e0e5add5a7c","typeString":"literal_string \"systemB\""}],"expression":{"id":135065,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"2441:18:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2460:6:200","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"2441:25:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2469:6:200","2494:9:200","2521:4:200"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"2441:98:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"src":"2425:114:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135072,"nodeType":"ExpressionStatement","src":"2425:114:200"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":135076,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134973,"src":"2597:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:14:200","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24191,"src":"2597:24:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_userDefinedValueType$_ResourceId_$2782_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":135078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2597:26:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":135073,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"2573:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2579:17:200","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24460,"src":"2573:23:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":135079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135080,"nodeType":"ExpressionStatement","src":"2573:51:200"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":135084,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"2654:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2664:14:200","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24191,"src":"2654:24:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_userDefinedValueType$_ResourceId_$2782_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":135086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2654:26:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":135081,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"2630:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2636:17:200","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24460,"src":"2630:23:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":135087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2630:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135088,"nodeType":"ExpressionStatement","src":"2630:51:200"},{"expression":{"arguments":[{"id":135092,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134973,"src":"2733:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135093,"name":"systemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134961,"src":"2744:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},{"hexValue":"74727565","id":135094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2753:4:200","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135089,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"2712:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2718:14:200","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2712:20:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":135095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2712:46:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135096,"nodeType":"ExpressionStatement","src":"2712:46:200"},{"expression":{"arguments":[{"id":135100,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"2785:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135101,"name":"systemB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134964,"src":"2796:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},{"hexValue":"74727565","id":135102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2805:4:200","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135097,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"2764:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2770:14:200","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2764:20:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":135103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2764:46:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135104,"nodeType":"ExpressionStatement","src":"2764:46:200"},{"expression":{"arguments":[{"id":135108,"name":"rootSystemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134979,"src":"2837:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135109,"name":"rootSystemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134967,"src":"2852:11:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},{"hexValue":"74727565","id":135110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2865:4:200","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135105,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"2816:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2822:14:200","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2816:20:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":135111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135112,"nodeType":"ExpressionStatement","src":"2816:54:200"},{"expression":{"arguments":[{"id":135116,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"2897:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135117,"name":"rootSystemB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134970,"src":"2912:11:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}},{"hexValue":"74727565","id":135118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2925:4:200","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135113,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"2876:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2882:14:200","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2876:20:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":135119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135120,"nodeType":"ExpressionStatement","src":"2876:54:200"}]},"functionSelector":"0a9254e4","implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"1735:5:200","parameters":{"id":134983,"nodeType":"ParameterList","parameters":[],"src":"1740:2:200"},"returnParameters":{"id":134984,"nodeType":"ParameterList","parameters":[],"src":"1750:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135152,"nodeType":"FunctionDefinition","src":"2939:226:200","nodes":[],"body":{"id":135151,"nodeType":"Block","src":"3046:119:200","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":135136,"name":"rootSystemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134979,"src":"3081:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135139,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"3111:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3122:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":134927,"src":"3111:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.call(ResourceId,bytes memory) returns (bytes memory)"}},{"components":[{"id":135141,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135125,"src":"3129:8:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135142,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135127,"src":"3139:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":135143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3128:20:200","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$","typeString":"tuple(ResourceId,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.call(ResourceId,bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$","typeString":"tuple(ResourceId,bytes memory)"}],"expression":{"id":135137,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3096:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3100:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"3096:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3096:53:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135134,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"3070:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3076:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"3070:10:200","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:80:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3153:5:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":135146,"name":"bytes","nodeType":"ElementaryTypeName","src":"3153:5:200","typeDescriptions":{}}}],"id":135148,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3152:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":135132,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3059:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3063:6:200","memberName":"decode","nodeType":"MemberAccess","src":"3059:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3059:101:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":135131,"id":135150,"nodeType":"Return","src":"3052:108:200"}]},"functionSelector":"101f99a3","implemented":true,"kind":"function","modifiers":[],"name":"_executeFromRootSystemA","nameLocation":"2948:23:200","parameters":{"id":135128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135125,"mutability":"mutable","name":"systemId","nameLocation":"2983:8:200","nodeType":"VariableDeclaration","scope":135152,"src":"2972:19:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135124,"nodeType":"UserDefinedTypeName","pathNode":{"id":135123,"name":"ResourceId","nameLocations":["2972:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"2972:10:200"},"referencedDeclaration":2782,"src":"2972:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"constant":false,"id":135127,"mutability":"mutable","name":"callData","nameLocation":"3006:8:200","nodeType":"VariableDeclaration","scope":135152,"src":"2993:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135126,"name":"bytes","nodeType":"ElementaryTypeName","src":"2993:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2971:44:200"},"returnParameters":{"id":135131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135152,"src":"3032:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135129,"name":"bytes","nodeType":"ElementaryTypeName","src":"3032:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3031:14:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135182,"nodeType":"FunctionDefinition","src":"3169:218:200","nodes":[],"body":{"id":135181,"nodeType":"Block","src":"3272:115:200","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":135166,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134973,"src":"3307:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135169,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"3333:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3344:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":134927,"src":"3333:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.call(ResourceId,bytes memory) returns (bytes memory)"}},{"components":[{"id":135171,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135155,"src":"3351:8:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135172,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135157,"src":"3361:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":135173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3350:20:200","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$","typeString":"tuple(ResourceId,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.call(ResourceId,bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$","typeString":"tuple(ResourceId,bytes memory)"}],"expression":{"id":135167,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3318:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3322:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"3318:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3318:53:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135164,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"3296:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3302:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"3296:10:200","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3296:76:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3375:5:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":135176,"name":"bytes","nodeType":"ElementaryTypeName","src":"3375:5:200","typeDescriptions":{}}}],"id":135178,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3374:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":135162,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3285:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3289:6:200","memberName":"decode","nodeType":"MemberAccess","src":"3285:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3285:97:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":135161,"id":135180,"nodeType":"Return","src":"3278:104:200"}]},"functionSelector":"3fa01b98","implemented":true,"kind":"function","modifiers":[],"name":"_executeFromSystemA","nameLocation":"3178:19:200","parameters":{"id":135158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135155,"mutability":"mutable","name":"systemId","nameLocation":"3209:8:200","nodeType":"VariableDeclaration","scope":135182,"src":"3198:19:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135154,"nodeType":"UserDefinedTypeName","pathNode":{"id":135153,"name":"ResourceId","nameLocations":["3198:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"3198:10:200"},"referencedDeclaration":2782,"src":"3198:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"constant":false,"id":135157,"mutability":"mutable","name":"callData","nameLocation":"3232:8:200","nodeType":"VariableDeclaration","scope":135182,"src":"3219:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135156,"name":"bytes","nodeType":"ElementaryTypeName","src":"3219:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3197:44:200"},"returnParameters":{"id":135161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135182,"src":"3258:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135159,"name":"bytes","nodeType":"ElementaryTypeName","src":"3258:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3257:14:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135208,"nodeType":"FunctionDefinition","src":"3391:206:200","nodes":[],"body":{"id":135207,"nodeType":"Block","src":"3477:120:200","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":135193,"name":"rootSystemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134979,"src":"3512:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135196,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"3542:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3553:15:200","memberName":"callViaSelector","nodeType":"MemberAccess","referencedDeclaration":134940,"src":"3542:26:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.callViaSelector(bytes memory) returns (bytes memory)"}},{"components":[{"id":135198,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135184,"src":"3571:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":135199,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3570:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.callViaSelector(bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135194,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3527:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3531:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"3527:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3527:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135191,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"3501:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3507:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"3501:10:200","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:81:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3585:5:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":135202,"name":"bytes","nodeType":"ElementaryTypeName","src":"3585:5:200","typeDescriptions":{}}}],"id":135204,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3584:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":135189,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3490:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3494:6:200","memberName":"decode","nodeType":"MemberAccess","src":"3490:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3490:102:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":135188,"id":135206,"nodeType":"Return","src":"3483:109:200"}]},"functionSelector":"199e1d17","implemented":true,"kind":"function","modifiers":[],"name":"_executeFromRootSystemA","nameLocation":"3400:23:200","parameters":{"id":135185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135184,"mutability":"mutable","name":"callData","nameLocation":"3437:8:200","nodeType":"VariableDeclaration","scope":135208,"src":"3424:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135183,"name":"bytes","nodeType":"ElementaryTypeName","src":"3424:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3423:23:200"},"returnParameters":{"id":135188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135187,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135208,"src":"3463:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135186,"name":"bytes","nodeType":"ElementaryTypeName","src":"3463:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3462:14:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135234,"nodeType":"FunctionDefinition","src":"3601:198:200","nodes":[],"body":{"id":135233,"nodeType":"Block","src":"3683:116:200","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":135219,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134973,"src":"3718:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135222,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"3744:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3755:15:200","memberName":"callViaSelector","nodeType":"MemberAccess","referencedDeclaration":134940,"src":"3744:26:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.callViaSelector(bytes memory) returns (bytes memory)"}},{"components":[{"id":135224,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135210,"src":"3773:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":135225,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3772:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.callViaSelector(bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135220,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3729:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3733:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"3729:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3729:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135217,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"3707:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3713:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"3707:10:200","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3707:77:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3787:5:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":135228,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:200","typeDescriptions":{}}}],"id":135230,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3786:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":135215,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3696:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3700:6:200","memberName":"decode","nodeType":"MemberAccess","src":"3696:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3696:98:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":135214,"id":135232,"nodeType":"Return","src":"3689:105:200"}]},"functionSelector":"075d7777","implemented":true,"kind":"function","modifiers":[],"name":"_executeFromSystemA","nameLocation":"3610:19:200","parameters":{"id":135211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135210,"mutability":"mutable","name":"callData","nameLocation":"3643:8:200","nodeType":"VariableDeclaration","scope":135234,"src":"3630:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135209,"name":"bytes","nodeType":"ElementaryTypeName","src":"3630:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3629:23:200"},"returnParameters":{"id":135214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135234,"src":"3669:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135212,"name":"bytes","nodeType":"ElementaryTypeName","src":"3669:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3668:14:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135267,"nodeType":"FunctionDefinition","src":"3906:244:200","nodes":[],"body":{"id":135266,"nodeType":"Block","src":"3954:196:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135240,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"3969:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135237,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3960:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3963:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"3960:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3960:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135242,"nodeType":"ExpressionStatement","src":"3960:16:200"},{"assignments":[135244],"declarations":[{"constant":false,"id":135244,"mutability":"mutable","name":"returnData","nameLocation":"3995:10:200","nodeType":"VariableDeclaration","scope":135266,"src":"3982:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135243,"name":"bytes","nodeType":"ElementaryTypeName","src":"3982:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135254,"initialValue":{"arguments":[{"id":135246,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"4032:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135249,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"4062:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4073:9:200","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":134891,"src":"4062:20:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"}},{"components":[],"id":135251,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4084:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135247,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4047:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4051:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"4047:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4047:40:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135245,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135152,135208],"referencedDeclaration":135152,"src":"4008:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4008:80:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3982:106:200"},{"expression":{"arguments":[{"arguments":[{"id":135258,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135244,"src":"4114:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4127:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135259,"name":"address","nodeType":"ElementaryTypeName","src":"4127:7:200","typeDescriptions":{}}}],"id":135261,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4126:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135256,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4103:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4107:6:200","memberName":"decode","nodeType":"MemberAccess","src":"4103:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":135263,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"4138:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135255,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"4094:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4094:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135265,"nodeType":"ExpressionStatement","src":"4094:51:200"}]},"functionSelector":"ed3a1856","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromRootMsgSender","nameLocation":"3915:29:200","parameters":{"id":135235,"nodeType":"ParameterList","parameters":[],"src":"3944:2:200"},"returnParameters":{"id":135236,"nodeType":"ParameterList","parameters":[],"src":"3954:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135303,"nodeType":"FunctionDefinition","src":"4154:244:200","nodes":[],"body":{"id":135302,"nodeType":"Block","src":"4198:200:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135273,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"4213:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135270,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4204:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4207:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4204:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4204:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135275,"nodeType":"ExpressionStatement","src":"4204:16:200"},{"assignments":[135277],"declarations":[{"constant":false,"id":135277,"mutability":"mutable","name":"returnData","nameLocation":"4239:10:200","nodeType":"VariableDeclaration","scope":135302,"src":"4226:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135276,"name":"bytes","nodeType":"ElementaryTypeName","src":"4226:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135287,"initialValue":{"arguments":[{"id":135279,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"4276:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135282,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"4306:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4317:5:200","memberName":"world","nodeType":"MemberAccess","referencedDeclaration":134900,"src":"4306:16:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"}},{"components":[],"id":135284,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4324:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135280,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4291:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4295:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"4291:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:36:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135278,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135152,135208],"referencedDeclaration":135152,"src":"4252:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4252:76:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4226:102:200"},{"expression":{"arguments":[{"arguments":[{"id":135291,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135277,"src":"4354:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4367:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135292,"name":"address","nodeType":"ElementaryTypeName","src":"4367:7:200","typeDescriptions":{}}}],"id":135294,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4366:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135289,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4343:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4347:6:200","memberName":"decode","nodeType":"MemberAccess","src":"4343:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4343:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135298,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"4386:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4378:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135296,"name":"address","nodeType":"ElementaryTypeName","src":"4378:7:200","typeDescriptions":{}}},"id":135299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4378:14:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135288,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"4334:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4334:59:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135301,"nodeType":"ExpressionStatement","src":"4334:59:200"}]},"functionSelector":"3911733c","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromRootWorld","nameLocation":"4163:25:200","parameters":{"id":135268,"nodeType":"ParameterList","parameters":[],"src":"4188:2:200"},"returnParameters":{"id":135269,"nodeType":"ParameterList","parameters":[],"src":"4198:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135337,"nodeType":"FunctionDefinition","src":"4402:241:200","nodes":[],"body":{"id":135336,"nodeType":"Block","src":"4445:198:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135309,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"4460:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135306,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4451:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4454:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4451:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4451:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135311,"nodeType":"ExpressionStatement","src":"4451:16:200"},{"assignments":[135313],"declarations":[{"constant":false,"id":135313,"mutability":"mutable","name":"returnData","nameLocation":"4486:10:200","nodeType":"VariableDeclaration","scope":135336,"src":"4473:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135312,"name":"bytes","nodeType":"ElementaryTypeName","src":"4473:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135324,"initialValue":{"arguments":[{"id":135315,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"4523:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135318,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"4553:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4564:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134910,"src":"4553:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},{"components":[{"hexValue":"68656c6c6f","id":135320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4571:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"id":135321,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4570:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135316,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4538:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4542:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"4538:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4538:42:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135314,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135152,135208],"referencedDeclaration":135152,"src":"4499:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4499:82:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4473:108:200"},{"expression":{"arguments":[{"arguments":[{"id":135328,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135313,"src":"4607:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4620:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135329,"name":"string","nodeType":"ElementaryTypeName","src":"4620:6:200","typeDescriptions":{}}}],"id":135331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4619:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135326,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4596:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4600:6:200","memberName":"decode","nodeType":"MemberAccess","src":"4596:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4596:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4630:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135325,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"4587:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4587:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135335,"nodeType":"ExpressionStatement","src":"4587:51:200"}]},"functionSelector":"3424e1c1","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromRootEcho","nameLocation":"4411:24:200","parameters":{"id":135304,"nodeType":"ParameterList","parameters":[],"src":"4435:2:200"},"returnParameters":{"id":135305,"nodeType":"ParameterList","parameters":[],"src":"4445:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135383,"nodeType":"FunctionDefinition","src":"4647:438:200","nodes":[],"body":{"id":135382,"nodeType":"Block","src":"4699:386:200","nodes":[],"statements":[{"assignments":[135341],"declarations":[{"constant":false,"id":135341,"mutability":"mutable","name":"worldFunctionSelector","nameLocation":"4712:21:200","nodeType":"VariableDeclaration","scope":135382,"src":"4705:28:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":135340,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4705:6:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":135350,"initialValue":{"arguments":[{"id":135344,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"4778:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"6563686f28737472696e6729","id":135345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4799:14:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},"value":"echo(string)"},{"expression":{"expression":{"id":135346,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"4821:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4832:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134910,"src":"4821:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},"id":135348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4837:8:200","memberName":"selector","nodeType":"MemberAccess","src":"4821:24:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":135342,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"4736:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4742:28:200","memberName":"registerRootFunctionSelector","nodeType":"MemberAccess","referencedDeclaration":24513,"src":"4736:34:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_string_memory_ptr_$_t_bytes4_$returns$_t_bytes4_$","typeString":"function (ResourceId,string memory,bytes4) external returns (bytes4)"}},"id":135349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4736:115:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"4705:146:200"},{"assignments":[135352],"declarations":[{"constant":false,"id":135352,"mutability":"mutable","name":"callData","nameLocation":"4870:8:200","nodeType":"VariableDeclaration","scope":135382,"src":"4857:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135351,"name":"bytes","nodeType":"ElementaryTypeName","src":"4857:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135358,"initialValue":{"arguments":[{"id":135355,"name":"worldFunctionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135341,"src":"4904:21:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"68656c6c6f","id":135356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4927:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135353,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4881:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4885:18:200","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4881:22:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4857:78:200"},{"expression":{"arguments":[{"id":135362,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"4951:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135359,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4942:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4945:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4942:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4942:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135364,"nodeType":"ExpressionStatement","src":"4942:16:200"},{"assignments":[135366],"declarations":[{"constant":false,"id":135366,"mutability":"mutable","name":"returnData","nameLocation":"4977:10:200","nodeType":"VariableDeclaration","scope":135382,"src":"4964:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135365,"name":"bytes","nodeType":"ElementaryTypeName","src":"4964:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135370,"initialValue":{"arguments":[{"id":135368,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135352,"src":"5014:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135367,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135152,135208],"referencedDeclaration":135208,"src":"4990:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":135369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4964:59:200"},{"expression":{"arguments":[{"arguments":[{"id":135374,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135366,"src":"5049:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5062:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135375,"name":"string","nodeType":"ElementaryTypeName","src":"5062:6:200","typeDescriptions":{}}}],"id":135377,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5061:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135372,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5038:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5042:6:200","memberName":"decode","nodeType":"MemberAccess","src":"5038:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5038:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5072:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135371,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"5029:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5029:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135381,"nodeType":"ExpressionStatement","src":"5029:51:200"}]},"functionSelector":"78845560","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromRootWorldSelector","nameLocation":"4656:33:200","parameters":{"id":135338,"nodeType":"ParameterList","parameters":[],"src":"4689:2:200"},"returnParameters":{"id":135339,"nodeType":"ParameterList","parameters":[],"src":"4699:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135419,"nodeType":"FunctionDefinition","src":"5196:253:200","nodes":[],"body":{"id":135418,"nodeType":"Block","src":"5247:202:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135389,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"5262:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135386,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5253:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5256:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5253:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5253:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135391,"nodeType":"ExpressionStatement","src":"5253:16:200"},{"assignments":[135393],"declarations":[{"constant":false,"id":135393,"mutability":"mutable","name":"returnData","nameLocation":"5288:10:200","nodeType":"VariableDeclaration","scope":135418,"src":"5275:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135392,"name":"bytes","nodeType":"ElementaryTypeName","src":"5275:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135403,"initialValue":{"arguments":[{"id":135395,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"5321:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135398,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"5351:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5362:9:200","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":134891,"src":"5351:20:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"}},{"components":[],"id":135400,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5373:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135396,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5336:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5340:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"5336:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5336:40:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135394,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135182,135234],"referencedDeclaration":135182,"src":"5301:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5301:76:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5275:102:200"},{"expression":{"arguments":[{"arguments":[{"id":135407,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135393,"src":"5403:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5416:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135408,"name":"address","nodeType":"ElementaryTypeName","src":"5416:7:200","typeDescriptions":{}}}],"id":135410,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5415:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135405,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5392:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5396:6:200","memberName":"decode","nodeType":"MemberAccess","src":"5392:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5392:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135414,"name":"systemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134961,"src":"5435:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}],"id":135413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5427:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135412,"name":"address","nodeType":"ElementaryTypeName","src":"5427:7:200","typeDescriptions":{}}},"id":135415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5427:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135404,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"5383:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5383:61:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135417,"nodeType":"ExpressionStatement","src":"5383:61:200"}]},"functionSelector":"e78c82e3","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromNonRootMsgSender","nameLocation":"5205:32:200","parameters":{"id":135384,"nodeType":"ParameterList","parameters":[],"src":"5237:2:200"},"returnParameters":{"id":135385,"nodeType":"ParameterList","parameters":[],"src":"5247:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135455,"nodeType":"FunctionDefinition","src":"5453:243:200","nodes":[],"body":{"id":135454,"nodeType":"Block","src":"5500:196:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135425,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"5515:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135422,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5506:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5509:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5506:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5506:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135427,"nodeType":"ExpressionStatement","src":"5506:16:200"},{"assignments":[135429],"declarations":[{"constant":false,"id":135429,"mutability":"mutable","name":"returnData","nameLocation":"5541:10:200","nodeType":"VariableDeclaration","scope":135454,"src":"5528:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135428,"name":"bytes","nodeType":"ElementaryTypeName","src":"5528:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135439,"initialValue":{"arguments":[{"id":135431,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"5574:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135434,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"5604:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5615:5:200","memberName":"world","nodeType":"MemberAccess","referencedDeclaration":134900,"src":"5604:16:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"}},{"components":[],"id":135436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5622:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135432,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5589:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5593:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"5589:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5589:36:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135430,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135182,135234],"referencedDeclaration":135182,"src":"5554:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5554:72:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5528:98:200"},{"expression":{"arguments":[{"arguments":[{"id":135443,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135429,"src":"5652:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5665:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135444,"name":"address","nodeType":"ElementaryTypeName","src":"5665:7:200","typeDescriptions":{}}}],"id":135446,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5664:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135441,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5641:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5645:6:200","memberName":"decode","nodeType":"MemberAccess","src":"5641:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5641:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135450,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"5684:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5676:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135448,"name":"address","nodeType":"ElementaryTypeName","src":"5676:7:200","typeDescriptions":{}}},"id":135451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5676:14:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135440,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"5632:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5632:59:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135453,"nodeType":"ExpressionStatement","src":"5632:59:200"}]},"functionSelector":"2cb6867d","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromNonRootWorld","nameLocation":"5462:28:200","parameters":{"id":135420,"nodeType":"ParameterList","parameters":[],"src":"5490:2:200"},"returnParameters":{"id":135421,"nodeType":"ParameterList","parameters":[],"src":"5500:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135489,"nodeType":"FunctionDefinition","src":"5700:240:200","nodes":[],"body":{"id":135488,"nodeType":"Block","src":"5746:194:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135461,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"5761:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135458,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5752:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5755:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5752:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5752:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135463,"nodeType":"ExpressionStatement","src":"5752:16:200"},{"assignments":[135465],"declarations":[{"constant":false,"id":135465,"mutability":"mutable","name":"returnData","nameLocation":"5787:10:200","nodeType":"VariableDeclaration","scope":135488,"src":"5774:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135464,"name":"bytes","nodeType":"ElementaryTypeName","src":"5774:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135476,"initialValue":{"arguments":[{"id":135467,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"5820:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135470,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"5850:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5861:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134910,"src":"5850:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},{"components":[{"hexValue":"68656c6c6f","id":135472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5868:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"id":135473,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5867:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135468,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5835:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5839:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"5835:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5835:42:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135466,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135182,135234],"referencedDeclaration":135182,"src":"5800:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5800:78:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5774:104:200"},{"expression":{"arguments":[{"arguments":[{"id":135480,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135465,"src":"5904:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5917:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135481,"name":"string","nodeType":"ElementaryTypeName","src":"5917:6:200","typeDescriptions":{}}}],"id":135483,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5916:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135478,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5893:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5897:6:200","memberName":"decode","nodeType":"MemberAccess","src":"5893:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5893:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5927:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135477,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"5884:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5884:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135487,"nodeType":"ExpressionStatement","src":"5884:51:200"}]},"functionSelector":"055e33e8","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromNonRootEcho","nameLocation":"5709:27:200","parameters":{"id":135456,"nodeType":"ParameterList","parameters":[],"src":"5736:2:200"},"returnParameters":{"id":135457,"nodeType":"ParameterList","parameters":[],"src":"5746:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135535,"nodeType":"FunctionDefinition","src":"5944:437:200","nodes":[],"body":{"id":135534,"nodeType":"Block","src":"5999:382:200","nodes":[],"statements":[{"assignments":[135493],"declarations":[{"constant":false,"id":135493,"mutability":"mutable","name":"worldFunctionSelector","nameLocation":"6012:21:200","nodeType":"VariableDeclaration","scope":135534,"src":"6005:28:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":135492,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6005:6:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":135502,"initialValue":{"arguments":[{"id":135496,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134982,"src":"6078:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"6563686f28737472696e6729","id":135497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6099:14:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},"value":"echo(string)"},{"expression":{"expression":{"id":135498,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"6121:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6132:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134910,"src":"6121:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},"id":135500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6137:8:200","memberName":"selector","nodeType":"MemberAccess","src":"6121:24:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":135494,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"6036:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6042:28:200","memberName":"registerRootFunctionSelector","nodeType":"MemberAccess","referencedDeclaration":24513,"src":"6036:34:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_string_memory_ptr_$_t_bytes4_$returns$_t_bytes4_$","typeString":"function (ResourceId,string memory,bytes4) external returns (bytes4)"}},"id":135501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6036:115:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"6005:146:200"},{"assignments":[135504],"declarations":[{"constant":false,"id":135504,"mutability":"mutable","name":"callData","nameLocation":"6170:8:200","nodeType":"VariableDeclaration","scope":135534,"src":"6157:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135503,"name":"bytes","nodeType":"ElementaryTypeName","src":"6157:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135510,"initialValue":{"arguments":[{"id":135507,"name":"worldFunctionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135493,"src":"6204:21:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"68656c6c6f","id":135508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6227:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135505,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6181:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6185:18:200","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6181:22:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6181:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6157:78:200"},{"expression":{"arguments":[{"id":135514,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"6251:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135511,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6242:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6245:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6242:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6242:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135516,"nodeType":"ExpressionStatement","src":"6242:16:200"},{"assignments":[135518],"declarations":[{"constant":false,"id":135518,"mutability":"mutable","name":"returnData","nameLocation":"6277:10:200","nodeType":"VariableDeclaration","scope":135534,"src":"6264:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135517,"name":"bytes","nodeType":"ElementaryTypeName","src":"6264:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135522,"initialValue":{"arguments":[{"id":135520,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135504,"src":"6310:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135519,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135182,135234],"referencedDeclaration":135234,"src":"6290:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":135521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:29:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6264:55:200"},{"expression":{"arguments":[{"arguments":[{"id":135526,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135518,"src":"6345:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6358:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135527,"name":"string","nodeType":"ElementaryTypeName","src":"6358:6:200","typeDescriptions":{}}}],"id":135529,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6357:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135524,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6334:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6338:6:200","memberName":"decode","nodeType":"MemberAccess","src":"6334:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6334:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6368:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135523,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"6325:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6325:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135533,"nodeType":"ExpressionStatement","src":"6325:51:200"}]},"functionSelector":"c0310bf6","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromNonRootWorldSelector","nameLocation":"5953:36:200","parameters":{"id":135490,"nodeType":"ParameterList","parameters":[],"src":"5989:2:200"},"returnParameters":{"id":135491,"nodeType":"ParameterList","parameters":[],"src":"5999:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135568,"nodeType":"FunctionDefinition","src":"6492:243:200","nodes":[],"body":{"id":135567,"nodeType":"Block","src":"6543:192:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135541,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"6558:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135538,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6549:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6552:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6549:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6549:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135543,"nodeType":"ExpressionStatement","src":"6549:16:200"},{"assignments":[135545],"declarations":[{"constant":false,"id":135545,"mutability":"mutable","name":"returnData","nameLocation":"6584:10:200","nodeType":"VariableDeclaration","scope":135567,"src":"6571:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135544,"name":"bytes","nodeType":"ElementaryTypeName","src":"6571:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135555,"initialValue":{"arguments":[{"id":135547,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"6621:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135550,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"6647:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6658:9:200","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":134891,"src":"6647:20:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"}},{"components":[],"id":135552,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6669:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135548,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6632:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6636:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"6632:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6632:40:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135546,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135152,135208],"referencedDeclaration":135152,"src":"6597:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6597:76:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6571:102:200"},{"expression":{"arguments":[{"arguments":[{"id":135559,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135545,"src":"6699:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6712:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135560,"name":"address","nodeType":"ElementaryTypeName","src":"6712:7:200","typeDescriptions":{}}}],"id":135562,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6711:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135557,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6688:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6692:6:200","memberName":"decode","nodeType":"MemberAccess","src":"6688:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6688:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":135564,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"6723:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135556,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"6679:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6679:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135566,"nodeType":"ExpressionStatement","src":"6679:51:200"}]},"functionSelector":"5af8de30","implemented":true,"kind":"function","modifiers":[],"name":"testCallNonRootFromRootMsgSender","nameLocation":"6501:32:200","parameters":{"id":135536,"nodeType":"ParameterList","parameters":[],"src":"6533:2:200"},"returnParameters":{"id":135537,"nodeType":"ParameterList","parameters":[],"src":"6543:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135604,"nodeType":"FunctionDefinition","src":"6739:243:200","nodes":[],"body":{"id":135603,"nodeType":"Block","src":"6786:196:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135574,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"6801:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135571,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6792:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6795:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6792:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6792:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135576,"nodeType":"ExpressionStatement","src":"6792:16:200"},{"assignments":[135578],"declarations":[{"constant":false,"id":135578,"mutability":"mutable","name":"returnData","nameLocation":"6827:10:200","nodeType":"VariableDeclaration","scope":135603,"src":"6814:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135577,"name":"bytes","nodeType":"ElementaryTypeName","src":"6814:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135588,"initialValue":{"arguments":[{"id":135580,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"6864:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135583,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"6890:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6901:5:200","memberName":"world","nodeType":"MemberAccess","referencedDeclaration":134900,"src":"6890:16:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"}},{"components":[],"id":135585,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6908:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135581,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6875:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6879:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"6875:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6875:36:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135579,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135152,135208],"referencedDeclaration":135152,"src":"6840:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6840:72:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6814:98:200"},{"expression":{"arguments":[{"arguments":[{"id":135592,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135578,"src":"6938:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6951:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135593,"name":"address","nodeType":"ElementaryTypeName","src":"6951:7:200","typeDescriptions":{}}}],"id":135595,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6950:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135590,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6927:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6931:6:200","memberName":"decode","nodeType":"MemberAccess","src":"6927:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6927:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135599,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"6970:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6962:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135597,"name":"address","nodeType":"ElementaryTypeName","src":"6962:7:200","typeDescriptions":{}}},"id":135600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6962:14:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135589,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"6918:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6918:59:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135602,"nodeType":"ExpressionStatement","src":"6918:59:200"}]},"functionSelector":"85dc0868","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromRootWorld","nameLocation":"6748:28:200","parameters":{"id":135569,"nodeType":"ParameterList","parameters":[],"src":"6776:2:200"},"returnParameters":{"id":135570,"nodeType":"ParameterList","parameters":[],"src":"6786:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135638,"nodeType":"FunctionDefinition","src":"6986:240:200","nodes":[],"body":{"id":135637,"nodeType":"Block","src":"7032:194:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135610,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"7047:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135607,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7038:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7041:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"7038:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7038:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135612,"nodeType":"ExpressionStatement","src":"7038:16:200"},{"assignments":[135614],"declarations":[{"constant":false,"id":135614,"mutability":"mutable","name":"returnData","nameLocation":"7073:10:200","nodeType":"VariableDeclaration","scope":135637,"src":"7060:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135613,"name":"bytes","nodeType":"ElementaryTypeName","src":"7060:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135625,"initialValue":{"arguments":[{"id":135616,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"7110:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135619,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"7136:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7147:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134910,"src":"7136:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},{"components":[{"hexValue":"68656c6c6f","id":135621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7154:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"id":135622,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7153:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135617,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7121:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7125:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"7121:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7121:42:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135615,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135152,135208],"referencedDeclaration":135152,"src":"7086:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7086:78:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7060:104:200"},{"expression":{"arguments":[{"arguments":[{"id":135629,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135614,"src":"7190:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7203:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135630,"name":"string","nodeType":"ElementaryTypeName","src":"7203:6:200","typeDescriptions":{}}}],"id":135632,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7202:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135627,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7179:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7183:6:200","memberName":"decode","nodeType":"MemberAccess","src":"7179:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7179:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7213:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135626,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"7170:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7170:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135636,"nodeType":"ExpressionStatement","src":"7170:51:200"}]},"functionSelector":"32d7d505","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromRootEcho","nameLocation":"6995:27:200","parameters":{"id":135605,"nodeType":"ParameterList","parameters":[],"src":"7022:2:200"},"returnParameters":{"id":135606,"nodeType":"ParameterList","parameters":[],"src":"7032:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135684,"nodeType":"FunctionDefinition","src":"7230:437:200","nodes":[],"body":{"id":135683,"nodeType":"Block","src":"7285:382:200","nodes":[],"statements":[{"assignments":[135642],"declarations":[{"constant":false,"id":135642,"mutability":"mutable","name":"worldFunctionSelector","nameLocation":"7298:21:200","nodeType":"VariableDeclaration","scope":135683,"src":"7291:28:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":135641,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7291:6:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":135651,"initialValue":{"arguments":[{"id":135645,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"7364:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"6563686f28737472696e6729","id":135646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7381:14:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},"value":"echo(string)"},{"expression":{"expression":{"id":135647,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"7403:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7414:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134910,"src":"7403:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},"id":135649,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7419:8:200","memberName":"selector","nodeType":"MemberAccess","src":"7403:24:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":135643,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"7322:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7328:28:200","memberName":"registerRootFunctionSelector","nodeType":"MemberAccess","referencedDeclaration":24513,"src":"7322:34:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_string_memory_ptr_$_t_bytes4_$returns$_t_bytes4_$","typeString":"function (ResourceId,string memory,bytes4) external returns (bytes4)"}},"id":135650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7322:111:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"7291:142:200"},{"assignments":[135653],"declarations":[{"constant":false,"id":135653,"mutability":"mutable","name":"callData","nameLocation":"7452:8:200","nodeType":"VariableDeclaration","scope":135683,"src":"7439:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135652,"name":"bytes","nodeType":"ElementaryTypeName","src":"7439:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135659,"initialValue":{"arguments":[{"id":135656,"name":"worldFunctionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135642,"src":"7486:21:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"68656c6c6f","id":135657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7509:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135654,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7463:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7467:18:200","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7463:22:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7463:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7439:78:200"},{"expression":{"arguments":[{"id":135663,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"7533:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135660,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7524:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7527:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"7524:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7524:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135665,"nodeType":"ExpressionStatement","src":"7524:16:200"},{"assignments":[135667],"declarations":[{"constant":false,"id":135667,"mutability":"mutable","name":"returnData","nameLocation":"7559:10:200","nodeType":"VariableDeclaration","scope":135683,"src":"7546:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135666,"name":"bytes","nodeType":"ElementaryTypeName","src":"7546:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135671,"initialValue":{"arguments":[{"id":135669,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135653,"src":"7596:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135668,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135152,135208],"referencedDeclaration":135208,"src":"7572:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":135670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7572:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7546:59:200"},{"expression":{"arguments":[{"arguments":[{"id":135675,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135667,"src":"7631:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7644:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135676,"name":"string","nodeType":"ElementaryTypeName","src":"7644:6:200","typeDescriptions":{}}}],"id":135678,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7643:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135673,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7620:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7624:6:200","memberName":"decode","nodeType":"MemberAccess","src":"7620:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7620:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7654:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135672,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"7611:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7611:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135682,"nodeType":"ExpressionStatement","src":"7611:51:200"}]},"functionSelector":"2f2499f4","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromRootWorldSelector","nameLocation":"7239:36:200","parameters":{"id":135639,"nodeType":"ParameterList","parameters":[],"src":"7275:2:200"},"returnParameters":{"id":135640,"nodeType":"ParameterList","parameters":[],"src":"7285:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135720,"nodeType":"FunctionDefinition","src":"7782:252:200","nodes":[],"body":{"id":135719,"nodeType":"Block","src":"7836:198:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135690,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"7851:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135687,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7842:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7845:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"7842:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7842:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135692,"nodeType":"ExpressionStatement","src":"7842:16:200"},{"assignments":[135694],"declarations":[{"constant":false,"id":135694,"mutability":"mutable","name":"returnData","nameLocation":"7877:10:200","nodeType":"VariableDeclaration","scope":135719,"src":"7864:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135693,"name":"bytes","nodeType":"ElementaryTypeName","src":"7864:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135704,"initialValue":{"arguments":[{"id":135696,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"7910:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135699,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"7936:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7947:9:200","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":134891,"src":"7936:20:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"}},{"components":[],"id":135701,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7958:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135697,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7921:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7925:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"7921:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7921:40:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135695,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135182,135234],"referencedDeclaration":135182,"src":"7890:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7890:72:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7864:98:200"},{"expression":{"arguments":[{"arguments":[{"id":135708,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135694,"src":"7988:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8001:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135709,"name":"address","nodeType":"ElementaryTypeName","src":"8001:7:200","typeDescriptions":{}}}],"id":135711,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8000:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135706,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7977:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7981:6:200","memberName":"decode","nodeType":"MemberAccess","src":"7977:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7977:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135715,"name":"systemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134961,"src":"8020:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EchoSystem_$134941","typeString":"contract EchoSystem"}],"id":135714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8012:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135713,"name":"address","nodeType":"ElementaryTypeName","src":"8012:7:200","typeDescriptions":{}}},"id":135716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8012:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135705,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"7968:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7968:61:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135718,"nodeType":"ExpressionStatement","src":"7968:61:200"}]},"functionSelector":"8d95e4d6","implemented":true,"kind":"function","modifiers":[],"name":"testCallNonRootFromNonRootMsgSender","nameLocation":"7791:35:200","parameters":{"id":135685,"nodeType":"ParameterList","parameters":[],"src":"7826:2:200"},"returnParameters":{"id":135686,"nodeType":"ParameterList","parameters":[],"src":"7836:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135756,"nodeType":"FunctionDefinition","src":"8038:242:200","nodes":[],"body":{"id":135755,"nodeType":"Block","src":"8088:192:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135726,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"8103:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135723,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"8094:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8097:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"8094:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8094:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135728,"nodeType":"ExpressionStatement","src":"8094:16:200"},{"assignments":[135730],"declarations":[{"constant":false,"id":135730,"mutability":"mutable","name":"returnData","nameLocation":"8129:10:200","nodeType":"VariableDeclaration","scope":135755,"src":"8116:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135729,"name":"bytes","nodeType":"ElementaryTypeName","src":"8116:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135740,"initialValue":{"arguments":[{"id":135732,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"8162:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135735,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"8188:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8199:5:200","memberName":"world","nodeType":"MemberAccess","referencedDeclaration":134900,"src":"8188:16:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"}},{"components":[],"id":135737,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8206:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135733,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8173:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8177:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"8173:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8173:36:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135731,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135182,135234],"referencedDeclaration":135182,"src":"8142:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8142:68:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8116:94:200"},{"expression":{"arguments":[{"arguments":[{"id":135744,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135730,"src":"8236:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8249:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135745,"name":"address","nodeType":"ElementaryTypeName","src":"8249:7:200","typeDescriptions":{}}}],"id":135747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8248:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135742,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8225:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8229:6:200","memberName":"decode","nodeType":"MemberAccess","src":"8225:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8225:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135751,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"8268:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8260:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135749,"name":"address","nodeType":"ElementaryTypeName","src":"8260:7:200","typeDescriptions":{}}},"id":135752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:14:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135741,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"8216:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8216:59:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135754,"nodeType":"ExpressionStatement","src":"8216:59:200"}]},"functionSelector":"4478d618","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromNonRootWorld","nameLocation":"8047:31:200","parameters":{"id":135721,"nodeType":"ParameterList","parameters":[],"src":"8078:2:200"},"returnParameters":{"id":135722,"nodeType":"ParameterList","parameters":[],"src":"8088:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135790,"nodeType":"FunctionDefinition","src":"8284:239:200","nodes":[],"body":{"id":135789,"nodeType":"Block","src":"8333:190:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135762,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"8348:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135759,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"8339:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8342:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"8339:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8339:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135764,"nodeType":"ExpressionStatement","src":"8339:16:200"},{"assignments":[135766],"declarations":[{"constant":false,"id":135766,"mutability":"mutable","name":"returnData","nameLocation":"8374:10:200","nodeType":"VariableDeclaration","scope":135789,"src":"8361:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135765,"name":"bytes","nodeType":"ElementaryTypeName","src":"8361:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135777,"initialValue":{"arguments":[{"id":135768,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"8407:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135771,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"8433:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8444:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134910,"src":"8433:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},{"components":[{"hexValue":"68656c6c6f","id":135773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8451:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"id":135774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8450:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135769,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8418:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8422:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"8418:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:42:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135767,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135182,135234],"referencedDeclaration":135182,"src":"8387:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8387:74:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8361:100:200"},{"expression":{"arguments":[{"arguments":[{"id":135781,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135766,"src":"8487:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135783,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8500:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135782,"name":"string","nodeType":"ElementaryTypeName","src":"8500:6:200","typeDescriptions":{}}}],"id":135784,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8499:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135779,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8476:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8480:6:200","memberName":"decode","nodeType":"MemberAccess","src":"8476:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8476:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8510:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135778,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"8467:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8467:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135788,"nodeType":"ExpressionStatement","src":"8467:51:200"}]},"functionSelector":"aec62e14","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromNonRootEcho","nameLocation":"8293:30:200","parameters":{"id":135757,"nodeType":"ParameterList","parameters":[],"src":"8323:2:200"},"returnParameters":{"id":135758,"nodeType":"ParameterList","parameters":[],"src":"8333:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135836,"nodeType":"FunctionDefinition","src":"8527:436:200","nodes":[],"body":{"id":135835,"nodeType":"Block","src":"8585:378:200","nodes":[],"statements":[{"assignments":[135794],"declarations":[{"constant":false,"id":135794,"mutability":"mutable","name":"worldFunctionSelector","nameLocation":"8598:21:200","nodeType":"VariableDeclaration","scope":135835,"src":"8591:28:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":135793,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8591:6:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":135803,"initialValue":{"arguments":[{"id":135797,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134976,"src":"8664:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"6563686f28737472696e6729","id":135798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8681:14:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},"value":"echo(string)"},{"expression":{"expression":{"id":135799,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134941,"src":"8703:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134941_$","typeString":"type(contract EchoSystem)"}},"id":135800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8714:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134910,"src":"8703:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},"id":135801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8719:8:200","memberName":"selector","nodeType":"MemberAccess","src":"8703:24:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":135795,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134958,"src":"8622:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8628:28:200","memberName":"registerRootFunctionSelector","nodeType":"MemberAccess","referencedDeclaration":24513,"src":"8622:34:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_string_memory_ptr_$_t_bytes4_$returns$_t_bytes4_$","typeString":"function (ResourceId,string memory,bytes4) external returns (bytes4)"}},"id":135802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8622:111:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"8591:142:200"},{"assignments":[135805],"declarations":[{"constant":false,"id":135805,"mutability":"mutable","name":"callData","nameLocation":"8752:8:200","nodeType":"VariableDeclaration","scope":135835,"src":"8739:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135804,"name":"bytes","nodeType":"ElementaryTypeName","src":"8739:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135811,"initialValue":{"arguments":[{"id":135808,"name":"worldFunctionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135794,"src":"8786:21:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"68656c6c6f","id":135809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8809:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135806,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8763:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8767:18:200","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"8763:22:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8763:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8739:78:200"},{"expression":{"arguments":[{"id":135815,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134947,"src":"8833:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135812,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"8824:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8827:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"8824:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8824:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135817,"nodeType":"ExpressionStatement","src":"8824:16:200"},{"assignments":[135819],"declarations":[{"constant":false,"id":135819,"mutability":"mutable","name":"returnData","nameLocation":"8859:10:200","nodeType":"VariableDeclaration","scope":135835,"src":"8846:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135818,"name":"bytes","nodeType":"ElementaryTypeName","src":"8846:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135823,"initialValue":{"arguments":[{"id":135821,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135805,"src":"8892:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135820,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135182,135234],"referencedDeclaration":135234,"src":"8872:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":135822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8872:29:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8846:55:200"},{"expression":{"arguments":[{"arguments":[{"id":135827,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135819,"src":"8927:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8940:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135828,"name":"string","nodeType":"ElementaryTypeName","src":"8940:6:200","typeDescriptions":{}}}],"id":135830,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8939:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135825,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8916:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8920:6:200","memberName":"decode","nodeType":"MemberAccess","src":"8916:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8916:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8950:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135824,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"8907:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8907:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135834,"nodeType":"ExpressionStatement","src":"8907:51:200"}]},"functionSelector":"54dcf132","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromNonRootWorldSelector","nameLocation":"8536:39:200","parameters":{"id":135791,"nodeType":"ParameterList","parameters":[],"src":"8575:2:200"},"returnParameters":{"id":135792,"nodeType":"ParameterList","parameters":[],"src":"8585:0:200"},"scope":135837,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":134948,"name":"Test","nameLocations":["1432:4:200"],"nodeType":"IdentifierPath","referencedDeclaration":58812,"src":"1432:4:200"},"id":134949,"nodeType":"InheritanceSpecifier","src":"1432:4:200"},{"baseName":{"id":134950,"name":"GasReporter","nameLocations":["1438:11:200"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"1438:11:200"},"id":134951,"nodeType":"InheritanceSpecifier","src":"1438:11:200"}],"canonicalName":"SystemSwitchTest","contractDependencies":[23730,35431,35451,35650,35830,36019,134941],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[135837,226,58812,49271,49268,58761,54499,54209,53445,51391,50698,49205],"name":"SystemSwitchTest","nameLocation":"1412:16:200","scope":135838,"usedErrors":[],"usedEvents":[46919,46923,46927,46931,46935,46939,46943,46947,46953,46959,46967,46975,46981,46987,46993,46999,49293,49298,49303,49310,49317,49324]}],"license":"MIT"},"id":200}
1
+ {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"_executeFromRootSystemA","inputs":[{"name":"systemId","type":"bytes32","internalType":"ResourceId"},{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"_executeFromRootSystemA","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"_executeFromSystemA","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"_executeFromSystemA","inputs":[{"name":"systemId","type":"bytes32","internalType":"ResourceId"},{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"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":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"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":"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":"testCallNonRootFromNonRootMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallNonRootFromRootMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromNonRootEcho","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromNonRootMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromNonRootWorld","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromNonRootWorldSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromRootEcho","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromRootMsgSender","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromRootWorld","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallRootFromRootWorldSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromNonRootEcho","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromNonRootWorld","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromNonRootWorldSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromRootEcho","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromRootWorld","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonCallRootFromRootWorldSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c5534801561003157600080fd5b506201788880620000436000396000f3fe60806040523480156200001157600080fd5b50600436106200020d5760003560e01c806354dcf1321162000125578063aec62e1411620000af578063e20c9f71116200007a578063e20c9f7114620003ac578063e78c82e314620003b6578063ed3a185614620003c0578063fa7626d414620003ca57600080fd5b8063aec62e141462000373578063b5508aa9146200037d578063ba414fa61462000387578063c0310bf614620003a257600080fd5b806385226c8111620000f057806385226c81146200033c57806385dc086814620003555780638d95e4d6146200035f578063916a17c6146200036957600080fd5b806354dcf13214620003055780635af8de30146200030f57806366d9a9a0146200031957806378845560146200033257600080fd5b80632f2499f411620001a75780633e5e3c2311620001725780633e5e3c2314620002d05780633f7286f414620002da5780633fa01b9814620002e45780634478d61814620002fb57600080fd5b80632f2499f414620002a857806332d7d50514620002b25780633424e1c114620002bc5780633911733c14620002c657600080fd5b8063101f99a311620001e8578063101f99a31462000257578063199e1d17146200026e5780631ed7831c14620002855780632cb6867d146200029e57600080fd5b8063055e33e81462000212578063075d7777146200021e5780630a9254e4146200024d575b600080fd5b6200021c620003d8565b005b620002356200022f366004620026f6565b620004e1565b6040516200024491906200278b565b60405180910390f35b6200021c620005ef565b6200023562000268366004620027a0565b62000c94565b620002356200027f366004620026f6565b62000da5565b6200028f62000dd1565b604051620002449190620027eb565b6200021c62000e35565b6200021c62000f05565b6200021c620010d0565b6200021c62001196565b6200021c62001231565b6200028f620012d3565b6200028f62001335565b62000235620002f5366004620027a0565b62001397565b6200021c620013c5565b6200021c62001467565b6200021c62001611565b62000323620016d8565b6040516200024491906200283a565b6200021c620017cb565b6200034662001843565b60405162000244919062002909565b6200021c6200191d565b6200021c620019bf565b6200032362001a8f565b6200021c62001b79565b6200034662001c14565b6200039162001cee565b604051901515815260200162000244565b6200021c62001e3a565b6200028f62001eb2565b6200021c62001f14565b6200021c62001fb6565b600054620003919060ff1681565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200042757600080fd5b505af11580156200043c573d6000803e3d6000fd5b505060275460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084015b60408051601f198184030181529190526020810180516001600160e01b031663f15da72960e01b17905262001397565b9050620004de81806020019051810190620004ba9190620029a5565b6040518060400160405280600581526020016468656c6c6f60d81b81525062002058565b50565b601f54602480546040516060936001600160a01b031692633ae7af0892916200050d918791016200278b565b60408051601f198184030181529181526020820180516001600160e01b03167f96f09da600000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526200058a929190600401620029f3565b6000604051808303816000875af1158015620005aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620005d49190810190620029a5565b806020019051810190620005e99190620029a5565b92915050565b6000604051620005ff90620025aa565b604051809103906000f0801580156200061c573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de862000638620021be565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200069257600080fd5b505af1158015620006a7573d6000803e3d6000fd5b5050601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555050604051620006e190620025b8565b604051809103906000f080158015620006fe573d6000803e3d6000fd5b506020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040516200073a90620025b8565b604051809103906000f08015801562000757573d6000803e3d6000fd5b506021805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040516200079390620025b8565b604051809103906000f080158015620007b0573d6000803e3d6000fd5b506022805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055604051620007ec90620025b8565b604051809103906000f08015801562000809573d6000803e3d6000fd5b506023805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556200088961737960f01b7f6e616d65737061636541000000000000000000000000000000000000000000007f73797374656d4100000000000000000000000000000000000000000000000000620022c9565b602455620008de61737960f01b7f6e616d65737061636542000000000000000000000000000000000000000000007f73797374656d4200000000000000000000000000000000000000000000000000620022c9565b6025556200091461737960f01b60007f73797374656d4100000000000000000000000000000000000000000000000000620022c9565b6026556200094a61737960f01b60007f73797374656d4200000000000000000000000000000000000000000000000000620022c9565b602755601f546024546001600160a01b039091169063b29e408990620009af907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b8152600401620009ce91815260200190565b600060405180830381600087803b158015620009e957600080fd5b505af1158015620009fe573d6000803e3d6000fd5b5050601f546025546001600160a01b03909116925063b29e4089915062000a64907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b815260040162000a8391815260200190565b600060405180830381600087803b15801562000a9e57600080fd5b505af115801562000ab3573d6000803e3d6000fd5b5050601f5460248054602054604051633350b6a960e01b815260048101929092526001600160a01b03908116928201929092526001604482015291169250633350b6a99150606401600060405180830381600087803b15801562000b1657600080fd5b505af115801562000b2b573d6000803e3d6000fd5b5050601f54602554602154604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000b8c57600080fd5b505af115801562000ba1573d6000803e3d6000fd5b5050601f54602654602254604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000c0257600080fd5b505af115801562000c17573d6000803e3d6000fd5b5050601f54602754602354604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000c7857600080fd5b505af115801562000c8d573d6000803e3d6000fd5b5050505050565b601f546026546040516060926001600160a01b031691633ae7af089162000cc29087908790602401620029f3565b60408051601f198184030181529181526020820180516001600160e01b03167f3ae7af0800000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815262000d3f929190600401620029f3565b6000604051808303816000875af115801562000d5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d899190810190620029a5565b80602001905181019062000d9e9190620029a5565b9392505050565b601f546026546040516060926001600160a01b031691633ae7af08916200050d9086906024016200278b565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000e2b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e0c575b5050505050905090565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e8457600080fd5b505af115801562000e99573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062001397565b9050620004de8180602001905181019062000ef3919062002a0e565b601f546001600160a01b031662002351565b601f54602554604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a4015b6020604051808303816000875af115801562000f98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbe919062002a39565b905060008160405160240162000fed9060208082526005908201526468656c6c6f60d81b604082015260600190565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252905163ca669fa760e01b81526110886004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200108957600080fd5b505af11580156200109e573d6000803e3d6000fd5b505050506000620010af8262000da5565b9050620010cb81806020019051810190620004ba9190620029a5565b505050565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200111f57600080fd5b505af115801562001134573d6000803e3d6000fd5b505060255460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084015b60408051601f198184030181529190526020810180516001600160e01b031663f15da72960e01b17905262000c94565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620011e557600080fd5b505af1158015620011fa573d6000803e3d6000fd5b505060275460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e925060840162001166565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200128057600080fd5b505af115801562001295573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062000c94565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b601f54602480546040516060936001600160a01b031692633ae7af08929162000cc2918891889101620029f3565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200141457600080fd5b505af115801562001429573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062001397565b601f54602554604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a4015b6020604051808303816000875af1158015620014fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001520919062002a39565b90506000816040516024016200154f9060208082526005908201526468656c6c6f60d81b604082015260600190565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252905163ca669fa760e01b81526110886004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620015eb57600080fd5b505af115801562001600573d6000803e3d6000fd5b505050506000620010af82620004e1565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200166057600080fd5b505af115801562001675573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b17905260009350620016b3925062000c94565b9050620004de81806020019051810190620016cf919062002a0e565b61108862002351565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620017c25760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620017a957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200176a5790505b50505050508152505081526020019060010190620016fc565b50505050905090565b601f54602754604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a40162000f78565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620017c2578382906000526020600020018054620018899062002a7d565b80601f0160208091040260200160405190810160405280929190818152602001828054620018b79062002a7d565b8015620019085780601f10620018dc5761010080835404028352916020019162001908565b820191906000526020600020905b815481529060010190602001808311620018ea57829003601f168201915b50505050508152602001906001019062001867565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200196c57600080fd5b505af115801562001981573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062000c94565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a0e57600080fd5b505af115801562001a23573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b1790526000935062001a61925062001397565b9050620004de8180602001905181019062001a7d919062002a0e565b6020546001600160a01b031662002351565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620017c25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b6057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001b215790505b5050505050815250508152602001906001019062001ab3565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001bc857600080fd5b505af115801562001bdd573d6000803e3d6000fd5b505060255460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084016200046e565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620017c257838290600052602060002001805462001c5a9062002a7d565b80601f016020809104026020016040519081016040528092919081815260200182805462001c889062002a7d565b801562001cd95780601f1062001cad5761010080835404028352916020019162001cd9565b820191906000526020600020905b81548152906001019060200180831162001cbb57829003601f168201915b50505050508152602001906001019062001c38565b60008054610100900460ff161562001d0f5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001e355760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001db7917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002ad2565b60408051601f198184030181529082905262001dd39162002b1c565b6000604051808303816000865af19150503d806000811462001e12576040519150601f19603f3d011682016040523d82523d6000602084013e62001e17565b606091505b509150508080602001905181019062001e31919062002b3a565b9150505b919050565b601f54602754604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a401620014da565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f6357600080fd5b505af115801562001f78573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b1790526000935062001a61925062001397565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200200557600080fd5b505af11580156200201a573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b17905260009350620016b3925062000c94565b806040516020016200206b919062002b1c565b604051602081830303815290604052805190602001208260405160200162002094919062002b1c565b6040516020818303038152906040528051906020012014620021ba577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620021369060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200216f919062002b5e565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620021a8919062002bb0565b60405180910390a1620021ba62002463565b5050565b6000604051620021ce90620025c6565b604051809103906000f080158015620021eb573d6000803e3d6000fd5b50604051620021fa90620025d4565b604051809103906000f08015801562002217573d6000803e3d6000fd5b506040516200222690620025e2565b604051809103906000f08015801562002243573d6000803e3d6000fd5b506040516200225290620025f0565b604051809103906000f0801580156200226f573d6000803e3d6000fd5b506040516200227e90620025fe565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022c3573d6000803e3d6000fd5b50905090565b6000620022d96070601062002bee565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316901c601084901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167fffff0000000000000000000000000000000000000000000000000000000000008616171790509392505050565b806001600160a01b0316826001600160a01b031614620021ba577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620023f19060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200242a919062002c29565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620021a8919062002c7e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200257c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002517929160200162002ad2565b60408051601f1981840301815290829052620025339162002b1c565b6000604051808303816000865af19150503d806000811462002572576040519150601f19603f3d011682016040523d82523d6000602084013e62002577565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b61553a8062002cbd83390190565b61154280620081f783390190565b611a79806200973983390190565b6118cc806200b1b283390190565b610b15806200ca7e83390190565b61567c806200d59383390190565b614c6d8062012c0f83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200266757620026676200260c565b604052919050565b600067ffffffffffffffff8211156200268c576200268c6200260c565b50601f01601f191660200190565b600082601f830112620026ac57600080fd5b8135620026c3620026bd826200266f565b6200263b565b818152846020838601011115620026d957600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156200270957600080fd5b813567ffffffffffffffff8111156200272157600080fd5b6200272f848285016200269a565b949350505050565b60005b83811015620027545781810151838201526020016200273a565b50506000910152565b600081518084526200277781602086016020860162002737565b601f01601f19169290920160200192915050565b60208152600062000d9e60208301846200275d565b60008060408385031215620027b457600080fd5b82359150602083013567ffffffffffffffff811115620027d357600080fd5b620027e1858286016200269a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156200282e5783516001600160a01b03168352928401929184019160010162002807565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620028fa57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620028e45783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190620028a0565b50978a0197955050509187019160010162002862565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200296257603f198886030184526200294f8583516200275d565b9450928501929085019060010162002930565b5092979650505050505050565b600062002980620026bd846200266f565b90508281528383830111156200299557600080fd5b62000d9e83602083018462002737565b600060208284031215620029b857600080fd5b815167ffffffffffffffff811115620029d057600080fd5b8201601f81018413620029e257600080fd5b6200272f848251602084016200296f565b8281526040602082015260006200272f60408301846200275d565b60006020828403121562002a2157600080fd5b81516001600160a01b038116811462000d9e57600080fd5b60006020828403121562002a4c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811462000d9e57600080fd5b600181811c9082168062002a9257607f821691505b60208210810362002acc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002b0e81600485016020870162002737565b919091016004019392505050565b6000825162002b3081846020870162002737565b9190910192915050565b60006020828403121562002b4d57600080fd5b8151801515811462000d9e57600080fd5b60408152600062002b9c60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200272f81856200275d565b60408152600062002b9c60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b80820180821115620005e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60408152600062002c6760408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062002c6760408301600a81527f202020202052696768740000000000000000000000000000000000000000000060208201526040019056fe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611522806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806345ec935411610076578063d737d0c71161005b578063d737d0c71461014b578063e1af802c14610153578063f15da7291461015b57600080fd5b806345ec93541461012557806396f09da61461013857600080fd5b806301ffc9a7146100a8578063119df25f146100d057806330b67baa146100fd5780633ae7af0814610105575b600080fd5b6100bb6100b6366004610f21565b61016c565b60405190151581526020015b60405180910390f35b6100d8610205565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c7565b6100d8610214565b610118610113366004611030565b61021e565b6040516100c791906110c7565b604051601f1936013581526020016100c7565b6101186101463660046110da565b610231565b6100d861023c565b6100d8610246565b61011861016936600461110f565b90565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ff57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061020f610250565b905090565b600061020f610246565b606061022a8383610281565b9392505050565b60606101ff826103f3565b600061020f610205565b600061020f6104a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061016957503390565b6060600061028d610246565b905073ffffffffffffffffffffffffffffffffffffffff811630036103505760006102b7856104ed565b50905073ffffffffffffffffffffffffffffffffffffffff811661031c57846102df86610611565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610313929190611158565b60405180910390fd5b6000610336610329610250565b36601f190135848861074e565b945090508061034857610348846107cf565b5050506101ff565b6040517f3ae7af0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690633ae7af08906103a49087908790600401611158565b6000604051808303816000875af11580156103c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103eb91908101906111b6565b949350505050565b6060600080610409610404856111eb565b6107d7565b91509150816000801b0361046f576040517ffdde54e20000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000600035166004820152602401610313565b6020840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16821790526103eb8285610281565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806104e8573391505090565b919050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106105275761052761123b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d730000000000000000000000000000000000000000000000000060308201528151808203909301835281019052600090819081906105f3906105cd90611251565b857e1502001401000000000000000000000000000000000000000000000000000061090d565b9250925092506106048383836109f7565b9550955050505050915091565b606081601081901b600061062483610a0f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561067f5761067a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a26565b6106b6565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156106ec576106e783610a26565b610723565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161073593929190611278565b6040516020818303038152906040529350505050919050565b600060608373ffffffffffffffffffffffffffffffffffffffff16610774848888610ad4565b6040516107819190611306565b600060405180830381855af49150503d80600081146107bc576040519150601f19603f3d011682016040523d82523d6000602084013e6107c1565b606091505b509097909650945050505050565b805160208201fd5b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108305761083061123b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906108fc906108d690611251565b857e2402002004000000000000000000000000000000000000000000000000000061090d565b925092509250610604838383610b03565b606060006060600061091d6104a1565b90503073ffffffffffffffffffffffffffffffffffffffff82160361095357610947878787610b0f565b935093509350506109ee565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd906109a9908a908a908a90600401611322565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109479190810190611379565b93509350939050565b600080610a0385610c17565b90969095509350505050565b6000610a1d607060106113fc565b9190911b919050565b606060005b6010811015610a95577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610a955780610a8d8161140f565b915050610a2b565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806103eb565b6060838383604051602001610aeb93929190611429565b60405160208183030381529060405290509392505050565b600080610a0385610c36565b6060600060606000610b2085610c48565b9050610b2d878783610c6b565b93506000610b3a86610cad565b90508015610c0c57610b4c8888610cea565b935066ffffffffffffff841667ffffffffffffffff811115610b7057610b70610f63565b6040519080825280601f01601f191660200182016040528015610b9a576020820181803683370190505b5092506020830160005b828160ff161015610c09576000610bbc8b8b84610cfd565b90506000610bd9888460ff166028026038011c64ffffffffff1690565b9050610be88260008387610d7d565b610bf281856113fc565b935050508080610c019061147b565b915050610ba4565b50505b505093509350939050565b6020810151603482015160609190911c9060009060f81c5b9050915091565b60208101516040820151600090610c2f565b60006008610c586002602061149a565b610c6291906114ad565b9190911c919050565b606081600003610c8a575060408051602081019091526000815261022a565b6000610c968585610e4a565b9050610ca481600085610ea0565b95945050505050565b60006008600180610cc06002602061149a565b610cca919061149a565b610cd4919061149a565b610cde91906114ad565b8260ff911c1692915050565b600061022a610cf98484610ecb565b5490565b60008383604051602001610d129291906114c4565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215610e065760208310610da757602083048401935060208381610da357610da36114ff565b0692505b8215610e06576020839003600081841015610dcb5750600019600884021c19610dd6565b50600019600882021c195b8554600886021b811984511682821617845250818411610df7575050610e44565b50600194909401939182900391015b5b60208210610e285783548152600190930192601f1990910190602001610e07565b8115610e445780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610e5f9291906114c4565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f8484010116604052828252610ec385858584610d7d565b509392505050565b60008282604051602001610ee09291906114c4565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060208284031215610f3357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461022a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fa257610fa2610f63565b604052919050565b600067ffffffffffffffff821115610fc457610fc4610f63565b50601f01601f191660200190565b6000610fe5610fe084610faa565b610f79565b9050828152838383011115610ff957600080fd5b828260208301376000602084830101529392505050565b600082601f83011261102157600080fd5b61022a83833560208501610fd2565b6000806040838503121561104357600080fd5b82359150602083013567ffffffffffffffff81111561106157600080fd5b61106d85828601611010565b9150509250929050565b60005b8381101561109257818101518382015260200161107a565b50506000910152565b600081518084526110b3816020860160208601611077565b601f01601f19169290920160200192915050565b60208152600061022a602083018461109b565b6000602082840312156110ec57600080fd5b813567ffffffffffffffff81111561110357600080fd5b6103eb84828501611010565b60006020828403121561112157600080fd5b813567ffffffffffffffff81111561113857600080fd5b8201601f8101841361114957600080fd5b6103eb84823560208401610fd2565b8281526040602082015260006103eb604083018461109b565b600082601f83011261118257600080fd5b8151611190610fe082610faa565b8181528460208386010111156111a557600080fd5b6103eb826020830160208701611077565b6000602082840312156111c857600080fd5b815167ffffffffffffffff8111156111df57600080fd5b6103eb84828501611171565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156112335780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015611272576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516112d9816003860160208901611077565b8084019050816003820152845191506112f9826004830160208801611077565b0160040195945050505050565b60008251611318818460208701611077565b9190910192915050565b6000606082018583526020606081850152818651808452608086019150828801935060005b8181101561136357845183529383019391830191600101611347565b5050809350505050826040830152949350505050565b60008060006060848603121561138e57600080fd5b835167ffffffffffffffff808211156113a657600080fd5b6113b287838801611171565b94506020860151935060408601519150808211156113cf57600080fd5b506113dc86828701611171565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ff576101ff6113e6565b60006000198203611422576114226113e6565b5060010190565b6000845161143b818460208901611077565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600060ff821660ff8103611491576114916113e6565b60010192915050565b818103818111156101ff576101ff6113e6565b80820281158282048414176101ff576101ff6113e6565b82815260006020808301845182860160005b828110156114f2578151845292840192908401906001016114d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000aa164736f6c6343000815000a","sourceMap":"1403:7562:200:-:0;;;1572:26:101;;;1594:4;-1:-1:-1;;1572:26:101;;;;;;;;3126:44:104;;;;;;;;;;;228:9:0;186:51;;1403:7562:200;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b50600436106200020d5760003560e01c806354dcf1321162000125578063aec62e1411620000af578063e20c9f71116200007a578063e20c9f7114620003ac578063e78c82e314620003b6578063ed3a185614620003c0578063fa7626d414620003ca57600080fd5b8063aec62e141462000373578063b5508aa9146200037d578063ba414fa61462000387578063c0310bf614620003a257600080fd5b806385226c8111620000f057806385226c81146200033c57806385dc086814620003555780638d95e4d6146200035f578063916a17c6146200036957600080fd5b806354dcf13214620003055780635af8de30146200030f57806366d9a9a0146200031957806378845560146200033257600080fd5b80632f2499f411620001a75780633e5e3c2311620001725780633e5e3c2314620002d05780633f7286f414620002da5780633fa01b9814620002e45780634478d61814620002fb57600080fd5b80632f2499f414620002a857806332d7d50514620002b25780633424e1c114620002bc5780633911733c14620002c657600080fd5b8063101f99a311620001e8578063101f99a31462000257578063199e1d17146200026e5780631ed7831c14620002855780632cb6867d146200029e57600080fd5b8063055e33e81462000212578063075d7777146200021e5780630a9254e4146200024d575b600080fd5b6200021c620003d8565b005b620002356200022f366004620026f6565b620004e1565b6040516200024491906200278b565b60405180910390f35b6200021c620005ef565b6200023562000268366004620027a0565b62000c94565b620002356200027f366004620026f6565b62000da5565b6200028f62000dd1565b604051620002449190620027eb565b6200021c62000e35565b6200021c62000f05565b6200021c620010d0565b6200021c62001196565b6200021c62001231565b6200028f620012d3565b6200028f62001335565b62000235620002f5366004620027a0565b62001397565b6200021c620013c5565b6200021c62001467565b6200021c62001611565b62000323620016d8565b6040516200024491906200283a565b6200021c620017cb565b6200034662001843565b60405162000244919062002909565b6200021c6200191d565b6200021c620019bf565b6200032362001a8f565b6200021c62001b79565b6200034662001c14565b6200039162001cee565b604051901515815260200162000244565b6200021c62001e3a565b6200028f62001eb2565b6200021c62001f14565b6200021c62001fb6565b600054620003919060ff1681565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200042757600080fd5b505af11580156200043c573d6000803e3d6000fd5b505060275460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084015b60408051601f198184030181529190526020810180516001600160e01b031663f15da72960e01b17905262001397565b9050620004de81806020019051810190620004ba9190620029a5565b6040518060400160405280600581526020016468656c6c6f60d81b81525062002058565b50565b601f54602480546040516060936001600160a01b031692633ae7af0892916200050d918791016200278b565b60408051601f198184030181529181526020820180516001600160e01b03167f96f09da600000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526200058a929190600401620029f3565b6000604051808303816000875af1158015620005aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620005d49190810190620029a5565b806020019051810190620005e99190620029a5565b92915050565b6000604051620005ff90620025aa565b604051809103906000f0801580156200061c573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de862000638620021be565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200069257600080fd5b505af1158015620006a7573d6000803e3d6000fd5b5050601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555050604051620006e190620025b8565b604051809103906000f080158015620006fe573d6000803e3d6000fd5b506020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040516200073a90620025b8565b604051809103906000f08015801562000757573d6000803e3d6000fd5b506021805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040516200079390620025b8565b604051809103906000f080158015620007b0573d6000803e3d6000fd5b506022805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055604051620007ec90620025b8565b604051809103906000f08015801562000809573d6000803e3d6000fd5b506023805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556200088961737960f01b7f6e616d65737061636541000000000000000000000000000000000000000000007f73797374656d4100000000000000000000000000000000000000000000000000620022c9565b602455620008de61737960f01b7f6e616d65737061636542000000000000000000000000000000000000000000007f73797374656d4200000000000000000000000000000000000000000000000000620022c9565b6025556200091461737960f01b60007f73797374656d4100000000000000000000000000000000000000000000000000620022c9565b6026556200094a61737960f01b60007f73797374656d4200000000000000000000000000000000000000000000000000620022c9565b602755601f546024546001600160a01b039091169063b29e408990620009af907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b8152600401620009ce91815260200190565b600060405180830381600087803b158015620009e957600080fd5b505af1158015620009fe573d6000803e3d6000fd5b5050601f546025546001600160a01b03909116925063b29e4089915062000a64907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b815260040162000a8391815260200190565b600060405180830381600087803b15801562000a9e57600080fd5b505af115801562000ab3573d6000803e3d6000fd5b5050601f5460248054602054604051633350b6a960e01b815260048101929092526001600160a01b03908116928201929092526001604482015291169250633350b6a99150606401600060405180830381600087803b15801562000b1657600080fd5b505af115801562000b2b573d6000803e3d6000fd5b5050601f54602554602154604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000b8c57600080fd5b505af115801562000ba1573d6000803e3d6000fd5b5050601f54602654602254604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000c0257600080fd5b505af115801562000c17573d6000803e3d6000fd5b5050601f54602754602354604051633350b6a960e01b815260048101929092526001600160a01b039081166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000c7857600080fd5b505af115801562000c8d573d6000803e3d6000fd5b5050505050565b601f546026546040516060926001600160a01b031691633ae7af089162000cc29087908790602401620029f3565b60408051601f198184030181529181526020820180516001600160e01b03167f3ae7af0800000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815262000d3f929190600401620029f3565b6000604051808303816000875af115801562000d5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d899190810190620029a5565b80602001905181019062000d9e9190620029a5565b9392505050565b601f546026546040516060926001600160a01b031691633ae7af08916200050d9086906024016200278b565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000e2b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e0c575b5050505050905090565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e8457600080fd5b505af115801562000e99573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062001397565b9050620004de8180602001905181019062000ef3919062002a0e565b601f546001600160a01b031662002351565b601f54602554604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a4015b6020604051808303816000875af115801562000f98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbe919062002a39565b905060008160405160240162000fed9060208082526005908201526468656c6c6f60d81b604082015260600190565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252905163ca669fa760e01b81526110886004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200108957600080fd5b505af11580156200109e573d6000803e3d6000fd5b505050506000620010af8262000da5565b9050620010cb81806020019051810190620004ba9190620029a5565b505050565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200111f57600080fd5b505af115801562001134573d6000803e3d6000fd5b505060255460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084015b60408051601f198184030181529190526020810180516001600160e01b031663f15da72960e01b17905262000c94565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620011e557600080fd5b505af1158015620011fa573d6000803e3d6000fd5b505060275460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e925060840162001166565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200128057600080fd5b505af115801562001295573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062000c94565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b601f54602480546040516060936001600160a01b031692633ae7af08929162000cc2918891889101620029f3565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200141457600080fd5b505af115801562001429573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062001397565b601f54602554604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a4015b6020604051808303816000875af1158015620014fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001520919062002a39565b90506000816040516024016200154f9060208082526005908201526468656c6c6f60d81b604082015260600190565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252905163ca669fa760e01b81526110886004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620015eb57600080fd5b505af115801562001600573d6000803e3d6000fd5b505050506000620010af82620004e1565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200166057600080fd5b505af115801562001675573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b17905260009350620016b3925062000c94565b9050620004de81806020019051810190620016cf919062002a0e565b61108862002351565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620017c25760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620017a957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200176a5790505b50505050508152505081526020019060010190620016fc565b50505050905090565b601f54602754604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a40162000f78565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620017c2578382906000526020600020018054620018899062002a7d565b80601f0160208091040260200160405190810160405280929190818152602001828054620018b79062002a7d565b8015620019085780601f10620018dc5761010080835404028352916020019162001908565b820191906000526020600020905b815481529060010190602001808311620018ea57829003601f168201915b50505050508152602001906001019062001867565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200196c57600080fd5b505af115801562001981573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663185b3dd560e11b1790526000935062000ed7925062000c94565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a0e57600080fd5b505af115801562001a23573d6000803e3d6000fd5b50506025546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b1790526000935062001a61925062001397565b9050620004de8180602001905181019062001a7d919062002a0e565b6020546001600160a01b031662002351565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620017c25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b6057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001b215790505b5050505050815250508152602001906001019062001ab3565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001bc857600080fd5b505af115801562001bdd573d6000803e3d6000fd5b505060255460405160206024820152600560448201526468656c6c6f60d81b6064820152600093506200049e92506084016200046e565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620017c257838290600052602060002001805462001c5a9062002a7d565b80601f016020809104026020016040519081016040528092919081815260200182805462001c889062002a7d565b801562001cd95780601f1062001cad5761010080835404028352916020019162001cd9565b820191906000526020600020905b81548152906001019060200180831162001cbb57829003601f168201915b50505050508152602001906001019062001c38565b60008054610100900460ff161562001d0f5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001e355760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001db7917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002ad2565b60408051601f198184030181529082905262001dd39162002b1c565b6000604051808303816000865af19150503d806000811462001e12576040519150601f19603f3d011682016040523d82523d6000602084013e62001e17565b606091505b509150508080602001905181019062001e31919062002b3a565b9150505b919050565b601f54602754604051630e85ac2360e31b8152600481019190915260606024820152600c60648201527f6563686f28737472696e67290000000000000000000000000000000000000000608482015263f15da72960e01b60448201526000916001600160a01b03169063742d61189060a401620014da565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000e2b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e0c575050505050905090565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f6357600080fd5b505af115801562001f78573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b1790526000935062001a61925062001397565b60405163ca669fa760e01b81526110886004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200200557600080fd5b505af11580156200201a573d6000803e3d6000fd5b50506027546040805160048152602481019091526020810180516001600160e01b031663d737d0c760e01b17905260009350620016b3925062000c94565b806040516020016200206b919062002b1c565b604051602081830303815290604052805190602001208260405160200162002094919062002b1c565b6040516020818303038152906040528051906020012014620021ba577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620021369060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200216f919062002b5e565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620021a8919062002bb0565b60405180910390a1620021ba62002463565b5050565b6000604051620021ce90620025c6565b604051809103906000f080158015620021eb573d6000803e3d6000fd5b50604051620021fa90620025d4565b604051809103906000f08015801562002217573d6000803e3d6000fd5b506040516200222690620025e2565b604051809103906000f08015801562002243573d6000803e3d6000fd5b506040516200225290620025f0565b604051809103906000f0801580156200226f573d6000803e3d6000fd5b506040516200227e90620025fe565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022c3573d6000803e3d6000fd5b50905090565b6000620022d96070601062002bee565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316901c601084901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167fffff0000000000000000000000000000000000000000000000000000000000008616171790509392505050565b806001600160a01b0316826001600160a01b031614620021ba577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620023f19060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200242a919062002c29565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620021a8919062002c7e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200257c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002517929160200162002ad2565b60408051601f1981840301815290829052620025339162002b1c565b6000604051808303816000865af19150503d806000811462002572576040519150601f19603f3d011682016040523d82523d6000602084013e62002577565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b61553a8062002cbd83390190565b61154280620081f783390190565b611a79806200973983390190565b6118cc806200b1b283390190565b610b15806200ca7e83390190565b61567c806200d59383390190565b614c6d8062012c0f83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200266757620026676200260c565b604052919050565b600067ffffffffffffffff8211156200268c576200268c6200260c565b50601f01601f191660200190565b600082601f830112620026ac57600080fd5b8135620026c3620026bd826200266f565b6200263b565b818152846020838601011115620026d957600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156200270957600080fd5b813567ffffffffffffffff8111156200272157600080fd5b6200272f848285016200269a565b949350505050565b60005b83811015620027545781810151838201526020016200273a565b50506000910152565b600081518084526200277781602086016020860162002737565b601f01601f19169290920160200192915050565b60208152600062000d9e60208301846200275d565b60008060408385031215620027b457600080fd5b82359150602083013567ffffffffffffffff811115620027d357600080fd5b620027e1858286016200269a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156200282e5783516001600160a01b03168352928401929184019160010162002807565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620028fa57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620028e45783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190620028a0565b50978a0197955050509187019160010162002862565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200296257603f198886030184526200294f8583516200275d565b9450928501929085019060010162002930565b5092979650505050505050565b600062002980620026bd846200266f565b90508281528383830111156200299557600080fd5b62000d9e83602083018462002737565b600060208284031215620029b857600080fd5b815167ffffffffffffffff811115620029d057600080fd5b8201601f81018413620029e257600080fd5b6200272f848251602084016200296f565b8281526040602082015260006200272f60408301846200275d565b60006020828403121562002a2157600080fd5b81516001600160a01b038116811462000d9e57600080fd5b60006020828403121562002a4c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811462000d9e57600080fd5b600181811c9082168062002a9257607f821691505b60208210810362002acc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002b0e81600485016020870162002737565b919091016004019392505050565b6000825162002b3081846020870162002737565b9190910192915050565b60006020828403121562002b4d57600080fd5b8151801515811462000d9e57600080fd5b60408152600062002b9c60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200272f81856200275d565b60408152600062002b9c60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b80820180821115620005e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60408152600062002c6760408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062002c6760408301600a81527f202020202052696768740000000000000000000000000000000000000000000060208201526040019056fe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611522806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806345ec935411610076578063d737d0c71161005b578063d737d0c71461014b578063e1af802c14610153578063f15da7291461015b57600080fd5b806345ec93541461012557806396f09da61461013857600080fd5b806301ffc9a7146100a8578063119df25f146100d057806330b67baa146100fd5780633ae7af0814610105575b600080fd5b6100bb6100b6366004610f21565b61016c565b60405190151581526020015b60405180910390f35b6100d8610205565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c7565b6100d8610214565b610118610113366004611030565b61021e565b6040516100c791906110c7565b604051601f1936013581526020016100c7565b6101186101463660046110da565b610231565b6100d861023c565b6100d8610246565b61011861016936600461110f565b90565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ff57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061020f610250565b905090565b600061020f610246565b606061022a8383610281565b9392505050565b60606101ff826103f3565b600061020f610205565b600061020f6104a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061016957503390565b6060600061028d610246565b905073ffffffffffffffffffffffffffffffffffffffff811630036103505760006102b7856104ed565b50905073ffffffffffffffffffffffffffffffffffffffff811661031c57846102df86610611565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610313929190611158565b60405180910390fd5b6000610336610329610250565b36601f190135848861074e565b945090508061034857610348846107cf565b5050506101ff565b6040517f3ae7af0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690633ae7af08906103a49087908790600401611158565b6000604051808303816000875af11580156103c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103eb91908101906111b6565b949350505050565b6060600080610409610404856111eb565b6107d7565b91509150816000801b0361046f576040517ffdde54e20000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000600035166004820152602401610313565b6020840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16821790526103eb8285610281565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806104e8573391505090565b919050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106105275761052761123b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d730000000000000000000000000000000000000000000000000060308201528151808203909301835281019052600090819081906105f3906105cd90611251565b857e1502001401000000000000000000000000000000000000000000000000000061090d565b9250925092506106048383836109f7565b9550955050505050915091565b606081601081901b600061062483610a0f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561067f5761067a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a26565b6106b6565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156106ec576106e783610a26565b610723565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161073593929190611278565b6040516020818303038152906040529350505050919050565b600060608373ffffffffffffffffffffffffffffffffffffffff16610774848888610ad4565b6040516107819190611306565b600060405180830381855af49150503d80600081146107bc576040519150601f19603f3d011682016040523d82523d6000602084013e6107c1565b606091505b509097909650945050505050565b805160208201fd5b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108305761083061123b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906108fc906108d690611251565b857e2402002004000000000000000000000000000000000000000000000000000061090d565b925092509250610604838383610b03565b606060006060600061091d6104a1565b90503073ffffffffffffffffffffffffffffffffffffffff82160361095357610947878787610b0f565b935093509350506109ee565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd906109a9908a908a908a90600401611322565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109479190810190611379565b93509350939050565b600080610a0385610c17565b90969095509350505050565b6000610a1d607060106113fc565b9190911b919050565b606060005b6010811015610a95577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610a955780610a8d8161140f565b915050610a2b565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806103eb565b6060838383604051602001610aeb93929190611429565b60405160208183030381529060405290509392505050565b600080610a0385610c36565b6060600060606000610b2085610c48565b9050610b2d878783610c6b565b93506000610b3a86610cad565b90508015610c0c57610b4c8888610cea565b935066ffffffffffffff841667ffffffffffffffff811115610b7057610b70610f63565b6040519080825280601f01601f191660200182016040528015610b9a576020820181803683370190505b5092506020830160005b828160ff161015610c09576000610bbc8b8b84610cfd565b90506000610bd9888460ff166028026038011c64ffffffffff1690565b9050610be88260008387610d7d565b610bf281856113fc565b935050508080610c019061147b565b915050610ba4565b50505b505093509350939050565b6020810151603482015160609190911c9060009060f81c5b9050915091565b60208101516040820151600090610c2f565b60006008610c586002602061149a565b610c6291906114ad565b9190911c919050565b606081600003610c8a575060408051602081019091526000815261022a565b6000610c968585610e4a565b9050610ca481600085610ea0565b95945050505050565b60006008600180610cc06002602061149a565b610cca919061149a565b610cd4919061149a565b610cde91906114ad565b8260ff911c1692915050565b600061022a610cf98484610ecb565b5490565b60008383604051602001610d129291906114c4565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215610e065760208310610da757602083048401935060208381610da357610da36114ff565b0692505b8215610e06576020839003600081841015610dcb5750600019600884021c19610dd6565b50600019600882021c195b8554600886021b811984511682821617845250818411610df7575050610e44565b50600194909401939182900391015b5b60208210610e285783548152600190930192601f1990910190602001610e07565b8115610e445780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610e5f9291906114c4565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f8484010116604052828252610ec385858584610d7d565b509392505050565b60008282604051602001610ee09291906114c4565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060208284031215610f3357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461022a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fa257610fa2610f63565b604052919050565b600067ffffffffffffffff821115610fc457610fc4610f63565b50601f01601f191660200190565b6000610fe5610fe084610faa565b610f79565b9050828152838383011115610ff957600080fd5b828260208301376000602084830101529392505050565b600082601f83011261102157600080fd5b61022a83833560208501610fd2565b6000806040838503121561104357600080fd5b82359150602083013567ffffffffffffffff81111561106157600080fd5b61106d85828601611010565b9150509250929050565b60005b8381101561109257818101518382015260200161107a565b50506000910152565b600081518084526110b3816020860160208601611077565b601f01601f19169290920160200192915050565b60208152600061022a602083018461109b565b6000602082840312156110ec57600080fd5b813567ffffffffffffffff81111561110357600080fd5b6103eb84828501611010565b60006020828403121561112157600080fd5b813567ffffffffffffffff81111561113857600080fd5b8201601f8101841361114957600080fd5b6103eb84823560208401610fd2565b8281526040602082015260006103eb604083018461109b565b600082601f83011261118257600080fd5b8151611190610fe082610faa565b8181528460208386010111156111a557600080fd5b6103eb826020830160208701611077565b6000602082840312156111c857600080fd5b815167ffffffffffffffff8111156111df57600080fd5b6103eb84828501611171565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156112335780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015611272576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516112d9816003860160208901611077565b8084019050816003820152845191506112f9826004830160208801611077565b0160040195945050505050565b60008251611318818460208701611077565b9190910192915050565b6000606082018583526020606081850152818651808452608086019150828801935060005b8181101561136357845183529383019391830191600101611347565b5050809350505050826040830152949350505050565b60008060006060848603121561138e57600080fd5b835167ffffffffffffffff808211156113a657600080fd5b6113b287838801611171565b94506020860151935060408601519150808211156113cf57600080fd5b506113dc86828701611171565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ff576101ff6113e6565b60006000198203611422576114226113e6565b5060010190565b6000845161143b818460208901611077565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600060ff821660ff8103611491576114916113e6565b60010192915050565b818103818111156101ff576101ff6113e6565b80820281158282048414176101ff576101ff6113e6565b82815260006020808301845182860160005b828110156114f2578151845292840192908401906001016114d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000aa164736f6c6343000815000a","sourceMap":"1403:7562:200:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5700:240;;;:::i;:::-;;3601:198;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1726:1209;;;:::i;2939:226::-;;;;;;:::i;:::-;;:::i;3391:206::-;;;;;;:::i;:::-;;:::i;2170:134:107:-;;;:::i;:::-;;;;;;;:::i;5453:243:200:-;;;:::i;7230:437::-;;;:::i;6986:240::-;;;:::i;4402:241::-;;;:::i;4154:244::-;;;:::i;2939:133:107:-;;;:::i;2640:141::-;;;:::i;3169:218:200:-;;;;;;:::i;:::-;;:::i;8038:242::-;;;:::i;8527:436::-;;;:::i;6492:243::-;;;:::i;2456:178:107:-;;;:::i;:::-;;;;;;;:::i;4647:438:200:-;;;:::i;2310:140:107:-;;;:::i;:::-;;;;;;;:::i;6739:243:200:-;;;:::i;7782:252::-;;;:::i;2787:146:107:-;;;:::i;8284:239:200:-;;;:::i;1875:141:107:-;;;:::i;1819:584:101:-;;;:::i;:::-;;;6238:14:203;;6231:22;6213:41;;6201:2;6186:18;1819:584:101;6073:187:203;5944:437:200;;;:::i;2022:142:107:-;;;:::i;5196:253:200:-;;;:::i;3906:244::-;;;:::i;1572:26:101:-;;;;;;;;;5700:240:200;5752:16;;-1:-1:-1;;;5752:16:200;;1395:4;5752:16;;;6411:74:203;5752:8:200;;;;6384:18:203;;5752:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5820:13:200;;5835:42;;6698:2:203;5835:42:200;;;6680:21:203;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6755:18:203;;;6748:35;5774:23:200;;-1:-1:-1;5800:78:200;;-1:-1:-1;6800:18:203;;5835:42:200;;;;-1:-1:-1;;5835:42:200;;;;;;;;;;;;;;-1:-1:-1;;;;;5835:42:200;-1:-1:-1;;;5835:42:200;;;5800:19;:78::i;:::-;5774:104;;5884:51;5904:10;5893:32;;;;;;;;;;;;:::i;:::-;5884:51;;;;;;;;;;;;;-1:-1:-1;;;5884:51:200;;;:8;:51::i;:::-;5746:194;5700:240::o;3601:198::-;3707:5;;3718:9;;;3729:54;;3669:12;;-1:-1:-1;;;;;3707:5:200;;:10;;3718:9;3729:54;;3773:8;;3729:54;;:::i;:::-;;;;-1:-1:-1;;3729:54:200;;;;;;;;;;;;;;-1:-1:-1;;;;;3729:54:200;;;;;3707:77;;3729:54;3707:77;;;;;;;;;3729:54;3707:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3707:77:200;;;;;;;;;;;;:::i;:::-;3696:98;;;;;;;;;;;;:::i;:::-;3689:105;3601:198;-1:-1:-1;;3601:198:200:o;1726:1209::-;1776:12;1791:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1776:26;;1808:6;-1:-1:-1;;;;;1808:17:200;;1826:18;:16;:18::i;:::-;1808:37;;;;;;;;;;-1:-1:-1;;;;;6429:55:203;;;1808:37:200;;;6411:74:203;6384:18;;1808:37:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1851:5:200;:35;;-1:-1:-1;;1851:35:200;-1:-1:-1;;;;;1851:35:200;;;;;-1:-1:-1;;1925:16:200;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1915:7:200;:26;;-1:-1:-1;;1915:26:200;-1:-1:-1;;;;;1915:26:200;;;;;;;;;;1957:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1947:7:200;:26;;-1:-1:-1;;1947:26:200;-1:-1:-1;;;;;1947:26:200;;;;;;;;;;1993:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1979:11:200;:30;;-1:-1:-1;;1979:30:200;-1:-1:-1;;;;;1979:30:200;;;;;;;;;;2029:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2015:11:200;:30;;-1:-1:-1;;2015:30:200;-1:-1:-1;;;;;2015:30:200;;;;;;;;;;2089:96;-1:-1:-1;;;2089:96:200;;:25;:96::i;:::-;2077:9;:108;2203:96;-1:-1:-1;;;2203:96:200;;:25;:96::i;:::-;2191:9;:108;2321:98;-1:-1:-1;;;2385:14:200;2321:98;:25;:98::i;:::-;2305:13;:114;2441:98;-1:-1:-1;;;2505:14:200;2441:98;:25;:98::i;:::-;2425:13;:114;2573:5;;2597:9;;-1:-1:-1;;;;;2573:5:200;;;;:23;;2597:26;;539:36:59;2781:46;816:18:94;2780:74:59;;2669:191;2597:26:200;2573:51;;;;;;;;;;;;;8834:25:203;;8822:2;8807:18;;8657:208;2573:51:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2630:5:200;;2654:9;;-1:-1:-1;;;;;2630:5:200;;;;-1:-1:-1;2630:23:200;;-1:-1:-1;2654:26:200;;539:36:59;2781:46;816:18:94;2780:74:59;;2669:191;2654:26:200;2630:51;;;;;;;;;;;;;8834:25:203;;8822:2;8807:18;;8657:208;2630:51:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2712:5:200;;2733:9;;;2744:7;;2712:46;;-1:-1:-1;;;2712:46:200;;;;;9118:25:203;;;;-1:-1:-1;;;;;2744:7:200;;;9159:18:203;;;9152:83;;;;2712:5:200;9251:18:203;;;9244:50;2712:5:200;;;-1:-1:-1;2712:20:200;;-1:-1:-1;9091:18:203;;2712:46:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2764:5:200;;2785:9;;2796:7;;2764:46;;-1:-1:-1;;;2764:46:200;;;;;9118:25:203;;;;-1:-1:-1;;;;;2796:7:200;;;9159:18:203;;;9152:83;2764:5:200;9251:18:203;;;9244:50;2764:5:200;;;;-1:-1:-1;2764:20:200;;-1:-1:-1;9091:18:203;;2764:46:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2816:5:200;;2837:13;;2852:11;;2816:54;;-1:-1:-1;;;2816:54:200;;;;;9118:25:203;;;;-1:-1:-1;;;;;2852:11:200;;;9159:18:203;;;9152:83;2816:5:200;9251:18:203;;;9244:50;2816:5:200;;;;-1:-1:-1;2816:20:200;;-1:-1:-1;9091:18:203;;2816:54:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2876:5:200;;2897:13;;2912:11;;2876:54;;-1:-1:-1;;;2876:54:200;;;;;9118:25:203;;;;-1:-1:-1;;;;;2912:11:200;;;9159:18:203;;;9152:83;2876:5:200;9251:18:203;;;9244:50;2876:5:200;;;;-1:-1:-1;2876:20:200;;-1:-1:-1;9091:18:203;;2876:54:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1750:1185;1726:1209::o;2939:226::-;3070:5;;3081:13;;3096:53;;3032:12;;-1:-1:-1;;;;;3070:5:200;;:10;;3096:53;;3129:8;;3139;;3096:53;;;:::i;:::-;;;;-1:-1:-1;;3096:53:200;;;;;;;;;;;;;;-1:-1:-1;;;;;3096:53:200;;;;;3070:80;;3096:53;3070:80;;;;;;;;;3096:53;3070:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3070:80:200;;;;;;;;;;;;:::i;:::-;3059:101;;;;;;;;;;;;:::i;:::-;3052:108;2939:226;-1:-1:-1;;;2939:226:200:o;3391:206::-;3501:5;;3512:13;;3527:54;;3463:12;;-1:-1:-1;;;;;3501:5:200;;:10;;3527:54;;3571:8;;3527:54;;;:::i;2170:134:107:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:107;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;5453:243:200:-;5506:16;;-1:-1:-1;;;5506:16:200;;1395:4;5506:16;;;6411:74:203;5506:8:200;;;;6384:18:203;;5506:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5574:13:200;;5589:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5589:36:200;-1:-1:-1;;;5589:36:200;;;5528:23;;-1:-1:-1;5554:72:200;;-1:-1:-1;5554:19:200;:72::i;:::-;5528:98;;5632:59;5652:10;5641:33;;;;;;;;;;;;:::i;:::-;5684:5;;-1:-1:-1;;;;;5684:5:200;5632:8;:59::i;7230:437::-;7322:5;;7364:9;;7322:111;;-1:-1:-1;;;7322:111:200;;;;;9900:25:203;;;;9961:2;9941:18;;;9934:30;10000:2;9980:18;;;9973:30;10040:14;10019:19;;;10012:43;-1:-1:-1;;;10107:18:203;;;10100:107;7291:28:200;;-1:-1:-1;;;;;7322:5:200;;:34;;10072:19:203;;7322:111:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7291:142;;7439:21;7486;7463:54;;;;;;6698:2:203;6680:21;;;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6770:2:203;6755:18;;6748:35;6815:2;6800:18;;6496:328;7463:54:200;;;;-1:-1:-1;;7463:54:200;;;;;;;;;;;;;;-1:-1:-1;;;;;7463:54:200;;;;;;;;;;;;;7524:16;;-1:-1:-1;;;7524:16:200;;1395:4;7524:16;;;6411:74:203;7463:54:200;;-1:-1:-1;7524:8:200;;;;6384:18:203;;7524:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7546:23;7572:33;7596:8;7572:23;:33::i;:::-;7546:59;;7611:51;7631:10;7620:32;;;;;;;;;;;;:::i;7611:51::-;7285:382;;;7230:437::o;6986:240::-;7038:16;;-1:-1:-1;;;7038:16:200;;1395:4;7038:16;;;6411:74:203;7038:8:200;;;;6384:18:203;;7038:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7110:9:200;;7121:42;;6698:2:203;7121:42:200;;;6680:21:203;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6755:18:203;;;6748:35;7060:23:200;;-1:-1:-1;7086:78:200;;-1:-1:-1;6800:18:203;;7121:42:200;;;;-1:-1:-1;;7121:42:200;;;;;;;;;;;;;;-1:-1:-1;;;;;7121:42:200;-1:-1:-1;;;7121:42:200;;;7086:23;:78::i;4402:241::-;4451:16;;-1:-1:-1;;;4451:16:200;;1395:4;4451:16;;;6411:74:203;4451:8:200;;;;6384:18:203;;4451:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4523:13:200;;4538:42;;6698:2:203;4538:42:200;;;6680:21:203;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6755:18:203;;;6748:35;4473:23:200;;-1:-1:-1;4499:82:200;;-1:-1:-1;6800:18:203;;4538:42:200;6496:328:203;4154:244:200;4204:16;;-1:-1:-1;;;4204:16:200;;1395:4;4204:16;;;6411:74:203;4204:8:200;;;;6384:18:203;;4204:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4276:13:200;;4291:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4291:36:200;-1:-1:-1;;;4291:36:200;;;4226:23;;-1:-1:-1;4252:76:200;;-1:-1:-1;4252:23:200;:76::i;2939:133:107:-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:107;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:107;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;3169:218:200:-;3296:5;;3307:9;;;3318:53;;3258:12;;-1:-1:-1;;;;;3296:5:200;;:10;;3307:9;3318:53;;3351:8;;3361;;3318:53;;:::i;8038:242::-;8094:16;;-1:-1:-1;;;8094:16:200;;1395:4;8094:16;;;6411:74:203;8094:8:200;;;;6384:18:203;;8094:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8162:9:200;;8173:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8173:36:200;-1:-1:-1;;;8173:36:200;;;8116:23;;-1:-1:-1;8142:68:200;;-1:-1:-1;8142:19:200;:68::i;8527:436::-;8622:5;;8664:9;;8622:111;;-1:-1:-1;;;8622:111:200;;;;;9900:25:203;;;;9961:2;9941:18;;;9934:30;10000:2;9980:18;;;9973:30;10040:14;10019:19;;;10012:43;-1:-1:-1;;;10107:18:203;;;10100:107;8591:28:200;;-1:-1:-1;;;;;8622:5:200;;:34;;10072:19:203;;8622:111:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8591:142;;8739:21;8786;8763:54;;;;;;6698:2:203;6680:21;;;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6770:2:203;6755:18;;6748:35;6815:2;6800:18;;6496:328;8763:54:200;;;;-1:-1:-1;;8763:54:200;;;;;;;;;;;;;;-1:-1:-1;;;;;8763:54:200;;;;;;;;;;;;;8824:16;;-1:-1:-1;;;8824:16:200;;1395:4;8824:16;;;6411:74:203;8763:54:200;;-1:-1:-1;8824:8:200;;;;6384:18:203;;8824:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8846:23;8872:29;8892:8;8872:19;:29::i;6492:243::-;6549:16;;-1:-1:-1;;;6549:16:200;;1395:4;6549:16;;;6411:74:203;6549:8:200;;;;6384:18:203;;6549:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6621:9:200;;6632:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6632:40:200;-1:-1:-1;;;6632:40:200;;;6571:23;;-1:-1:-1;6597:76:200;;-1:-1:-1;6597:23:200;:76::i;:::-;6571:102;;6679:51;6699:10;6688:33;;;;;;;;;;;;:::i;:::-;1395:4;6679:8;:51::i;2456:178:107:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;4647:438:200:-;4736:5;;4778:13;;4736:115;;-1:-1:-1;;;4736:115:200;;;;;9900:25:203;;;;9961:2;9941:18;;;9934:30;10000:2;9980:18;;;9973:30;10040:14;10019:19;;;10012:43;-1:-1:-1;;;10107:18:203;;;10100:107;4705:28:200;;-1:-1:-1;;;;;4736:5:200;;:34;;10072:19:203;;4736:115:200;9631:582:203;2310:140:107;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6739:243:200;6792:16;;-1:-1:-1;;;6792:16:200;;1395:4;6792:16;;;6411:74:203;6792:8:200;;;;6384:18:203;;6792:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6864:9:200;;6875:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6875:36:200;-1:-1:-1;;;6875:36:200;;;6814:23;;-1:-1:-1;6840:72:200;;-1:-1:-1;6840:23:200;:72::i;7782:252::-;7842:16;;-1:-1:-1;;;7842:16:200;;1395:4;7842:16;;;6411:74:203;7842:8:200;;;;6384:18:203;;7842:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7910:9:200;;7921:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7921:40:200;-1:-1:-1;;;7921:40:200;;;7864:23;;-1:-1:-1;7890:72:200;;-1:-1:-1;7890:19:200;:72::i;:::-;7864:98;;7968:61;7988:10;7977:33;;;;;;;;;;;;:::i;:::-;8020:7;;-1:-1:-1;;;;;8020:7:200;7968:8;:61::i;2787:146:107:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8284:239:200;8339:16;;-1:-1:-1;;;8339:16:200;;1395:4;8339:16;;;6411:74:203;8339:8:200;;;;6384:18:203;;8339:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8407:9:200;;8418:42;;6698:2:203;8418:42:200;;;6680:21:203;6737:1;6717:18;;;6710:29;-1:-1:-1;;;6755:18:203;;;6748:35;8361:23:200;;-1:-1:-1;8387:74:200;;-1:-1:-1;6800:18:203;;8418:42:200;6496:328:203;1875:141:107;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:101;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:101;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;11175:74:203;;;2221:17:101;11265:18:203;;;11258:34;2196:43:101;;;;;;;;;11148:18:203;;;2196:43:101;;;-1:-1:-1;;1671:64:101;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:101;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:101:o;5944:437:200:-;6036:5;;6078:13;;6036:115;;-1:-1:-1;;;6036:115:200;;;;;9900:25:203;;;;9961:2;9941:18;;;9934:30;10000:2;9980:18;;;9973:30;10040:14;10019:19;;;10012:43;-1:-1:-1;;;10107:18:203;;;10100:107;6005:28:200;;-1:-1:-1;;;;;6036:5:200;;:34;;10072:19:203;;6036:115:200;9631:582:203;2022:142:107;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:107;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;5196:253:200:-;5253:16;;-1:-1:-1;;;5253:16:200;;1395:4;5253:16;;;6411:74:203;5253:8:200;;;;6384:18:203;;5253:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5321:13:200;;5336:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5336:40:200;-1:-1:-1;;;5336:40:200;;;5275:23;;-1:-1:-1;5301:76:200;;-1:-1:-1;5301:19:200;:76::i;3906:244::-;3960:16;;-1:-1:-1;;;3960:16:200;;1395:4;3960:16;;;6411:74:203;3960:8:200;;;;6384:18:203;;3960:16:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4032:13:200;;4047:40;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4047:40:200;-1:-1:-1;;;4047:40:200;;;3982:23;;-1:-1:-1;4008:80:200;;-1:-1:-1;4008:23:200;:80::i;17902:344:101:-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;12808:2:203;12790:21;;;12847:2;12827:18;;;12820:30;12886:34;12881:2;12866:18;;12859:62;12957:6;12952:2;12937:18;;12930:34;12996:3;12981:19;;12606:400;18062:43:101;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;:::-;17902:344;;:::o;514:223:100:-;551:10;600:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;636:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;671:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;700:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;578:156;;;;;:::i;:::-;-1:-1:-1;;;;;14657:15:203;;;14639:34;;14709:15;;;14704:2;14689:18;;14682:43;14761:15;;;14756:2;14741:18;;14734:43;14813:15;;;14808:2;14793:18;;14786:43;14565:3;14550:19;578:156:100;;;;;;;;;;;;;;;;;;;;;;;567:167;;514:223;:::o;941:257:59:-;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;1139:13;;;:45;;336:5:16;1103:31:59;;;;;1084:15;;;:51;:101;;-1:-1:-1;941:257:59;;;;;:::o;3622:277:101:-;3690:1;-1:-1:-1;;;;;3685:6:101;:1;-1:-1:-1;;;;;3685:6:101;;3681:212;;3712:44;;;;;15326:2:203;15308:21;;;15365:2;15345:18;;;15338:30;15404:34;15399:2;15384:18;;15377:62;15475:7;15470:2;15455:18;;15448:35;15515:3;15500:19;;15124:401;3712:44:101;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;16536:74:203;;;2677:17:101;16626:18:203;;;16619:34;;;;2712:4:101;16669:18:203;;;16662:34;2489:11:101;;1671:64;2586:43;;16509:18:203;;2652:67:101;;;-1:-1:-1;;2652:67:101;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:101;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:101;2820:7;:14;;;;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:184:203:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:334;274:2;268:9;330:2;320:13;;-1:-1:-1;;316:86:203;304:99;;433:18;418:34;;454:22;;;415:62;412:88;;;480:18;;:::i;:::-;516:2;509:22;203:334;;-1:-1:-1;203:334:203:o;542:245::-;590:4;623:18;615:6;612:30;609:56;;;645:18;;:::i;:::-;-1:-1:-1;702:2:203;690:15;-1:-1:-1;;686:88:203;776:4;682:99;;542:245::o;792:462::-;834:5;887:3;880:4;872:6;868:17;864:27;854:55;;905:1;902;895:12;854:55;941:6;928:20;972:48;988:31;1016:2;988:31;:::i;:::-;972:48;:::i;:::-;1045:2;1036:7;1029:19;1091:3;1084:4;1079:2;1071:6;1067:15;1063:26;1060:35;1057:55;;;1108:1;1105;1098:12;1057:55;1173:2;1166:4;1158:6;1154:17;1147:4;1138:7;1134:18;1121:55;1221:1;1196:16;;;1214:4;1192:27;1185:38;;;;1200:7;792:462;-1:-1:-1;;;792:462:203:o;1259:320::-;1327:6;1380:2;1368:9;1359:7;1355:23;1351:32;1348:52;;;1396:1;1393;1386:12;1348:52;1436:9;1423:23;1469:18;1461:6;1458:30;1455:50;;;1501:1;1498;1491:12;1455:50;1524:49;1565:7;1556:6;1545:9;1541:22;1524:49;:::i;:::-;1514:59;1259:320;-1:-1:-1;;;;1259:320:203:o;1584:250::-;1669:1;1679:113;1693:6;1690:1;1687:13;1679:113;;;1769:11;;;1763:18;1750:11;;;1743:39;1715:2;1708:10;1679:113;;;-1:-1:-1;;1826:1:203;1808:16;;1801:27;1584:250::o;1839:329::-;1880:3;1918:5;1912:12;1945:6;1940:3;1933:19;1961:76;2030:6;2023:4;2018:3;2014:14;2007:4;2000:5;1996:16;1961:76;:::i;:::-;2082:2;2070:15;-1:-1:-1;;2066:88:203;2057:98;;;;2157:4;2053:109;;1839:329;-1:-1:-1;;1839:329:203:o;2173:217::-;2320:2;2309:9;2302:21;2283:4;2340:44;2380:2;2369:9;2365:18;2357:6;2340:44;:::i;2395:419::-;2503:6;2511;2564:2;2552:9;2543:7;2539:23;2535:32;2532:52;;;2580:1;2577;2570:12;2532:52;2616:9;2603:23;2593:33;;2677:2;2666:9;2662:18;2649:32;2704:18;2696:6;2693:30;2690:50;;;2736:1;2733;2726:12;2690:50;2759:49;2800:7;2791:6;2780:9;2776:22;2759:49;:::i;:::-;2749:59;;;2395:419;;;;;:::o;2819:681::-;2990:2;3042:21;;;3112:13;;3015:18;;;3134:22;;;2961:4;;2990:2;3213:15;;;;3187:2;3172:18;;;2961:4;3256:218;3270:6;3267:1;3264:13;3256:218;;;3335:13;;-1:-1:-1;;;;;3331:62:203;3319:75;;3449:15;;;;3414:12;;;;3292:1;3285:9;3256:218;;;-1:-1:-1;3491:3:203;;2819:681;-1:-1:-1;;;;;;2819:681:203:o;3505:1697::-;3709:4;3738:2;3778;3767:9;3763:18;3808:2;3797:9;3790:21;3831:6;3866;3860:13;3897:6;3889;3882:22;3923:2;3913:12;;3956:2;3945:9;3941:18;3934:25;;4018:2;4008:6;4005:1;4001:14;3990:9;3986:30;3982:39;4056:2;4048:6;4044:15;4077:1;4098;4108:1065;4124:6;4119:3;4116:15;4108:1065;;;4193:22;;;-1:-1:-1;;4189:95:203;4177:108;;4308:13;;4395:9;;-1:-1:-1;;;;;4391:58:203;4376:74;;4489:11;;4483:18;4521:15;;;4514:27;;;4602:19;;4348:15;;;4634:24;;;4724:21;;;;4769:1;;4692:2;4680:15;;;4783:282;4799:8;4794:3;4791:17;4783:282;;;4880:15;;4897:66;4876:88;4862:103;;5034:17;;;;4827:1;4818:11;;;;;4991:14;;;;4783:282;;;-1:-1:-1;5151:12:203;;;;5088:5;-1:-1:-1;;;5116:15:203;;;;4150:1;4141:11;4108:1065;;;-1:-1:-1;5190:6:203;;3505:1697;-1:-1:-1;;;;;;;;;3505:1697:203:o;5207:861::-;5369:4;5398:2;5438;5427:9;5423:18;5468:2;5457:9;5450:21;5491:6;5526;5520:13;5557:6;5549;5542:22;5595:2;5584:9;5580:18;5573:25;;5657:2;5647:6;5644:1;5640:14;5629:9;5625:30;5621:39;5607:53;;5695:2;5687:6;5683:15;5716:1;5726:313;5740:6;5737:1;5734:13;5726:313;;;-1:-1:-1;;5817:9:203;5809:6;5805:22;5801:95;5796:3;5789:108;5920:39;5952:6;5943;5937:13;5920:39;:::i;:::-;5910:49;-1:-1:-1;6017:12:203;;;;5982:15;;;;5762:1;5755:9;5726:313;;;-1:-1:-1;6056:6:203;;5207:861;-1:-1:-1;;;;;;;5207:861:203:o;6829:321::-;6905:5;6934:52;6950:35;6978:6;6950:35;:::i;6934:52::-;6925:61;;7009:6;7002:5;6995:21;7049:3;7040:6;7035:3;7031:16;7028:25;7025:45;;;7066:1;7063;7056:12;7025:45;7079:65;7137:6;7130:4;7123:5;7119:16;7114:3;7079:65;:::i;7155:459::-;7235:6;7288:2;7276:9;7267:7;7263:23;7259:32;7256:52;;;7304:1;7301;7294:12;7256:52;7337:9;7331:16;7370:18;7362:6;7359:30;7356:50;;;7402:1;7399;7392:12;7356:50;7425:22;;7478:4;7470:13;;7466:27;-1:-1:-1;7456:55:203;;7507:1;7504;7497:12;7456:55;7530:78;7600:7;7595:2;7589:9;7584:2;7580;7576:11;7530:78;:::i;7619:319::-;7825:6;7814:9;7807:25;7868:2;7863;7852:9;7848:18;7841:30;7788:4;7888:44;7928:2;7917:9;7913:18;7905:6;7888:44;:::i;9305:321::-;9383:6;9436:2;9424:9;9415:7;9411:23;9407:32;9404:52;;;9452:1;9449;9442:12;9404:52;9484:9;9478:16;-1:-1:-1;;;;;9527:5:203;9523:54;9516:5;9513:65;9503:93;;9592:1;9589;9582:12;10218:336;10287:6;10340:2;10328:9;10319:7;10315:23;10311:32;10308:52;;;10356:1;10353;10346:12;10308:52;10388:9;10382:16;10438:66;10431:5;10427:78;10420:5;10417:89;10407:117;;10520:1;10517;10510:12;10559:437;10638:1;10634:12;;;;10681;;;10702:61;;10756:4;10748:6;10744:17;10734:27;;10702:61;10809:2;10801:6;10798:14;10778:18;10775:38;10772:218;;10846:77;10843:1;10836:88;10947:4;10944:1;10937:15;10975:4;10972:1;10965:15;10772:218;;10559:437;;;:::o;11303:430::-;11500:66;11492:6;11488:79;11483:3;11476:92;11458:3;11597:6;11591:13;11613:74;11680:6;11676:1;11671:3;11667:11;11660:4;11652:6;11648:17;11613:74;:::i;:::-;11707:16;;;;11725:1;11703:24;;11303:430;-1:-1:-1;;;11303:430:203:o;11738:287::-;11867:3;11905:6;11899:13;11921:66;11980:6;11975:3;11968:4;11960:6;11956:17;11921:66;:::i;:::-;12003:16;;;;;11738:287;-1:-1:-1;;11738:287:203:o;12030:277::-;12097:6;12150:2;12138:9;12129:7;12125:23;12121:32;12118:52;;;12166:1;12163;12156:12;12118:52;12198:9;12192:16;12251:5;12244:13;12237:21;12230:5;12227:32;12217:60;;12273:1;12270;12263:12;13175:439;13425:2;13414:9;13407:21;13388:4;13451:49;13496:2;13485:9;13481:18;13088:2;13076:15;;13123:12;13116:4;13107:14;;13100:36;13161:2;13152:12;;13011:159;13451:49;13548:9;13540:6;13536:22;13531:2;13520:9;13516:18;13509:50;13576:32;13601:6;13593;13576:32;:::i;13783:439::-;14033:2;14022:9;14015:21;13996:4;14059:49;14104:2;14093:9;14089:18;13696:2;13684:15;;13731:12;13724:4;13715:14;;13708:36;13769:2;13760:12;;13619:159;14840:279;14905:9;;;14926:10;;;14923:190;;;14969:77;14966:1;14959:88;15070:4;15067:1;15060:15;15098:4;15095:1;15088:15;15530:397;15760:2;15749:9;15742:21;15723:4;15780:49;15825:2;15814:9;15810:18;13088:2;13076:15;;13123:12;13116:4;13107:14;;13100:36;13161:2;13152:12;;13011:159;15780:49;15772:57;;-1:-1:-1;;;;;15869:6:203;15865:55;15860:2;15849:9;15845:18;15838:83;15530:397;;;;:::o;15932:::-;16162:2;16151:9;16144:21;16125:4;16182:49;16227:2;16216:9;16212:18;13696:2;13684:15;;13731:12;13724:4;13715:14;;13708:36;13769:2;13760:12;;13619:159","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","_executeFromRootSystemA(bytes)":"199e1d17","_executeFromRootSystemA(bytes32,bytes)":"101f99a3","_executeFromSystemA(bytes)":"075d7777","_executeFromSystemA(bytes32,bytes)":"3fa01b98","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testCallNonRootFromNonRootMsgSender()":"8d95e4d6","testCallNonRootFromRootMsgSender()":"5af8de30","testCallRootFromNonRootEcho()":"055e33e8","testCallRootFromNonRootMsgSender()":"e78c82e3","testCallRootFromNonRootWorld()":"2cb6867d","testCallRootFromNonRootWorldSelector()":"c0310bf6","testCallRootFromRootEcho()":"3424e1c1","testCallRootFromRootMsgSender()":"ed3a1856","testCallRootFromRootWorld()":"3911733c","testCallRootFromRootWorldSelector()":"78845560","testNonCallRootFromNonRootEcho()":"aec62e14","testNonCallRootFromNonRootWorld()":"4478d618","testNonCallRootFromNonRootWorldSelector()":"54dcf132","testNonCallRootFromRootEcho()":"32d7d505","testNonCallRootFromRootWorld()":"85dc0868","testNonCallRootFromRootWorldSelector()":"2f2499f4"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"systemId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"_executeFromRootSystemA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"_executeFromRootSystemA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"_executeFromSystemA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"systemId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"_executeFromSystemA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallNonRootFromNonRootMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallNonRootFromRootMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromNonRootEcho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromNonRootMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromNonRootWorld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromNonRootWorldSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromRootEcho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromRootMsgSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromRootWorld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallRootFromRootWorldSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromNonRootEcho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromNonRootWorld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromNonRootWorldSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromRootEcho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromRootWorld\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonCallRootFromRootWorldSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/SystemSwitch.t.sol\":\"SystemSwitchTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f\",\"dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4\",\"dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a\",\"dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f\",\"dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d\",\"dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2\",\"dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0\",\"dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a\",\"dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc\",\"dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d\",\"dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5\",\"dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac\",\"dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115\",\"dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1\",\"dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5\",\"dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8\",\"dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9\",\"dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3\",\"dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3\",\"dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e\",\"dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a\",\"dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279\",\"dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738\",\"dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7\",\"dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6\",\"dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f\",\"dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9\",\"dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695\",\"dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee\",\"dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793\",\"dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC\"]},\"node_modules/@latticexyz/store/src/leftMask.sol\":{\"keccak256\":\"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793\",\"dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81\",\"dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84\",\"dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1\",\"dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49\",\"dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25\",\"dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491\",\"dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952\",\"dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716\",\"dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1\",\"dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d\",\"dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5\",\"dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35\",\"dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c\",\"dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef\",\"dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83\",\"dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c\",\"dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce\",\"dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd\",\"dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01\",\"dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14\",\"dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518\",\"dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc\",\"dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255\",\"dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5\",\"dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024\",\"dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8\",\"dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol\":{\"keccak256\":\"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43\",\"dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0\",\"dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad\",\"dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961\",\"dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e\",\"dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91\",\"dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4\",\"dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b\",\"dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b\",\"dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a\",\"dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436\",\"dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330\",\"dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231\",\"dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231\",\"dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218\",\"dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol\":{\"keccak256\":\"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9\",\"dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol\":{\"keccak256\":\"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417\",\"dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb\"]},\"node_modules/@latticexyz/world/src/modules/core/constants.sol\":{\"keccak256\":\"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e\",\"dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0\",\"dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e\",\"dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c\",\"dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6\",\"dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24\",\"dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198\",\"dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm\"]},\"node_modules/@latticexyz/world/src/modules/core/types.sol\":{\"keccak256\":\"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3\",\"dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795\",\"dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df\",\"dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9\",\"dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a\",\"dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45\",\"dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4\"]},\"node_modules/@latticexyz/world/test/createCoreModule.sol\":{\"keccak256\":\"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2\",\"dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/utils/SystemSwitch.sol\":{\"keccak256\":\"0x8242e32af7f919eebac06852a64d354f8d24ee777079244d430852f22d47230e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32745bde5e8e24e0c293545b1047a580a77602f01b8695c2236192187bdc1da\",\"dweb:/ipfs/QmeX59sxxU6SoM9o1KbCDxuR4DmHB3nyx1Kee4nLgfq6UH\"]},\"test/SystemSwitch.t.sol\":{\"keccak256\":\"0x4b94a3137e904e582c3af482afe01316d34b67d57bdd31b65c7174364a530c7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9276851302c3115c7016e495cc2557c1c1a8d9dc2fa17d9d5cf5d49d776742dd\",\"dweb:/ipfs/Qmf72JqyVeSe6RG13ZbAaq5m6zPz4N5viECBftKNcFcV41\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"ResourceId","name":"systemId","type":"bytes32"},{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_executeFromRootSystemA","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_executeFromRootSystemA","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_executeFromSystemA","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"ResourceId","name":"systemId","type":"bytes32"},{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"_executeFromSystemA","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallNonRootFromNonRootMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallNonRootFromRootMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromNonRootEcho"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromNonRootMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromNonRootWorld"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromNonRootWorldSelector"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromRootEcho"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromRootMsgSender"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromRootWorld"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallRootFromRootWorldSelector"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromNonRootEcho"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromNonRootWorld"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromNonRootWorldSelector"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromRootEcho"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromRootWorld"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonCallRootFromRootWorldSelector"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/SystemSwitch.t.sol":"SystemSwitchTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b","urls":["bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f","dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb","urls":["bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4","dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b","urls":["bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a","dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f","urls":["bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f","dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a","urls":["bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d","dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf","urls":["bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2","dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827","urls":["bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0","dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5","urls":["bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a","dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212","urls":["bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc","dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f","urls":["bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d","dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9","urls":["bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5","dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37","urls":["bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac","dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f","urls":["bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115","dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b","urls":["bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1","dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7","urls":["bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5","dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91","urls":["bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8","dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9","urls":["bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9","dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401","urls":["bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3","dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710","urls":["bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3","dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7","urls":["bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e","dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94","urls":["bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a","dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526","urls":["bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279","dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa","urls":["bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738","dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416","urls":["bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7","dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3","urls":["bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6","dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6","urls":["bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f","dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782","urls":["bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9","dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d","urls":["bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695","dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91","urls":["bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee","dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076","urls":["bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793","dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC"],"license":"MIT"},"node_modules/@latticexyz/store/src/leftMask.sol":{"keccak256":"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f","urls":["bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793","dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5","urls":["bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81","dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2","urls":["bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84","dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04","urls":["bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1","dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d","urls":["bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49","dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650","urls":["bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25","dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c","urls":["bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491","dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41","urls":["bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952","dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89","urls":["bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716","dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270","urls":["bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1","dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553","urls":["bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d","dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47","urls":["bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5","dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900","urls":["bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35","dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9","urls":["bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c","dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881","urls":["bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef","dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7","urls":["bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83","dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb","urls":["bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c","dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19","urls":["bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce","dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd","urls":["bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd","dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2","urls":["bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01","dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b","urls":["bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14","dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a","urls":["bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518","dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff","urls":["bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc","dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593","urls":["bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255","dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55","urls":["bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5","dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed","urls":["bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024","dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97","urls":["bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8","dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol":{"keccak256":"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350","urls":["bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43","dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263","urls":["bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0","dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62","urls":["bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad","dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8","urls":["bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961","dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb","urls":["bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e","dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426","urls":["bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91","dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac","urls":["bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4","dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed","urls":["bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b","dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd","urls":["bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b","dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527","urls":["bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a","dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8","urls":["bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436","dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22","urls":["bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330","dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a","urls":["bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231","dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5","urls":["bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231","dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588","urls":["bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218","dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol":{"keccak256":"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43","urls":["bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9","dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol":{"keccak256":"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125","urls":["bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417","dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/constants.sol":{"keccak256":"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0","urls":["bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e","dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol":{"keccak256":"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc","urls":["bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0","dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol":{"keccak256":"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc","urls":["bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e","dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol":{"keccak256":"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1","urls":["bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c","dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d","urls":["bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6","dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol":{"keccak256":"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc","urls":["bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24","dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427","urls":["bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198","dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/types.sol":{"keccak256":"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a","urls":["bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3","dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039","urls":["bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795","dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55","urls":["bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df","dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb","urls":["bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9","dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44","urls":["bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a","dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3","urls":["bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45","dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4"],"license":"MIT"},"node_modules/@latticexyz/world/test/createCoreModule.sol":{"keccak256":"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8","urls":["bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2","dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/utils/SystemSwitch.sol":{"keccak256":"0x8242e32af7f919eebac06852a64d354f8d24ee777079244d430852f22d47230e","urls":["bzz-raw://d32745bde5e8e24e0c293545b1047a580a77602f01b8695c2236192187bdc1da","dweb:/ipfs/QmeX59sxxU6SoM9o1KbCDxuR4DmHB3nyx1Kee4nLgfq6UH"],"license":"MIT"},"test/SystemSwitch.t.sol":{"keccak256":"0x4b94a3137e904e582c3af482afe01316d34b67d57bdd31b65c7174364a530c7a","urls":["bzz-raw://9276851302c3115c7016e495cc2557c1c1a8d9dc2fa17d9d5cf5d49d776742dd","dweb:/ipfs/Qmf72JqyVeSe6RG13ZbAaq5m6zPz4N5viECBftKNcFcV41"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"test/SystemSwitch.t.sol","id":135842,"exportedSymbols":{"EchoSystem":[134945],"GasReporter":[226],"IBaseWorld":[24400],"RESOURCE_SYSTEM":[37052],"ROOT_NAMESPACE":[34848],"ResourceId":[2782],"System":[22601],"SystemSwitch":[126723],"SystemSwitchTest":[135841],"Test":[58812],"World":[23730],"WorldResourceIdInstance":[24272],"WorldResourceIdLib":[24145],"caller":[134951],"createCoreModule":[46913]},"nodeType":"SourceUnit","src":"32:8934:200","nodes":[{"id":134862,"nodeType":"PragmaDirective","src":"32:25:200","nodes":[],"literals":["solidity",">=","0.8",".21"]},{"id":134864,"nodeType":"ImportDirective","src":"59:42:200","nodes":[],"absolutePath":"node_modules/forge-std/src/Test.sol","file":"forge-std/Test.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":58813,"symbolAliases":[{"foreign":{"id":134863,"name":"Test","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58812,"src":"68:4:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134866,"nodeType":"ImportDirective","src":"102:73:200","nodes":[],"absolutePath":"node_modules/@latticexyz/gas-report/src/GasReporter.sol","file":"@latticexyz/gas-report/src/GasReporter.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":227,"symbolAliases":[{"foreign":{"id":134865,"name":"GasReporter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"111:11:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134868,"nodeType":"ImportDirective","src":"177:58:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/System.sol","file":"@latticexyz/world/src/System.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":22602,"symbolAliases":[{"foreign":{"id":134867,"name":"System","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22601,"src":"186:6:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134870,"nodeType":"ImportDirective","src":"236:85:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":24401,"symbolAliases":[{"foreign":{"id":134869,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"245:10:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134872,"nodeType":"ImportDirective","src":"322:56:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/World.sol","file":"@latticexyz/world/src/World.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":23731,"symbolAliases":[{"foreign":{"id":134871,"name":"World","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23730,"src":"331:5:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134874,"nodeType":"ImportDirective","src":"379:79:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/createCoreModule.sol","file":"@latticexyz/world/test/createCoreModule.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":46914,"symbolAliases":[{"foreign":{"id":134873,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"388:16:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134878,"nodeType":"ImportDirective","src":"459:116:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":24273,"symbolAliases":[{"foreign":{"id":134875,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"468:10:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134876,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"480:18:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134877,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24272,"src":"500:23:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134880,"nodeType":"ImportDirective","src":"576:79:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":37059,"symbolAliases":[{"foreign":{"id":134879,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"585:15:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134882,"nodeType":"ImportDirective","src":"656:69:200","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/constants.sol","file":"@latticexyz/world/src/constants.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":34921,"symbolAliases":[{"foreign":{"id":134881,"name":"ROOT_NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34848,"src":"665:14:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134884,"nodeType":"ImportDirective","src":"726:61:200","nodes":[],"absolutePath":"src/utils/SystemSwitch.sol","file":"../src/utils/SystemSwitch.sol","nameLocation":"-1:-1:-1","scope":135842,"sourceUnit":126724,"symbolAliases":[{"foreign":{"id":134883,"name":"SystemSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126723,"src":"735:12:200","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134945,"nodeType":"ContractDefinition","src":"789:570:200","nodes":[{"id":134895,"nodeType":"FunctionDefinition","src":"823:81:200","nodes":[],"body":{"id":134894,"nodeType":"Block","src":"874:30:200","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134891,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23760,"src":"887:10:200","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":134892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"887:12:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":134890,"id":134893,"nodeType":"Return","src":"880:19:200"}]},"functionSelector":"d737d0c7","implemented":true,"kind":"function","modifiers":[],"name":"msgSender","nameLocation":"832:9:200","parameters":{"id":134887,"nodeType":"ParameterList","parameters":[],"src":"841:2:200"},"returnParameters":{"id":134890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134895,"src":"865:7:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134888,"name":"address","nodeType":"ElementaryTypeName","src":"865:7:200","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"864:9:200"},"scope":134945,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":134904,"nodeType":"FunctionDefinition","src":"908:73:200","nodes":[],"body":{"id":134903,"nodeType":"Block","src":"955:26:200","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134900,"name":"_world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23782,"src":"968:6:200","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":134901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"968:8:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":134899,"id":134902,"nodeType":"Return","src":"961:15:200"}]},"functionSelector":"30b67baa","implemented":true,"kind":"function","modifiers":[],"name":"world","nameLocation":"917:5:200","parameters":{"id":134896,"nodeType":"ParameterList","parameters":[],"src":"922:2:200"},"returnParameters":{"id":134899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134904,"src":"946:7:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134897,"name":"address","nodeType":"ElementaryTypeName","src":"946:7:200","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"945:9:200"},"scope":134945,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":134914,"nodeType":"FunctionDefinition","src":"985:98:200","nodes":[],"body":{"id":134913,"nodeType":"Block","src":"1058:25:200","nodes":[],"statements":[{"expression":{"id":134911,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134906,"src":"1071:7:200","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":134910,"id":134912,"nodeType":"Return","src":"1064:14:200"}]},"functionSelector":"f15da729","implemented":true,"kind":"function","modifiers":[],"name":"echo","nameLocation":"994:4:200","parameters":{"id":134907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134906,"mutability":"mutable","name":"message","nameLocation":"1013:7:200","nodeType":"VariableDeclaration","scope":134914,"src":"999:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":134905,"name":"string","nodeType":"ElementaryTypeName","src":"999:6:200","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"998:23:200"},"returnParameters":{"id":134910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134914,"src":"1043:13:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":134908,"name":"string","nodeType":"ElementaryTypeName","src":"1043:6:200","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1042:15:200"},"scope":134945,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":134931,"nodeType":"FunctionDefinition","src":"1087:143:200","nodes":[],"body":{"id":134930,"nodeType":"Block","src":"1175:55:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":134926,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134917,"src":"1206:8:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":134927,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134919,"src":"1216:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134924,"name":"SystemSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126723,"src":"1188:12:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemSwitch_$126723_$","typeString":"type(library SystemSwitch)"}},"id":134925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1201:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":126676,"src":"1188:17:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":134928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:37:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":134923,"id":134929,"nodeType":"Return","src":"1181:44:200"}]},"functionSelector":"3ae7af08","implemented":true,"kind":"function","modifiers":[],"name":"call","nameLocation":"1096:4:200","parameters":{"id":134920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134917,"mutability":"mutable","name":"systemId","nameLocation":"1112:8:200","nodeType":"VariableDeclaration","scope":134931,"src":"1101:19:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134916,"nodeType":"UserDefinedTypeName","pathNode":{"id":134915,"name":"ResourceId","nameLocations":["1101:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1101:10:200"},"referencedDeclaration":2782,"src":"1101:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"constant":false,"id":134919,"mutability":"mutable","name":"callData","nameLocation":"1135:8:200","nodeType":"VariableDeclaration","scope":134931,"src":"1122:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134918,"name":"bytes","nodeType":"ElementaryTypeName","src":"1122:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1100:44:200"},"returnParameters":{"id":134923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134931,"src":"1161:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134921,"name":"bytes","nodeType":"ElementaryTypeName","src":"1161:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1160:14:200"},"scope":134945,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134944,"nodeType":"FunctionDefinition","src":"1234:123:200","nodes":[],"body":{"id":134943,"nodeType":"Block","src":"1312:45:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":134940,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134933,"src":"1343:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134938,"name":"SystemSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126723,"src":"1325:12:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemSwitch_$126723_$","typeString":"type(library SystemSwitch)"}},"id":134939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1338:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":126722,"src":"1325:17:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":134941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1325:27:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":134937,"id":134942,"nodeType":"Return","src":"1318:34:200"}]},"functionSelector":"96f09da6","implemented":true,"kind":"function","modifiers":[],"name":"callViaSelector","nameLocation":"1243:15:200","parameters":{"id":134934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134933,"mutability":"mutable","name":"callData","nameLocation":"1272:8:200","nodeType":"VariableDeclaration","scope":134944,"src":"1259:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134932,"name":"bytes","nodeType":"ElementaryTypeName","src":"1259:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1258:23:200"},"returnParameters":{"id":134937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":134944,"src":"1298:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134935,"name":"bytes","nodeType":"ElementaryTypeName","src":"1298:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1297:14:200"},"scope":134945,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":134885,"name":"System","nameLocations":["812:6:200"],"nodeType":"IdentifierPath","referencedDeclaration":22601,"src":"812:6:200"},"id":134886,"nodeType":"InheritanceSpecifier","src":"812:6:200"}],"canonicalName":"EchoSystem","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[134945,22601,23800,22336,22203],"name":"EchoSystem","nameLocation":"798:10:200","scope":135842,"usedErrors":[22360,22390],"usedEvents":[]},{"id":134951,"nodeType":"VariableDeclaration","src":"1361:39:200","nodes":[],"constant":true,"mutability":"constant","name":"caller","nameLocation":"1378:6:200","scope":135842,"stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134946,"name":"address","nodeType":"ElementaryTypeName","src":"1361:7:200","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"34323332","id":134949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1395:4:200","typeDescriptions":{"typeIdentifier":"t_rational_4232_by_1","typeString":"int_const 4232"},"value":"4232"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_4232_by_1","typeString":"int_const 4232"}],"id":134948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1387:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134947,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:200","typeDescriptions":{}}},"id":134950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1387:13:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"id":135841,"nodeType":"ContractDefinition","src":"1403:7562:200","nodes":[{"id":134959,"nodeType":"UsingForDirective","src":"1454:45:200","nodes":[],"global":false,"libraryName":{"id":134956,"name":"WorldResourceIdInstance","nameLocations":["1460:23:200"],"nodeType":"IdentifierPath","referencedDeclaration":24272,"src":"1460:23:200"},"typeName":{"id":134958,"nodeType":"UserDefinedTypeName","pathNode":{"id":134957,"name":"ResourceId","nameLocations":["1488:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1488:10:200"},"referencedDeclaration":2782,"src":"1488:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}},{"id":134962,"nodeType":"VariableDeclaration","src":"1503:16:200","nodes":[],"constant":false,"mutability":"mutable","name":"world","nameLocation":"1514:5:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"},"typeName":{"id":134961,"nodeType":"UserDefinedTypeName","pathNode":{"id":134960,"name":"IBaseWorld","nameLocations":["1503:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":24400,"src":"1503:10:200"},"referencedDeclaration":24400,"src":"1503:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"visibility":"internal"},{"id":134965,"nodeType":"VariableDeclaration","src":"1524:18:200","nodes":[],"constant":false,"mutability":"mutable","name":"systemA","nameLocation":"1535:7:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"},"typeName":{"id":134964,"nodeType":"UserDefinedTypeName","pathNode":{"id":134963,"name":"EchoSystem","nameLocations":["1524:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134945,"src":"1524:10:200"},"referencedDeclaration":134945,"src":"1524:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"visibility":"internal"},{"id":134968,"nodeType":"VariableDeclaration","src":"1546:18:200","nodes":[],"constant":false,"mutability":"mutable","name":"systemB","nameLocation":"1557:7:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"},"typeName":{"id":134967,"nodeType":"UserDefinedTypeName","pathNode":{"id":134966,"name":"EchoSystem","nameLocations":["1546:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134945,"src":"1546:10:200"},"referencedDeclaration":134945,"src":"1546:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"visibility":"internal"},{"id":134971,"nodeType":"VariableDeclaration","src":"1568:22:200","nodes":[],"constant":false,"mutability":"mutable","name":"rootSystemA","nameLocation":"1579:11:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"},"typeName":{"id":134970,"nodeType":"UserDefinedTypeName","pathNode":{"id":134969,"name":"EchoSystem","nameLocations":["1568:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134945,"src":"1568:10:200"},"referencedDeclaration":134945,"src":"1568:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"visibility":"internal"},{"id":134974,"nodeType":"VariableDeclaration","src":"1594:22:200","nodes":[],"constant":false,"mutability":"mutable","name":"rootSystemB","nameLocation":"1605:11:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"},"typeName":{"id":134973,"nodeType":"UserDefinedTypeName","pathNode":{"id":134972,"name":"EchoSystem","nameLocations":["1594:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134945,"src":"1594:10:200"},"referencedDeclaration":134945,"src":"1594:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"visibility":"internal"},{"id":134977,"nodeType":"VariableDeclaration","src":"1621:20:200","nodes":[],"constant":false,"mutability":"mutable","name":"systemAId","nameLocation":"1632:9:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134976,"nodeType":"UserDefinedTypeName","pathNode":{"id":134975,"name":"ResourceId","nameLocations":["1621:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1621:10:200"},"referencedDeclaration":2782,"src":"1621:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":134980,"nodeType":"VariableDeclaration","src":"1645:20:200","nodes":[],"constant":false,"mutability":"mutable","name":"systemBId","nameLocation":"1656:9:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134979,"nodeType":"UserDefinedTypeName","pathNode":{"id":134978,"name":"ResourceId","nameLocations":["1645:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1645:10:200"},"referencedDeclaration":2782,"src":"1645:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":134983,"nodeType":"VariableDeclaration","src":"1669:24:200","nodes":[],"constant":false,"mutability":"mutable","name":"rootSystemAId","nameLocation":"1680:13:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134982,"nodeType":"UserDefinedTypeName","pathNode":{"id":134981,"name":"ResourceId","nameLocations":["1669:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1669:10:200"},"referencedDeclaration":2782,"src":"1669:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":134986,"nodeType":"VariableDeclaration","src":"1697:24:200","nodes":[],"constant":false,"mutability":"mutable","name":"rootSystemBId","nameLocation":"1708:13:200","scope":135841,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134985,"nodeType":"UserDefinedTypeName","pathNode":{"id":134984,"name":"ResourceId","nameLocations":["1697:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1697:10:200"},"referencedDeclaration":2782,"src":"1697:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":135126,"nodeType":"FunctionDefinition","src":"1726:1209:200","nodes":[],"body":{"id":135125,"nodeType":"Block","src":"1750:1185:200","nodes":[],"statements":[{"assignments":[134991],"declarations":[{"constant":false,"id":134991,"mutability":"mutable","name":"_world","nameLocation":"1782:6:200","nodeType":"VariableDeclaration","scope":135125,"src":"1776:12:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"},"typeName":{"id":134990,"nodeType":"UserDefinedTypeName","pathNode":{"id":134989,"name":"World","nameLocations":["1776:5:200"],"nodeType":"IdentifierPath","referencedDeclaration":23730,"src":"1776:5:200"},"referencedDeclaration":23730,"src":"1776:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}},"visibility":"internal"}],"id":134996,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":134994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1791:9:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_World_$23730_$","typeString":"function () returns (contract World)"},"typeName":{"id":134993,"nodeType":"UserDefinedTypeName","pathNode":{"id":134992,"name":"World","nameLocations":["1795:5:200"],"nodeType":"IdentifierPath","referencedDeclaration":23730,"src":"1795:5:200"},"referencedDeclaration":23730,"src":"1795:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}},"id":134995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1791:11:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}},"nodeType":"VariableDeclarationStatement","src":"1776:26:200"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":135000,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"1826:16:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_contract$_CoreModule_$35431_$","typeString":"function () returns (contract CoreModule)"}},"id":135001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:18:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}],"expression":{"id":134997,"name":"_world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134991,"src":"1808:6:200","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}},"id":134999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1815:10:200","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":23071,"src":"1808:17:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$returns$__$","typeString":"function (contract IModule) external"}},"id":135002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1808:37:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135003,"nodeType":"ExpressionStatement","src":"1808:37:200"},{"expression":{"id":135011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135004,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"1851:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":135008,"name":"_world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134991,"src":"1878:6:200","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}],"id":135007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1870:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135006,"name":"address","nodeType":"ElementaryTypeName","src":"1870:7:200","typeDescriptions":{}}},"id":135009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1870:15:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":135005,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"1859:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseWorld_$24400_$","typeString":"type(contract IBaseWorld)"}},"id":135010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1859:27:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"src":"1851:35:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135012,"nodeType":"ExpressionStatement","src":"1851:35:200"},{"expression":{"id":135018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135013,"name":"systemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134965,"src":"1915:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1925:14:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_EchoSystem_$134945_$","typeString":"function () returns (contract EchoSystem)"},"typeName":{"id":135015,"nodeType":"UserDefinedTypeName","pathNode":{"id":135014,"name":"EchoSystem","nameLocations":["1929:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134945,"src":"1929:10:200"},"referencedDeclaration":134945,"src":"1929:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}}},"id":135017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1925:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"src":"1915:26:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"id":135019,"nodeType":"ExpressionStatement","src":"1915:26:200"},{"expression":{"id":135025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135020,"name":"systemB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134968,"src":"1947:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1957:14:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_EchoSystem_$134945_$","typeString":"function () returns (contract EchoSystem)"},"typeName":{"id":135022,"nodeType":"UserDefinedTypeName","pathNode":{"id":135021,"name":"EchoSystem","nameLocations":["1961:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134945,"src":"1961:10:200"},"referencedDeclaration":134945,"src":"1961:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}}},"id":135024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1957:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"src":"1947:26:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"id":135026,"nodeType":"ExpressionStatement","src":"1947:26:200"},{"expression":{"id":135032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135027,"name":"rootSystemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134971,"src":"1979:11:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1993:14:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_EchoSystem_$134945_$","typeString":"function () returns (contract EchoSystem)"},"typeName":{"id":135029,"nodeType":"UserDefinedTypeName","pathNode":{"id":135028,"name":"EchoSystem","nameLocations":["1997:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134945,"src":"1997:10:200"},"referencedDeclaration":134945,"src":"1997:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}}},"id":135031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1993:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"src":"1979:30:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"id":135033,"nodeType":"ExpressionStatement","src":"1979:30:200"},{"expression":{"id":135039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135034,"name":"rootSystemB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134974,"src":"2015:11:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2029:14:200","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_EchoSystem_$134945_$","typeString":"function () returns (contract EchoSystem)"},"typeName":{"id":135036,"nodeType":"UserDefinedTypeName","pathNode":{"id":135035,"name":"EchoSystem","nameLocations":["2033:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":134945,"src":"2033:10:200"},"referencedDeclaration":134945,"src":"2033:10:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}}},"id":135038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2029:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"src":"2015:30:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},"id":135040,"nodeType":"ExpressionStatement","src":"2015:30:200"},{"expression":{"id":135048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135041,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134977,"src":"2077:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135044,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"2125:15:200","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d65737061636541","id":135045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2153:12:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_e5249ea074de3b5c1907767d7daf078e87d4b0a31b187546ff27e540c44dd67f","typeString":"literal_string \"namespaceA\""},"value":"namespaceA"},{"hexValue":"73797374656d41","id":135046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2173:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c9562a232d8ed813eff016ef7af580f4ac4d26e2d3dbec81d3bf494297695e","typeString":"literal_string \"systemA\""},"value":"systemA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_e5249ea074de3b5c1907767d7daf078e87d4b0a31b187546ff27e540c44dd67f","typeString":"literal_string \"namespaceA\""},{"typeIdentifier":"t_stringliteral_47c9562a232d8ed813eff016ef7af580f4ac4d26e2d3dbec81d3bf494297695e","typeString":"literal_string \"systemA\""}],"expression":{"id":135042,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"2089:18:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2108:6:200","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"2089:25:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2117:6:200","2142:9:200","2167:4:200"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"2089:96:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"src":"2077:108:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135049,"nodeType":"ExpressionStatement","src":"2077:108:200"},{"expression":{"id":135057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135050,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"2191:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135053,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"2239:15:200","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d65737061636542","id":135054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2267:12:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_9966cb362f88b0d958879f3f2d1e887cd1b93cd84663a71d6f07414bb1f92582","typeString":"literal_string \"namespaceB\""},"value":"namespaceB"},{"hexValue":"73797374656d42","id":135055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2287:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b22053f4496c362f888b764f547d8ea33d632edb4e459a3de001e0e5add5a7c","typeString":"literal_string \"systemB\""},"value":"systemB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_9966cb362f88b0d958879f3f2d1e887cd1b93cd84663a71d6f07414bb1f92582","typeString":"literal_string \"namespaceB\""},{"typeIdentifier":"t_stringliteral_4b22053f4496c362f888b764f547d8ea33d632edb4e459a3de001e0e5add5a7c","typeString":"literal_string \"systemB\""}],"expression":{"id":135051,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"2203:18:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2222:6:200","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"2203:25:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2231:6:200","2256:9:200","2281:4:200"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"2203:96:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"src":"2191:108:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135058,"nodeType":"ExpressionStatement","src":"2191:108:200"},{"expression":{"id":135066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135059,"name":"rootSystemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134983,"src":"2305:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135062,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"2357:15:200","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"id":135063,"name":"ROOT_NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34848,"src":"2385:14:200","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"hexValue":"73797374656d41","id":135064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2407:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c9562a232d8ed813eff016ef7af580f4ac4d26e2d3dbec81d3bf494297695e","typeString":"literal_string \"systemA\""},"value":"systemA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_stringliteral_47c9562a232d8ed813eff016ef7af580f4ac4d26e2d3dbec81d3bf494297695e","typeString":"literal_string \"systemA\""}],"expression":{"id":135060,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"2321:18:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2340:6:200","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"2321:25:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2349:6:200","2374:9:200","2401:4:200"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"2321:98:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"src":"2305:114:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135067,"nodeType":"ExpressionStatement","src":"2305:114:200"},{"expression":{"id":135075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135068,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"2425:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135071,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"2477:15:200","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"id":135072,"name":"ROOT_NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34848,"src":"2505:14:200","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"hexValue":"73797374656d42","id":135073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2527:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b22053f4496c362f888b764f547d8ea33d632edb4e459a3de001e0e5add5a7c","typeString":"literal_string \"systemB\""},"value":"systemB"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_stringliteral_4b22053f4496c362f888b764f547d8ea33d632edb4e459a3de001e0e5add5a7c","typeString":"literal_string \"systemB\""}],"expression":{"id":135069,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"2441:18:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2460:6:200","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"2441:25:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2469:6:200","2494:9:200","2521:4:200"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"2441:98:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"src":"2425:114:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135076,"nodeType":"ExpressionStatement","src":"2425:114:200"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":135080,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134977,"src":"2597:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:14:200","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24191,"src":"2597:24:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_userDefinedValueType$_ResourceId_$2782_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":135082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2597:26:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":135077,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"2573:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2579:17:200","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24460,"src":"2573:23:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":135083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135084,"nodeType":"ExpressionStatement","src":"2573:51:200"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":135088,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"2654:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2664:14:200","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24191,"src":"2654:24:200","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_userDefinedValueType$_ResourceId_$2782_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":135090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2654:26:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":135085,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"2630:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2636:17:200","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24460,"src":"2630:23:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":135091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2630:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135092,"nodeType":"ExpressionStatement","src":"2630:51:200"},{"expression":{"arguments":[{"id":135096,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134977,"src":"2733:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135097,"name":"systemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134965,"src":"2744:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},{"hexValue":"74727565","id":135098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2753:4:200","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135093,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"2712:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2718:14:200","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2712:20:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":135099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2712:46:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135100,"nodeType":"ExpressionStatement","src":"2712:46:200"},{"expression":{"arguments":[{"id":135104,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"2785:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135105,"name":"systemB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134968,"src":"2796:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},{"hexValue":"74727565","id":135106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2805:4:200","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135101,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"2764:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2770:14:200","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2764:20:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":135107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2764:46:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135108,"nodeType":"ExpressionStatement","src":"2764:46:200"},{"expression":{"arguments":[{"id":135112,"name":"rootSystemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134983,"src":"2837:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135113,"name":"rootSystemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134971,"src":"2852:11:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},{"hexValue":"74727565","id":135114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2865:4:200","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135109,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"2816:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2822:14:200","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2816:20:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":135115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135116,"nodeType":"ExpressionStatement","src":"2816:54:200"},{"expression":{"arguments":[{"id":135120,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"2897:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135121,"name":"rootSystemB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134974,"src":"2912:11:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}},{"hexValue":"74727565","id":135122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2925:4:200","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135117,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"2876:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2882:14:200","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2876:20:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":135123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135124,"nodeType":"ExpressionStatement","src":"2876:54:200"}]},"functionSelector":"0a9254e4","implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"1735:5:200","parameters":{"id":134987,"nodeType":"ParameterList","parameters":[],"src":"1740:2:200"},"returnParameters":{"id":134988,"nodeType":"ParameterList","parameters":[],"src":"1750:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135156,"nodeType":"FunctionDefinition","src":"2939:226:200","nodes":[],"body":{"id":135155,"nodeType":"Block","src":"3046:119:200","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":135140,"name":"rootSystemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134983,"src":"3081:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135143,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"3111:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3122:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":134931,"src":"3111:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.call(ResourceId,bytes memory) returns (bytes memory)"}},{"components":[{"id":135145,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135129,"src":"3129:8:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135146,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135131,"src":"3139:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":135147,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3128:20:200","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$","typeString":"tuple(ResourceId,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.call(ResourceId,bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$","typeString":"tuple(ResourceId,bytes memory)"}],"expression":{"id":135141,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3096:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3100:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"3096:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3096:53:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135138,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"3070:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3076:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"3070:10:200","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:80:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3153:5:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":135150,"name":"bytes","nodeType":"ElementaryTypeName","src":"3153:5:200","typeDescriptions":{}}}],"id":135152,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3152:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":135136,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3059:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3063:6:200","memberName":"decode","nodeType":"MemberAccess","src":"3059:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3059:101:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":135135,"id":135154,"nodeType":"Return","src":"3052:108:200"}]},"functionSelector":"101f99a3","implemented":true,"kind":"function","modifiers":[],"name":"_executeFromRootSystemA","nameLocation":"2948:23:200","parameters":{"id":135132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135129,"mutability":"mutable","name":"systemId","nameLocation":"2983:8:200","nodeType":"VariableDeclaration","scope":135156,"src":"2972:19:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135128,"nodeType":"UserDefinedTypeName","pathNode":{"id":135127,"name":"ResourceId","nameLocations":["2972:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"2972:10:200"},"referencedDeclaration":2782,"src":"2972:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"constant":false,"id":135131,"mutability":"mutable","name":"callData","nameLocation":"3006:8:200","nodeType":"VariableDeclaration","scope":135156,"src":"2993:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135130,"name":"bytes","nodeType":"ElementaryTypeName","src":"2993:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2971:44:200"},"returnParameters":{"id":135135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135156,"src":"3032:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135133,"name":"bytes","nodeType":"ElementaryTypeName","src":"3032:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3031:14:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135186,"nodeType":"FunctionDefinition","src":"3169:218:200","nodes":[],"body":{"id":135185,"nodeType":"Block","src":"3272:115:200","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":135170,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134977,"src":"3307:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135173,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"3333:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3344:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":134931,"src":"3333:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.call(ResourceId,bytes memory) returns (bytes memory)"}},{"components":[{"id":135175,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135159,"src":"3351:8:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135176,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135161,"src":"3361:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":135177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3350:20:200","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$","typeString":"tuple(ResourceId,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.call(ResourceId,bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$","typeString":"tuple(ResourceId,bytes memory)"}],"expression":{"id":135171,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3318:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3322:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"3318:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3318:53:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135168,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"3296:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3302:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"3296:10:200","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3296:76:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3375:5:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":135180,"name":"bytes","nodeType":"ElementaryTypeName","src":"3375:5:200","typeDescriptions":{}}}],"id":135182,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3374:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":135166,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3285:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3289:6:200","memberName":"decode","nodeType":"MemberAccess","src":"3285:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3285:97:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":135165,"id":135184,"nodeType":"Return","src":"3278:104:200"}]},"functionSelector":"3fa01b98","implemented":true,"kind":"function","modifiers":[],"name":"_executeFromSystemA","nameLocation":"3178:19:200","parameters":{"id":135162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135159,"mutability":"mutable","name":"systemId","nameLocation":"3209:8:200","nodeType":"VariableDeclaration","scope":135186,"src":"3198:19:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135158,"nodeType":"UserDefinedTypeName","pathNode":{"id":135157,"name":"ResourceId","nameLocations":["3198:10:200"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"3198:10:200"},"referencedDeclaration":2782,"src":"3198:10:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"constant":false,"id":135161,"mutability":"mutable","name":"callData","nameLocation":"3232:8:200","nodeType":"VariableDeclaration","scope":135186,"src":"3219:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135160,"name":"bytes","nodeType":"ElementaryTypeName","src":"3219:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3197:44:200"},"returnParameters":{"id":135165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135186,"src":"3258:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135163,"name":"bytes","nodeType":"ElementaryTypeName","src":"3258:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3257:14:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135212,"nodeType":"FunctionDefinition","src":"3391:206:200","nodes":[],"body":{"id":135211,"nodeType":"Block","src":"3477:120:200","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":135197,"name":"rootSystemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134983,"src":"3512:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135200,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"3542:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3553:15:200","memberName":"callViaSelector","nodeType":"MemberAccess","referencedDeclaration":134944,"src":"3542:26:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.callViaSelector(bytes memory) returns (bytes memory)"}},{"components":[{"id":135202,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135188,"src":"3571:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":135203,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3570:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.callViaSelector(bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135198,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3527:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3531:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"3527:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3527:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135195,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"3501:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3507:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"3501:10:200","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:81:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3585:5:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":135206,"name":"bytes","nodeType":"ElementaryTypeName","src":"3585:5:200","typeDescriptions":{}}}],"id":135208,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3584:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":135193,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3490:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3494:6:200","memberName":"decode","nodeType":"MemberAccess","src":"3490:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3490:102:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":135192,"id":135210,"nodeType":"Return","src":"3483:109:200"}]},"functionSelector":"199e1d17","implemented":true,"kind":"function","modifiers":[],"name":"_executeFromRootSystemA","nameLocation":"3400:23:200","parameters":{"id":135189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135188,"mutability":"mutable","name":"callData","nameLocation":"3437:8:200","nodeType":"VariableDeclaration","scope":135212,"src":"3424:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135187,"name":"bytes","nodeType":"ElementaryTypeName","src":"3424:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3423:23:200"},"returnParameters":{"id":135192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135212,"src":"3463:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135190,"name":"bytes","nodeType":"ElementaryTypeName","src":"3463:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3462:14:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135238,"nodeType":"FunctionDefinition","src":"3601:198:200","nodes":[],"body":{"id":135237,"nodeType":"Block","src":"3683:116:200","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":135223,"name":"systemAId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134977,"src":"3718:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135226,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"3744:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3755:15:200","memberName":"callViaSelector","nodeType":"MemberAccess","referencedDeclaration":134944,"src":"3744:26:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.callViaSelector(bytes memory) returns (bytes memory)"}},{"components":[{"id":135228,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135214,"src":"3773:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":135229,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3772:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function EchoSystem.callViaSelector(bytes memory) returns (bytes memory)"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135224,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3729:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3733:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"3729:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3729:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135221,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"3707:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3713:4:200","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"3707:10:200","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3707:77:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3787:5:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":135232,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:200","typeDescriptions":{}}}],"id":135234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3786:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":135219,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3696:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3700:6:200","memberName":"decode","nodeType":"MemberAccess","src":"3696:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3696:98:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":135218,"id":135236,"nodeType":"Return","src":"3689:105:200"}]},"functionSelector":"075d7777","implemented":true,"kind":"function","modifiers":[],"name":"_executeFromSystemA","nameLocation":"3610:19:200","parameters":{"id":135215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135214,"mutability":"mutable","name":"callData","nameLocation":"3643:8:200","nodeType":"VariableDeclaration","scope":135238,"src":"3630:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135213,"name":"bytes","nodeType":"ElementaryTypeName","src":"3630:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3629:23:200"},"returnParameters":{"id":135218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135238,"src":"3669:12:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135216,"name":"bytes","nodeType":"ElementaryTypeName","src":"3669:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3668:14:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135271,"nodeType":"FunctionDefinition","src":"3906:244:200","nodes":[],"body":{"id":135270,"nodeType":"Block","src":"3954:196:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135244,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"3969:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135241,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3960:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3963:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"3960:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3960:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135246,"nodeType":"ExpressionStatement","src":"3960:16:200"},{"assignments":[135248],"declarations":[{"constant":false,"id":135248,"mutability":"mutable","name":"returnData","nameLocation":"3995:10:200","nodeType":"VariableDeclaration","scope":135270,"src":"3982:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135247,"name":"bytes","nodeType":"ElementaryTypeName","src":"3982:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135258,"initialValue":{"arguments":[{"id":135250,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"4032:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135253,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"4062:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4073:9:200","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":134895,"src":"4062:20:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"}},{"components":[],"id":135255,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4084:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135251,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4047:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4051:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"4047:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4047:40:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135249,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135156,135212],"referencedDeclaration":135156,"src":"4008:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4008:80:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3982:106:200"},{"expression":{"arguments":[{"arguments":[{"id":135262,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135248,"src":"4114:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4127:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135263,"name":"address","nodeType":"ElementaryTypeName","src":"4127:7:200","typeDescriptions":{}}}],"id":135265,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4126:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135260,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4103:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4107:6:200","memberName":"decode","nodeType":"MemberAccess","src":"4103:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":135267,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"4138:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135259,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"4094:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4094:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135269,"nodeType":"ExpressionStatement","src":"4094:51:200"}]},"functionSelector":"ed3a1856","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromRootMsgSender","nameLocation":"3915:29:200","parameters":{"id":135239,"nodeType":"ParameterList","parameters":[],"src":"3944:2:200"},"returnParameters":{"id":135240,"nodeType":"ParameterList","parameters":[],"src":"3954:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135307,"nodeType":"FunctionDefinition","src":"4154:244:200","nodes":[],"body":{"id":135306,"nodeType":"Block","src":"4198:200:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135277,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"4213:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135274,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4204:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4207:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4204:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4204:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135279,"nodeType":"ExpressionStatement","src":"4204:16:200"},{"assignments":[135281],"declarations":[{"constant":false,"id":135281,"mutability":"mutable","name":"returnData","nameLocation":"4239:10:200","nodeType":"VariableDeclaration","scope":135306,"src":"4226:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135280,"name":"bytes","nodeType":"ElementaryTypeName","src":"4226:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135291,"initialValue":{"arguments":[{"id":135283,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"4276:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135286,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"4306:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4317:5:200","memberName":"world","nodeType":"MemberAccess","referencedDeclaration":134904,"src":"4306:16:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"}},{"components":[],"id":135288,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4324:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135284,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4291:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4295:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"4291:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:36:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135282,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135156,135212],"referencedDeclaration":135156,"src":"4252:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4252:76:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4226:102:200"},{"expression":{"arguments":[{"arguments":[{"id":135295,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135281,"src":"4354:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4367:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135296,"name":"address","nodeType":"ElementaryTypeName","src":"4367:7:200","typeDescriptions":{}}}],"id":135298,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4366:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135293,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4343:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4347:6:200","memberName":"decode","nodeType":"MemberAccess","src":"4343:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4343:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135302,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"4386:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4378:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135300,"name":"address","nodeType":"ElementaryTypeName","src":"4378:7:200","typeDescriptions":{}}},"id":135303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4378:14:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135292,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"4334:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4334:59:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135305,"nodeType":"ExpressionStatement","src":"4334:59:200"}]},"functionSelector":"3911733c","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromRootWorld","nameLocation":"4163:25:200","parameters":{"id":135272,"nodeType":"ParameterList","parameters":[],"src":"4188:2:200"},"returnParameters":{"id":135273,"nodeType":"ParameterList","parameters":[],"src":"4198:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135341,"nodeType":"FunctionDefinition","src":"4402:241:200","nodes":[],"body":{"id":135340,"nodeType":"Block","src":"4445:198:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135313,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"4460:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135310,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4451:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4454:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4451:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4451:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135315,"nodeType":"ExpressionStatement","src":"4451:16:200"},{"assignments":[135317],"declarations":[{"constant":false,"id":135317,"mutability":"mutable","name":"returnData","nameLocation":"4486:10:200","nodeType":"VariableDeclaration","scope":135340,"src":"4473:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135316,"name":"bytes","nodeType":"ElementaryTypeName","src":"4473:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135328,"initialValue":{"arguments":[{"id":135319,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"4523:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135322,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"4553:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4564:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134914,"src":"4553:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},{"components":[{"hexValue":"68656c6c6f","id":135324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4571:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"id":135325,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4570:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135320,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4538:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4542:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"4538:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4538:42:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135318,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135156,135212],"referencedDeclaration":135156,"src":"4499:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4499:82:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4473:108:200"},{"expression":{"arguments":[{"arguments":[{"id":135332,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135317,"src":"4607:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4620:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135333,"name":"string","nodeType":"ElementaryTypeName","src":"4620:6:200","typeDescriptions":{}}}],"id":135335,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4619:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135330,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4596:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4600:6:200","memberName":"decode","nodeType":"MemberAccess","src":"4596:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4596:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4630:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135329,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"4587:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4587:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135339,"nodeType":"ExpressionStatement","src":"4587:51:200"}]},"functionSelector":"3424e1c1","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromRootEcho","nameLocation":"4411:24:200","parameters":{"id":135308,"nodeType":"ParameterList","parameters":[],"src":"4435:2:200"},"returnParameters":{"id":135309,"nodeType":"ParameterList","parameters":[],"src":"4445:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135387,"nodeType":"FunctionDefinition","src":"4647:438:200","nodes":[],"body":{"id":135386,"nodeType":"Block","src":"4699:386:200","nodes":[],"statements":[{"assignments":[135345],"declarations":[{"constant":false,"id":135345,"mutability":"mutable","name":"worldFunctionSelector","nameLocation":"4712:21:200","nodeType":"VariableDeclaration","scope":135386,"src":"4705:28:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":135344,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4705:6:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":135354,"initialValue":{"arguments":[{"id":135348,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"4778:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"6563686f28737472696e6729","id":135349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4799:14:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},"value":"echo(string)"},{"expression":{"expression":{"id":135350,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"4821:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4832:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134914,"src":"4821:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},"id":135352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4837:8:200","memberName":"selector","nodeType":"MemberAccess","src":"4821:24:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":135346,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"4736:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4742:28:200","memberName":"registerRootFunctionSelector","nodeType":"MemberAccess","referencedDeclaration":24513,"src":"4736:34:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_string_memory_ptr_$_t_bytes4_$returns$_t_bytes4_$","typeString":"function (ResourceId,string memory,bytes4) external returns (bytes4)"}},"id":135353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4736:115:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"4705:146:200"},{"assignments":[135356],"declarations":[{"constant":false,"id":135356,"mutability":"mutable","name":"callData","nameLocation":"4870:8:200","nodeType":"VariableDeclaration","scope":135386,"src":"4857:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135355,"name":"bytes","nodeType":"ElementaryTypeName","src":"4857:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135362,"initialValue":{"arguments":[{"id":135359,"name":"worldFunctionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135345,"src":"4904:21:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"68656c6c6f","id":135360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4927:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135357,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4881:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4885:18:200","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4881:22:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4857:78:200"},{"expression":{"arguments":[{"id":135366,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"4951:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135363,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4942:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4945:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4942:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4942:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135368,"nodeType":"ExpressionStatement","src":"4942:16:200"},{"assignments":[135370],"declarations":[{"constant":false,"id":135370,"mutability":"mutable","name":"returnData","nameLocation":"4977:10:200","nodeType":"VariableDeclaration","scope":135386,"src":"4964:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135369,"name":"bytes","nodeType":"ElementaryTypeName","src":"4964:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135374,"initialValue":{"arguments":[{"id":135372,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135356,"src":"5014:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135371,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135156,135212],"referencedDeclaration":135212,"src":"4990:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":135373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4964:59:200"},{"expression":{"arguments":[{"arguments":[{"id":135378,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135370,"src":"5049:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5062:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135379,"name":"string","nodeType":"ElementaryTypeName","src":"5062:6:200","typeDescriptions":{}}}],"id":135381,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5061:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135376,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5038:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5042:6:200","memberName":"decode","nodeType":"MemberAccess","src":"5038:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5038:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5072:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135375,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"5029:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5029:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135385,"nodeType":"ExpressionStatement","src":"5029:51:200"}]},"functionSelector":"78845560","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromRootWorldSelector","nameLocation":"4656:33:200","parameters":{"id":135342,"nodeType":"ParameterList","parameters":[],"src":"4689:2:200"},"returnParameters":{"id":135343,"nodeType":"ParameterList","parameters":[],"src":"4699:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135423,"nodeType":"FunctionDefinition","src":"5196:253:200","nodes":[],"body":{"id":135422,"nodeType":"Block","src":"5247:202:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135393,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"5262:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135390,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5253:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5256:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5253:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5253:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135395,"nodeType":"ExpressionStatement","src":"5253:16:200"},{"assignments":[135397],"declarations":[{"constant":false,"id":135397,"mutability":"mutable","name":"returnData","nameLocation":"5288:10:200","nodeType":"VariableDeclaration","scope":135422,"src":"5275:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135396,"name":"bytes","nodeType":"ElementaryTypeName","src":"5275:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135407,"initialValue":{"arguments":[{"id":135399,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"5321:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135402,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"5351:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5362:9:200","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":134895,"src":"5351:20:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"}},{"components":[],"id":135404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5373:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135400,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5336:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5340:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"5336:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5336:40:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135398,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135186,135238],"referencedDeclaration":135186,"src":"5301:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5301:76:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5275:102:200"},{"expression":{"arguments":[{"arguments":[{"id":135411,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135397,"src":"5403:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5416:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135412,"name":"address","nodeType":"ElementaryTypeName","src":"5416:7:200","typeDescriptions":{}}}],"id":135414,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5415:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135409,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5392:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5396:6:200","memberName":"decode","nodeType":"MemberAccess","src":"5392:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5392:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135418,"name":"systemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134965,"src":"5435:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}],"id":135417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5427:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135416,"name":"address","nodeType":"ElementaryTypeName","src":"5427:7:200","typeDescriptions":{}}},"id":135419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5427:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135408,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"5383:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5383:61:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135421,"nodeType":"ExpressionStatement","src":"5383:61:200"}]},"functionSelector":"e78c82e3","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromNonRootMsgSender","nameLocation":"5205:32:200","parameters":{"id":135388,"nodeType":"ParameterList","parameters":[],"src":"5237:2:200"},"returnParameters":{"id":135389,"nodeType":"ParameterList","parameters":[],"src":"5247:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135459,"nodeType":"FunctionDefinition","src":"5453:243:200","nodes":[],"body":{"id":135458,"nodeType":"Block","src":"5500:196:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135429,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"5515:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135426,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5506:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5509:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5506:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5506:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135431,"nodeType":"ExpressionStatement","src":"5506:16:200"},{"assignments":[135433],"declarations":[{"constant":false,"id":135433,"mutability":"mutable","name":"returnData","nameLocation":"5541:10:200","nodeType":"VariableDeclaration","scope":135458,"src":"5528:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135432,"name":"bytes","nodeType":"ElementaryTypeName","src":"5528:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135443,"initialValue":{"arguments":[{"id":135435,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"5574:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135438,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"5604:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5615:5:200","memberName":"world","nodeType":"MemberAccess","referencedDeclaration":134904,"src":"5604:16:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"}},{"components":[],"id":135440,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5622:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135436,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5589:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5593:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"5589:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5589:36:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135434,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135186,135238],"referencedDeclaration":135186,"src":"5554:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5554:72:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5528:98:200"},{"expression":{"arguments":[{"arguments":[{"id":135447,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135433,"src":"5652:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5665:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135448,"name":"address","nodeType":"ElementaryTypeName","src":"5665:7:200","typeDescriptions":{}}}],"id":135450,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5664:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135445,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5641:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5645:6:200","memberName":"decode","nodeType":"MemberAccess","src":"5641:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5641:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135454,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"5684:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5676:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135452,"name":"address","nodeType":"ElementaryTypeName","src":"5676:7:200","typeDescriptions":{}}},"id":135455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5676:14:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135444,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"5632:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5632:59:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135457,"nodeType":"ExpressionStatement","src":"5632:59:200"}]},"functionSelector":"2cb6867d","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromNonRootWorld","nameLocation":"5462:28:200","parameters":{"id":135424,"nodeType":"ParameterList","parameters":[],"src":"5490:2:200"},"returnParameters":{"id":135425,"nodeType":"ParameterList","parameters":[],"src":"5500:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135493,"nodeType":"FunctionDefinition","src":"5700:240:200","nodes":[],"body":{"id":135492,"nodeType":"Block","src":"5746:194:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135465,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"5761:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135462,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5752:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5755:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5752:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5752:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135467,"nodeType":"ExpressionStatement","src":"5752:16:200"},{"assignments":[135469],"declarations":[{"constant":false,"id":135469,"mutability":"mutable","name":"returnData","nameLocation":"5787:10:200","nodeType":"VariableDeclaration","scope":135492,"src":"5774:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135468,"name":"bytes","nodeType":"ElementaryTypeName","src":"5774:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135480,"initialValue":{"arguments":[{"id":135471,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"5820:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135474,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"5850:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5861:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134914,"src":"5850:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},{"components":[{"hexValue":"68656c6c6f","id":135476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5868:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"id":135477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5867:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135472,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5835:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5839:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"5835:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5835:42:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135470,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135186,135238],"referencedDeclaration":135186,"src":"5800:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5800:78:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5774:104:200"},{"expression":{"arguments":[{"arguments":[{"id":135484,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135469,"src":"5904:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5917:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135485,"name":"string","nodeType":"ElementaryTypeName","src":"5917:6:200","typeDescriptions":{}}}],"id":135487,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5916:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135482,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5893:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5897:6:200","memberName":"decode","nodeType":"MemberAccess","src":"5893:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5893:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5927:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135481,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"5884:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5884:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135491,"nodeType":"ExpressionStatement","src":"5884:51:200"}]},"functionSelector":"055e33e8","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromNonRootEcho","nameLocation":"5709:27:200","parameters":{"id":135460,"nodeType":"ParameterList","parameters":[],"src":"5736:2:200"},"returnParameters":{"id":135461,"nodeType":"ParameterList","parameters":[],"src":"5746:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135539,"nodeType":"FunctionDefinition","src":"5944:437:200","nodes":[],"body":{"id":135538,"nodeType":"Block","src":"5999:382:200","nodes":[],"statements":[{"assignments":[135497],"declarations":[{"constant":false,"id":135497,"mutability":"mutable","name":"worldFunctionSelector","nameLocation":"6012:21:200","nodeType":"VariableDeclaration","scope":135538,"src":"6005:28:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":135496,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6005:6:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":135506,"initialValue":{"arguments":[{"id":135500,"name":"rootSystemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134986,"src":"6078:13:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"6563686f28737472696e6729","id":135501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6099:14:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},"value":"echo(string)"},{"expression":{"expression":{"id":135502,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"6121:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6132:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134914,"src":"6121:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},"id":135504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6137:8:200","memberName":"selector","nodeType":"MemberAccess","src":"6121:24:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":135498,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"6036:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6042:28:200","memberName":"registerRootFunctionSelector","nodeType":"MemberAccess","referencedDeclaration":24513,"src":"6036:34:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_string_memory_ptr_$_t_bytes4_$returns$_t_bytes4_$","typeString":"function (ResourceId,string memory,bytes4) external returns (bytes4)"}},"id":135505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6036:115:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"6005:146:200"},{"assignments":[135508],"declarations":[{"constant":false,"id":135508,"mutability":"mutable","name":"callData","nameLocation":"6170:8:200","nodeType":"VariableDeclaration","scope":135538,"src":"6157:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135507,"name":"bytes","nodeType":"ElementaryTypeName","src":"6157:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135514,"initialValue":{"arguments":[{"id":135511,"name":"worldFunctionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135497,"src":"6204:21:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"68656c6c6f","id":135512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6227:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135509,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6181:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6185:18:200","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6181:22:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6181:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6157:78:200"},{"expression":{"arguments":[{"id":135518,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"6251:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135515,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6242:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6245:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6242:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6242:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135520,"nodeType":"ExpressionStatement","src":"6242:16:200"},{"assignments":[135522],"declarations":[{"constant":false,"id":135522,"mutability":"mutable","name":"returnData","nameLocation":"6277:10:200","nodeType":"VariableDeclaration","scope":135538,"src":"6264:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135521,"name":"bytes","nodeType":"ElementaryTypeName","src":"6264:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135526,"initialValue":{"arguments":[{"id":135524,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135508,"src":"6310:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135523,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135186,135238],"referencedDeclaration":135238,"src":"6290:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":135525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:29:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6264:55:200"},{"expression":{"arguments":[{"arguments":[{"id":135530,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135522,"src":"6345:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6358:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135531,"name":"string","nodeType":"ElementaryTypeName","src":"6358:6:200","typeDescriptions":{}}}],"id":135533,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6357:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135528,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6334:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6338:6:200","memberName":"decode","nodeType":"MemberAccess","src":"6334:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6334:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6368:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135527,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"6325:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6325:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135537,"nodeType":"ExpressionStatement","src":"6325:51:200"}]},"functionSelector":"c0310bf6","implemented":true,"kind":"function","modifiers":[],"name":"testCallRootFromNonRootWorldSelector","nameLocation":"5953:36:200","parameters":{"id":135494,"nodeType":"ParameterList","parameters":[],"src":"5989:2:200"},"returnParameters":{"id":135495,"nodeType":"ParameterList","parameters":[],"src":"5999:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135572,"nodeType":"FunctionDefinition","src":"6492:243:200","nodes":[],"body":{"id":135571,"nodeType":"Block","src":"6543:192:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135545,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"6558:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135542,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6549:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6552:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6549:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6549:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135547,"nodeType":"ExpressionStatement","src":"6549:16:200"},{"assignments":[135549],"declarations":[{"constant":false,"id":135549,"mutability":"mutable","name":"returnData","nameLocation":"6584:10:200","nodeType":"VariableDeclaration","scope":135571,"src":"6571:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135548,"name":"bytes","nodeType":"ElementaryTypeName","src":"6571:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135559,"initialValue":{"arguments":[{"id":135551,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"6621:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135554,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"6647:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6658:9:200","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":134895,"src":"6647:20:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"}},{"components":[],"id":135556,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6669:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135552,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6632:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6636:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"6632:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6632:40:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135550,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135156,135212],"referencedDeclaration":135156,"src":"6597:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6597:76:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6571:102:200"},{"expression":{"arguments":[{"arguments":[{"id":135563,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135549,"src":"6699:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6712:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135564,"name":"address","nodeType":"ElementaryTypeName","src":"6712:7:200","typeDescriptions":{}}}],"id":135566,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6711:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135561,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6688:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6692:6:200","memberName":"decode","nodeType":"MemberAccess","src":"6688:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6688:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":135568,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"6723:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135560,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"6679:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6679:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135570,"nodeType":"ExpressionStatement","src":"6679:51:200"}]},"functionSelector":"5af8de30","implemented":true,"kind":"function","modifiers":[],"name":"testCallNonRootFromRootMsgSender","nameLocation":"6501:32:200","parameters":{"id":135540,"nodeType":"ParameterList","parameters":[],"src":"6533:2:200"},"returnParameters":{"id":135541,"nodeType":"ParameterList","parameters":[],"src":"6543:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135608,"nodeType":"FunctionDefinition","src":"6739:243:200","nodes":[],"body":{"id":135607,"nodeType":"Block","src":"6786:196:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135578,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"6801:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135575,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6792:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6795:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6792:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6792:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135580,"nodeType":"ExpressionStatement","src":"6792:16:200"},{"assignments":[135582],"declarations":[{"constant":false,"id":135582,"mutability":"mutable","name":"returnData","nameLocation":"6827:10:200","nodeType":"VariableDeclaration","scope":135607,"src":"6814:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135581,"name":"bytes","nodeType":"ElementaryTypeName","src":"6814:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135592,"initialValue":{"arguments":[{"id":135584,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"6864:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135587,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"6890:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6901:5:200","memberName":"world","nodeType":"MemberAccess","referencedDeclaration":134904,"src":"6890:16:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"}},{"components":[],"id":135589,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6908:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135585,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6875:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6879:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"6875:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6875:36:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135583,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135156,135212],"referencedDeclaration":135156,"src":"6840:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6840:72:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6814:98:200"},{"expression":{"arguments":[{"arguments":[{"id":135596,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135582,"src":"6938:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6951:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135597,"name":"address","nodeType":"ElementaryTypeName","src":"6951:7:200","typeDescriptions":{}}}],"id":135599,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6950:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135594,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6927:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6931:6:200","memberName":"decode","nodeType":"MemberAccess","src":"6927:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6927:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135603,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"6970:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6962:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135601,"name":"address","nodeType":"ElementaryTypeName","src":"6962:7:200","typeDescriptions":{}}},"id":135604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6962:14:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135593,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"6918:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6918:59:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135606,"nodeType":"ExpressionStatement","src":"6918:59:200"}]},"functionSelector":"85dc0868","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromRootWorld","nameLocation":"6748:28:200","parameters":{"id":135573,"nodeType":"ParameterList","parameters":[],"src":"6776:2:200"},"returnParameters":{"id":135574,"nodeType":"ParameterList","parameters":[],"src":"6786:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135642,"nodeType":"FunctionDefinition","src":"6986:240:200","nodes":[],"body":{"id":135641,"nodeType":"Block","src":"7032:194:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135614,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"7047:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135611,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7038:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7041:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"7038:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7038:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135616,"nodeType":"ExpressionStatement","src":"7038:16:200"},{"assignments":[135618],"declarations":[{"constant":false,"id":135618,"mutability":"mutable","name":"returnData","nameLocation":"7073:10:200","nodeType":"VariableDeclaration","scope":135641,"src":"7060:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135617,"name":"bytes","nodeType":"ElementaryTypeName","src":"7060:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135629,"initialValue":{"arguments":[{"id":135620,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"7110:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135623,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"7136:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7147:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134914,"src":"7136:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},{"components":[{"hexValue":"68656c6c6f","id":135625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7154:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"id":135626,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7153:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135621,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7121:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7125:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"7121:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7121:42:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135619,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135156,135212],"referencedDeclaration":135156,"src":"7086:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7086:78:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7060:104:200"},{"expression":{"arguments":[{"arguments":[{"id":135633,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135618,"src":"7190:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7203:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135634,"name":"string","nodeType":"ElementaryTypeName","src":"7203:6:200","typeDescriptions":{}}}],"id":135636,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7202:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135631,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7179:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7183:6:200","memberName":"decode","nodeType":"MemberAccess","src":"7179:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7179:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7213:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135630,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"7170:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7170:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135640,"nodeType":"ExpressionStatement","src":"7170:51:200"}]},"functionSelector":"32d7d505","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromRootEcho","nameLocation":"6995:27:200","parameters":{"id":135609,"nodeType":"ParameterList","parameters":[],"src":"7022:2:200"},"returnParameters":{"id":135610,"nodeType":"ParameterList","parameters":[],"src":"7032:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135688,"nodeType":"FunctionDefinition","src":"7230:437:200","nodes":[],"body":{"id":135687,"nodeType":"Block","src":"7285:382:200","nodes":[],"statements":[{"assignments":[135646],"declarations":[{"constant":false,"id":135646,"mutability":"mutable","name":"worldFunctionSelector","nameLocation":"7298:21:200","nodeType":"VariableDeclaration","scope":135687,"src":"7291:28:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":135645,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7291:6:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":135655,"initialValue":{"arguments":[{"id":135649,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"7364:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"6563686f28737472696e6729","id":135650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7381:14:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},"value":"echo(string)"},{"expression":{"expression":{"id":135651,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"7403:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7414:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134914,"src":"7403:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},"id":135653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7419:8:200","memberName":"selector","nodeType":"MemberAccess","src":"7403:24:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":135647,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"7322:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7328:28:200","memberName":"registerRootFunctionSelector","nodeType":"MemberAccess","referencedDeclaration":24513,"src":"7322:34:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_string_memory_ptr_$_t_bytes4_$returns$_t_bytes4_$","typeString":"function (ResourceId,string memory,bytes4) external returns (bytes4)"}},"id":135654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7322:111:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"7291:142:200"},{"assignments":[135657],"declarations":[{"constant":false,"id":135657,"mutability":"mutable","name":"callData","nameLocation":"7452:8:200","nodeType":"VariableDeclaration","scope":135687,"src":"7439:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135656,"name":"bytes","nodeType":"ElementaryTypeName","src":"7439:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135663,"initialValue":{"arguments":[{"id":135660,"name":"worldFunctionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"7486:21:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"68656c6c6f","id":135661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7509:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135658,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7463:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7467:18:200","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7463:22:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7463:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7439:78:200"},{"expression":{"arguments":[{"id":135667,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"7533:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135664,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7524:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7527:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"7524:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7524:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135669,"nodeType":"ExpressionStatement","src":"7524:16:200"},{"assignments":[135671],"declarations":[{"constant":false,"id":135671,"mutability":"mutable","name":"returnData","nameLocation":"7559:10:200","nodeType":"VariableDeclaration","scope":135687,"src":"7546:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135670,"name":"bytes","nodeType":"ElementaryTypeName","src":"7546:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135675,"initialValue":{"arguments":[{"id":135673,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135657,"src":"7596:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135672,"name":"_executeFromRootSystemA","nodeType":"Identifier","overloadedDeclarations":[135156,135212],"referencedDeclaration":135212,"src":"7572:23:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":135674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7572:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7546:59:200"},{"expression":{"arguments":[{"arguments":[{"id":135679,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135671,"src":"7631:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7644:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135680,"name":"string","nodeType":"ElementaryTypeName","src":"7644:6:200","typeDescriptions":{}}}],"id":135682,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7643:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135677,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7620:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7624:6:200","memberName":"decode","nodeType":"MemberAccess","src":"7620:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7620:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7654:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135676,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"7611:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7611:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135686,"nodeType":"ExpressionStatement","src":"7611:51:200"}]},"functionSelector":"2f2499f4","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromRootWorldSelector","nameLocation":"7239:36:200","parameters":{"id":135643,"nodeType":"ParameterList","parameters":[],"src":"7275:2:200"},"returnParameters":{"id":135644,"nodeType":"ParameterList","parameters":[],"src":"7285:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135724,"nodeType":"FunctionDefinition","src":"7782:252:200","nodes":[],"body":{"id":135723,"nodeType":"Block","src":"7836:198:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135694,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"7851:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135691,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7842:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7845:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"7842:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7842:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135696,"nodeType":"ExpressionStatement","src":"7842:16:200"},{"assignments":[135698],"declarations":[{"constant":false,"id":135698,"mutability":"mutable","name":"returnData","nameLocation":"7877:10:200","nodeType":"VariableDeclaration","scope":135723,"src":"7864:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135697,"name":"bytes","nodeType":"ElementaryTypeName","src":"7864:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135708,"initialValue":{"arguments":[{"id":135700,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"7910:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135703,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"7936:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7947:9:200","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":134895,"src":"7936:20:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"}},{"components":[],"id":135705,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7958:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135701,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7921:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7925:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"7921:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7921:40:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135699,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135186,135238],"referencedDeclaration":135186,"src":"7890:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7890:72:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7864:98:200"},{"expression":{"arguments":[{"arguments":[{"id":135712,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135698,"src":"7988:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8001:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135713,"name":"address","nodeType":"ElementaryTypeName","src":"8001:7:200","typeDescriptions":{}}}],"id":135715,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8000:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135710,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7977:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7981:6:200","memberName":"decode","nodeType":"MemberAccess","src":"7977:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7977:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135719,"name":"systemA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134965,"src":"8020:7:200","typeDescriptions":{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EchoSystem_$134945","typeString":"contract EchoSystem"}],"id":135718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8012:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135717,"name":"address","nodeType":"ElementaryTypeName","src":"8012:7:200","typeDescriptions":{}}},"id":135720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8012:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135709,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"7968:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7968:61:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135722,"nodeType":"ExpressionStatement","src":"7968:61:200"}]},"functionSelector":"8d95e4d6","implemented":true,"kind":"function","modifiers":[],"name":"testCallNonRootFromNonRootMsgSender","nameLocation":"7791:35:200","parameters":{"id":135689,"nodeType":"ParameterList","parameters":[],"src":"7826:2:200"},"returnParameters":{"id":135690,"nodeType":"ParameterList","parameters":[],"src":"7836:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135760,"nodeType":"FunctionDefinition","src":"8038:242:200","nodes":[],"body":{"id":135759,"nodeType":"Block","src":"8088:192:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135730,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"8103:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135727,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"8094:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8097:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"8094:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8094:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135732,"nodeType":"ExpressionStatement","src":"8094:16:200"},{"assignments":[135734],"declarations":[{"constant":false,"id":135734,"mutability":"mutable","name":"returnData","nameLocation":"8129:10:200","nodeType":"VariableDeclaration","scope":135759,"src":"8116:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135733,"name":"bytes","nodeType":"ElementaryTypeName","src":"8116:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135744,"initialValue":{"arguments":[{"id":135736,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"8162:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135739,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"8188:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8199:5:200","memberName":"world","nodeType":"MemberAccess","referencedDeclaration":134904,"src":"8188:16:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"}},{"components":[],"id":135741,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8206:2:200","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function EchoSystem.world() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135737,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8173:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8177:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"8173:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8173:36:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135735,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135186,135238],"referencedDeclaration":135186,"src":"8142:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8142:68:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8116:94:200"},{"expression":{"arguments":[{"arguments":[{"id":135748,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135734,"src":"8236:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8249:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135749,"name":"address","nodeType":"ElementaryTypeName","src":"8249:7:200","typeDescriptions":{}}}],"id":135751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8248:9:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135746,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8225:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8229:6:200","memberName":"decode","nodeType":"MemberAccess","src":"8225:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8225:33:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":135755,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"8268:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8260:7:200","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135753,"name":"address","nodeType":"ElementaryTypeName","src":"8260:7:200","typeDescriptions":{}}},"id":135756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:14:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135745,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"8216:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8216:59:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135758,"nodeType":"ExpressionStatement","src":"8216:59:200"}]},"functionSelector":"4478d618","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromNonRootWorld","nameLocation":"8047:31:200","parameters":{"id":135725,"nodeType":"ParameterList","parameters":[],"src":"8078:2:200"},"returnParameters":{"id":135726,"nodeType":"ParameterList","parameters":[],"src":"8088:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135794,"nodeType":"FunctionDefinition","src":"8284:239:200","nodes":[],"body":{"id":135793,"nodeType":"Block","src":"8333:190:200","nodes":[],"statements":[{"expression":{"arguments":[{"id":135766,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"8348:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135763,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"8339:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8342:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"8339:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8339:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135768,"nodeType":"ExpressionStatement","src":"8339:16:200"},{"assignments":[135770],"declarations":[{"constant":false,"id":135770,"mutability":"mutable","name":"returnData","nameLocation":"8374:10:200","nodeType":"VariableDeclaration","scope":135793,"src":"8361:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135769,"name":"bytes","nodeType":"ElementaryTypeName","src":"8361:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135781,"initialValue":{"arguments":[{"id":135772,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"8407:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135775,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"8433:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8444:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134914,"src":"8433:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},{"components":[{"hexValue":"68656c6c6f","id":135777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8451:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"id":135778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8450:9:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135773,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8418:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8422:10:200","memberName":"encodeCall","nodeType":"MemberAccess","src":"8418:14:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:42:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135771,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135186,135238],"referencedDeclaration":135186,"src":"8387:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) returns (bytes memory)"}},"id":135780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8387:74:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8361:100:200"},{"expression":{"arguments":[{"arguments":[{"id":135785,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135770,"src":"8487:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8500:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135786,"name":"string","nodeType":"ElementaryTypeName","src":"8500:6:200","typeDescriptions":{}}}],"id":135788,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8499:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135783,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8476:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8480:6:200","memberName":"decode","nodeType":"MemberAccess","src":"8476:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8476:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8510:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135782,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"8467:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8467:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135792,"nodeType":"ExpressionStatement","src":"8467:51:200"}]},"functionSelector":"aec62e14","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromNonRootEcho","nameLocation":"8293:30:200","parameters":{"id":135761,"nodeType":"ParameterList","parameters":[],"src":"8323:2:200"},"returnParameters":{"id":135762,"nodeType":"ParameterList","parameters":[],"src":"8333:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135840,"nodeType":"FunctionDefinition","src":"8527:436:200","nodes":[],"body":{"id":135839,"nodeType":"Block","src":"8585:378:200","nodes":[],"statements":[{"assignments":[135798],"declarations":[{"constant":false,"id":135798,"mutability":"mutable","name":"worldFunctionSelector","nameLocation":"8598:21:200","nodeType":"VariableDeclaration","scope":135839,"src":"8591:28:200","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":135797,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8591:6:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":135807,"initialValue":{"arguments":[{"id":135801,"name":"systemBId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134980,"src":"8664:9:200","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"6563686f28737472696e6729","id":135802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8681:14:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},"value":"echo(string)"},{"expression":{"expression":{"id":135803,"name":"EchoSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134945,"src":"8703:10:200","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EchoSystem_$134945_$","typeString":"type(contract EchoSystem)"}},"id":135804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8714:4:200","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":134914,"src":"8703:15:200","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function EchoSystem.echo(string memory) view returns (string memory)"}},"id":135805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8719:8:200","memberName":"selector","nodeType":"MemberAccess","src":"8703:24:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_stringliteral_f15da729ec5b36e9bda8b3f71979cdac5d0f3169f8590778ac0cd82cc5cc1d4a","typeString":"literal_string \"echo(string)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":135799,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134962,"src":"8622:5:200","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8628:28:200","memberName":"registerRootFunctionSelector","nodeType":"MemberAccess","referencedDeclaration":24513,"src":"8622:34:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_string_memory_ptr_$_t_bytes4_$returns$_t_bytes4_$","typeString":"function (ResourceId,string memory,bytes4) external returns (bytes4)"}},"id":135806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8622:111:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"8591:142:200"},{"assignments":[135809],"declarations":[{"constant":false,"id":135809,"mutability":"mutable","name":"callData","nameLocation":"8752:8:200","nodeType":"VariableDeclaration","scope":135839,"src":"8739:21:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135808,"name":"bytes","nodeType":"ElementaryTypeName","src":"8739:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135815,"initialValue":{"arguments":[{"id":135812,"name":"worldFunctionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135798,"src":"8786:21:200","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"68656c6c6f","id":135813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8809:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"expression":{"id":135810,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8763:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8767:18:200","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"8763:22:200","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8763:54:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8739:78:200"},{"expression":{"arguments":[{"id":135819,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134951,"src":"8833:6:200","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135816,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"8824:2:200","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":135818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8827:5:200","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"8824:8:200","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8824:16:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135821,"nodeType":"ExpressionStatement","src":"8824:16:200"},{"assignments":[135823],"declarations":[{"constant":false,"id":135823,"mutability":"mutable","name":"returnData","nameLocation":"8859:10:200","nodeType":"VariableDeclaration","scope":135839,"src":"8846:23:200","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135822,"name":"bytes","nodeType":"ElementaryTypeName","src":"8846:5:200","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135827,"initialValue":{"arguments":[{"id":135825,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135809,"src":"8892:8:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":135824,"name":"_executeFromSystemA","nodeType":"Identifier","overloadedDeclarations":[135186,135238],"referencedDeclaration":135238,"src":"8872:19:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":135826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8872:29:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8846:55:200"},{"expression":{"arguments":[{"arguments":[{"id":135831,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135823,"src":"8927:10:200","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8940:6:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":135832,"name":"string","nodeType":"ElementaryTypeName","src":"8940:6:200","typeDescriptions":{}}}],"id":135834,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8939:8:200","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":135829,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8916:3:200","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8920:6:200","memberName":"decode","nodeType":"MemberAccess","src":"8916:10:200","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8916:32:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"68656c6c6f","id":135836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8950:7:200","typeDescriptions":{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""},"value":"hello"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","typeString":"literal_string \"hello\""}],"id":135828,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":48926,"src":"8907:8:200","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":135837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8907:51:200","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135838,"nodeType":"ExpressionStatement","src":"8907:51:200"}]},"functionSelector":"54dcf132","implemented":true,"kind":"function","modifiers":[],"name":"testNonCallRootFromNonRootWorldSelector","nameLocation":"8536:39:200","parameters":{"id":135795,"nodeType":"ParameterList","parameters":[],"src":"8575:2:200"},"returnParameters":{"id":135796,"nodeType":"ParameterList","parameters":[],"src":"8585:0:200"},"scope":135841,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":134952,"name":"Test","nameLocations":["1432:4:200"],"nodeType":"IdentifierPath","referencedDeclaration":58812,"src":"1432:4:200"},"id":134953,"nodeType":"InheritanceSpecifier","src":"1432:4:200"},{"baseName":{"id":134954,"name":"GasReporter","nameLocations":["1438:11:200"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"1438:11:200"},"id":134955,"nodeType":"InheritanceSpecifier","src":"1438:11:200"}],"canonicalName":"SystemSwitchTest","contractDependencies":[23730,35431,35451,35650,35830,36019,134945],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[135841,226,58812,49271,49268,58761,54499,54209,53445,51391,50698,49205],"name":"SystemSwitchTest","nameLocation":"1412:16:200","scope":135842,"usedErrors":[],"usedEvents":[46919,46923,46927,46931,46935,46939,46943,46947,46953,46959,46967,46975,46981,46987,46993,46999,49293,49298,49303,49310,49317,49324]}],"license":"MIT"},"id":200}