diff --git a/examples/oapp/contracts/MyOApp.sol b/examples/oapp/contracts/MyOApp.sol index 12091ba79..f52824601 100644 --- a/examples/oapp/contracts/MyOApp.sol +++ b/examples/oapp/contracts/MyOApp.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.22; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { OApp, MessagingFee, Origin } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/OApp.sol"; -import { MessagingReceipt } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/OAppSender.sol"; +import { OApp, MessagingFee, Origin } from "@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol"; +import { MessagingReceipt } from "@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol"; contract MyOApp is OApp { constructor(address _endpoint, address _delegate) OApp(_endpoint, _delegate) Ownable(_delegate) {} diff --git a/examples/oapp/package.json b/examples/oapp/package.json index fdd0c4ad8..3251c34bd 100644 --- a/examples/oapp/package.json +++ b/examples/oapp/package.json @@ -25,10 +25,10 @@ "@layerzerolabs/eslint-config-next": "~2.3.34", "@layerzerolabs/lz-definitions": "^2.3.34", "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.34", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.34", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.34", "@layerzerolabs/lz-evm-v1-0.7": "^2.3.34", "@layerzerolabs/lz-v2-utilities": "^2.3.34", + "@layerzerolabs/oapp-evm": "^0.0.2", "@layerzerolabs/prettier-config-next": "^2.3.34", "@layerzerolabs/solhint-config": "^2.3.34", "@layerzerolabs/test-devtools-evm-foundry": "~0.2.10", diff --git a/examples/oapp/test/foundry/MyOApp.t.sol b/examples/oapp/test/foundry/MyOApp.t.sol index 7bd4c3a51..fe60e68ec 100644 --- a/examples/oapp/test/foundry/MyOApp.t.sol +++ b/examples/oapp/test/foundry/MyOApp.t.sol @@ -5,8 +5,8 @@ pragma solidity ^0.8.20; import { MyOApp } from "../../contracts/MyOApp.sol"; // OApp imports -import { IOAppOptionsType3, EnforcedOptionParam } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OAppOptionsType3.sol"; -import { OptionsBuilder } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OptionsBuilder.sol"; +import { IOAppOptionsType3, EnforcedOptionParam } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol"; +import { OptionsBuilder } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol"; // OZ imports import { IERC20 } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; diff --git a/packages/oapp-evm/package.json b/packages/oapp-evm/package.json index 92c3e02d9..3a86adfb5 100644 --- a/packages/oapp-evm/package.json +++ b/packages/oapp-evm/package.json @@ -38,7 +38,6 @@ "@layerzerolabs/lz-evm-v1-0.7": "^2.3.34", "@layerzerolabs/test-devtools-evm-foundry": "~0.2.10", "@layerzerolabs/toolbox-foundry": "^0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.3.3", "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-upgradeable": "^5.0.2" }, diff --git a/packages/oft-evm/package.json b/packages/oft-evm/package.json index 97d805e6c..3d725992a 100644 --- a/packages/oft-evm/package.json +++ b/packages/oft-evm/package.json @@ -53,9 +53,9 @@ }, "peerDependencies": { "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.29", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.29", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.29", "@layerzerolabs/lz-evm-v1-0.7": "^2.3.29", + "@layerzerolabs/oapp-evm": "^0.0.2", "@openzeppelin/contracts": "^4.8.1 || ^5.0.0", "@openzeppelin/contracts-upgradeable": "^4.8.1 || ^5.0.0" }, diff --git a/packages/onft-evm/artifacts/ONFT721Base.sol/ONFT721Base.json b/packages/onft-evm/artifacts/ONFT721Base.sol/ONFT721Base.json index c580193d3..b358dbfca 100644 --- a/packages/onft-evm/artifacts/ONFT721Base.sol/ONFT721Base.json +++ b/packages/onft-evm/artifacts/ONFT721Base.sol/ONFT721Base.json @@ -1 +1,2914 @@ -{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"TREASURY_GAS_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"TREASURY_GAS_FOR_FEE_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"assertGuid","inputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"},{"name":"guid","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"decodeLzComposeOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"index","type":"uint16","internalType":"uint16"},{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeLzReceiveOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeNativeDropOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"receiver","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"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":"executorValueCap","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNextInflightPacket","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"hasPendingPackets","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"flag","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lzCompose","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_from","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_to","type":"address","internalType":"address"},{"name":"_composerMsg","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzCompose","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_composer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReceive","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"nextExecutorOption","inputs":[{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_cursor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"optionType","type":"uint8","internalType":"uint8"},{"name":"option","type":"bytes","internalType":"bytes"},{"name":"cursor","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"onfts","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerEndpoint","inputs":[{"name":"endpoint","type":"address","internalType":"contract EndpointV2Mock"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"schedulePacket","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setExecutorValueCap","inputs":[{"name":"_valueCap","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUpEndpoints","inputs":[{"name":"_endpointNum","type":"uint8","internalType":"uint8"},{"name":"_libraryType","type":"uint8","internalType":"enum TestHelperOz5.LibraryType"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setupOApps","inputs":[{"name":"_oappCreationCode","type":"bytes","internalType":"bytes"},{"name":"_startEid","type":"uint8","internalType":"uint8"},{"name":"_oappNum","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"oapps","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"sliceUintArray","inputs":[{"name":"array","type":"uint256[]","internalType":"uint256[]"},{"name":"start","type":"uint256","internalType":"uint256"},{"name":"end","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"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":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatePacket","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"},{"name":"_packetAmount","type":"uint256","internalType":"uint256"},{"name":"_composer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wireOApps","inputs":[{"name":"oapps","type":"address[]","internalType":"address[]"}],"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},{"type":"error","name":"Executor_InvalidLzComposeOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReceiveOption","inputs":[]},{"type":"error","name":"Executor_InvalidNativeDropOption","inputs":[]},{"type":"error","name":"InvalidOptionType","inputs":[{"name":"optionType","type":"uint16","internalType":"uint16"}]},{"type":"error","name":"QueueEmpty","inputs":[]},{"type":"error","name":"QueueFull","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","TREASURY_GAS_CAP()":"baead19c","TREASURY_GAS_FOR_FEE_CAP()":"b1dcf5c8","assertGuid(bytes,bytes32)":"997cff1b","decodeLzComposeOption(bytes)":"518e8ab0","decodeLzReceiveOption(bytes)":"f93e1d61","decodeNativeDropOption(bytes)":"b954fdf6","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","executorValueCap()":"2113ce62","failed()":"ba414fa6","getNextInflightPacket(uint16,bytes32)":"7982cf42","hasPendingPackets(uint16,bytes32)":"5ea0fefe","lzCompose(bytes,bytes,bytes32,address)":"a29c8984","lzCompose(uint32,address,bytes,bytes32,address,bytes)":"3bbd6a94","lzReceive(bytes,bytes)":"ec53eaa0","nextExecutorOption(bytes,uint256)":"6e1775e3","onfts(uint256)":"ac7b331a","registerEndpoint(address)":"ae6ce400","schedulePacket(bytes,bytes)":"faed6c58","setExecutorValueCap(uint128)":"defd9da6","setUp()":"0a9254e4","setUpEndpoints(uint8,uint8)":"1cc46525","setupOApps(bytes,uint8,uint8)":"2a35d250","sliceUintArray(uint256[],uint256,uint256)":"7c8bd543","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","validatePacket(bytes)":"12cc947f","verifyPackets(uint32,address)":"090852b6","verifyPackets(uint32,bytes32)":"b752b72a","verifyPackets(uint32,bytes32,uint256,address)":"5e7baa42","wireOApps(address[])":"703ca254"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Executor_InvalidLzComposeOption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Executor_InvalidLzReceiveOption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Executor_InvalidNativeDropOption\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"optionType\",\"type\":\"uint16\"}],\"name\":\"InvalidOptionType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueueEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueueFull\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"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\":[],\"name\":\"TREASURY_GAS_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TREASURY_GAS_FOR_FEE_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"packetBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"}],\"name\":\"assertGuid\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_option\",\"type\":\"bytes\"}],\"name\":\"decodeLzComposeOption\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"internalType\":\"uint128\",\"name\":\"gas\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_option\",\"type\":\"bytes\"}],\"name\":\"decodeLzReceiveOption\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"gas\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_option\",\"type\":\"bytes\"}],\"name\":\"decodeNativeDropOption\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"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\":\"executorValueCap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstEid\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"_dstAddress\",\"type\":\"bytes32\"}],\"name\":\"getNextInflightPacket\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"packetBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstEid\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"_dstAddress\",\"type\":\"bytes32\"}],\"name\":\"hasPendingPackets\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_composerMsg\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_packetBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_composer\",\"type\":\"address\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_packetBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_cursor\",\"type\":\"uint256\"}],\"name\":\"nextExecutorOption\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"optionType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"option\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"cursor\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onfts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract EndpointV2Mock\",\"name\":\"endpoint\",\"type\":\"address\"}],\"name\":\"registerEndpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_packetBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"schedulePacket\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_valueCap\",\"type\":\"uint128\"}],\"name\":\"setExecutorValueCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_endpointNum\",\"type\":\"uint8\"},{\"internalType\":\"enum TestHelperOz5.LibraryType\",\"name\":\"_libraryType\",\"type\":\"uint8\"}],\"name\":\"setUpEndpoints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_oappCreationCode\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"_startEid\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_oappNum\",\"type\":\"uint8\"}],\"name\":\"setupOApps\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"oapps\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"array\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"sliceUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"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\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"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\":[{\"internalType\":\"bytes\",\"name\":\"_packetBytes\",\"type\":\"bytes\"}],\"name\":\"validatePacket\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_dstAddress\",\"type\":\"address\"}],\"name\":\"verifyPackets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_dstAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_packetAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_composer\",\"type\":\"address\"}],\"name\":\"verifyPackets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_dstAddress\",\"type\":\"bytes32\"}],\"name\":\"verifyPackets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"oapps\",\"type\":\"address[]\"}],\"name\":\"wireOApps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"QueueEmpty()\":[{\"details\":\"An operation (e.g. {front}) couldn't be completed due to the queue being empty.\"}],\"QueueFull()\":[{\"details\":\"A push operation couldn't be completed due to the queue being full.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{\"schedulePacket(bytes,bytes)\":{\"details\":\"Adds the packet to the front of the queue and stores its options for later retrieval.\",\"params\":{\"_options\":\"The options associated with the packet, used during delivery.\",\"_packetBytes\":\"The packet data to be scheduled.\"}},\"setExecutorValueCap(uint128)\":{\"details\":\"set executorValueCap if more than 0.1 ether is necessarythis must be called prior to setUpEndpoints() if the value is to be used\",\"params\":{\"_valueCap\":\"amount executor can pass as msg.value to lzReceive()\"}},\"setUp()\":{\"details\":\"Initializes test environment setup, to be overridden by specific tests.\"},\"setUpEndpoints(uint8,uint8)\":{\"params\":{\"_endpointNum\":\"The number of endpoints to create.\",\"_libraryType\":\"The type of message library to use (UltraLightNode or SimpleMessageLib).\"}},\"setupOApps(bytes,uint8,uint8)\":{\"params\":{\"_oappCreationCode\":\"The bytecode for creating OApp contracts.\",\"_oappNum\":\"The number of OApps to set up.\",\"_startEid\":\"The starting endpoint ID for OApp setup.\"},\"returns\":{\"oapps\":\"An array of addresses for the deployed OApps.\"}},\"verifyPackets(uint32,address)\":{\"details\":\"verify packets to destination chain's OApp address.\",\"params\":{\"_dstAddress\":\"The destination address.\",\"_dstEid\":\"The destination endpoint ID.\"}},\"verifyPackets(uint32,bytes32)\":{\"details\":\"Calls an overloaded version of verifyPackets with default values for packet amount and composer address.\",\"params\":{\"_dstAddress\":\"The destination address in bytes32 format.\",\"_dstEid\":\"The destination chain's endpoint ID.\"}},\"verifyPackets(uint32,bytes32,uint256,address)\":{\"details\":\"dst UA receive/execute packetswill NOT work calling this directly with composer IF the composed payload is different from the lzReceive msg payload\"},\"wireOApps(address[])\":{\"details\":\"Sets each OApp as a peer to every other OApp in the provided array, except itself.\",\"params\":{\"oapps\":\"An array of addresses representing the deployed OApp instances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"schedulePacket(bytes,bytes)\":{\"notice\":\"Schedules a packet for delivery, storing it in the packets queue.\"},\"setUpEndpoints(uint8,uint8)\":{\"notice\":\"Sets up endpoints for testing.\"},\"setupOApps(bytes,uint8,uint8)\":{\"notice\":\"Sets up mock OApp contracts for testing.\"},\"verifyPackets(uint32,bytes32)\":{\"notice\":\"Verifies and processes packets destined for a specific chain and user address.\"},\"wireOApps(address[])\":{\"notice\":\"Configures the peers between multiple OApp instances.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/onft/onft721/ONFT721Base.sol\":\"ONFT721Base\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/libs/ONFTComposeMsgCodec.sol\":{\"keccak256\":\"0x6295798bcb8d26c4cf1ea08243e359a2ea63f2f455519f194198e4506d9b7e14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d6b7aa09488ccfa4def2d914d34970f907ea22824f0c7aa48340c2703dfd3ea\",\"dweb:/ipfs/QmWiZwfGP5W3vBDdp93vWDnfRjCqsHoBftwjTAdKmz2v7L\"]},\"contracts/onft721/ONFT721.sol\":{\"keccak256\":\"0x496aa9b8e0fb87b50deb94e2a556631c6fe378a782f87206181acfadb24d1a2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c9573fe2ac788277d2700b2742204096c1c434e4bd28bb4a7e29fee83e2cc17\",\"dweb:/ipfs/QmXRsjo8BN7daireX67655ZwCrNGAb47Ebd6YkeHaryWK1\"]},\"contracts/onft721/ONFT721Adapter.sol\":{\"keccak256\":\"0x673a4dbc59476480f5577c041106a1a04d23b7a63fab8139a7b5c4b55c2d74bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eddf9fb8ade5050f9ce147aa2e59ccd9e93e716eff91f0e479d523607bc95f0d\",\"dweb:/ipfs/QmTDV5HRbzir8tMBSYdgwLXscK9ayeuWS4e7S53NzEyJUC\"]},\"contracts/onft721/ONFT721Core.sol\":{\"keccak256\":\"0xe28bb9c335705cd2a54dbe0562b808a7a097c51b27dc1797f1c7565791d66899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7dd4ed2b1043c15df3d25405851cbcd01ec06938d0b2b6bdcaab3cbce8de7e6\",\"dweb:/ipfs/QmUDVKhrZLBM3csKep4dkfjBqzkzSxHnH45R2h5Q9a45Ab\"]},\"contracts/onft721/interfaces/IONFT721.sol\":{\"keccak256\":\"0x65efa7585fa33d3daa67519a43e026403a0946480dcbf72911fb11b5790f89cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9d3e06c8162248e53628deb8971a4d17b59b4f35f29bc77bfb56e973d33347b\",\"dweb:/ipfs/Qma7LGVsPK9Q5AbphLqbJ6nZ7A9YaCRKpxz3dzr5eQm9mg\"]},\"contracts/onft721/libs/ONFT721MsgCodec.sol\":{\"keccak256\":\"0x2d7fbd79ec71a17b021c4ec85792ee050bcfa658665aa60fa0f0cdcff16f8f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d48d5f11ad4a3fa312412cbf6357db3f60f193c16b7307392115ffef7b5fb394\",\"dweb:/ipfs/QmVMMK6np9fuRGNMJPmkFUax8SUEmkcJTf6oKS6YjWZcfb\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol\":{\"keccak256\":\"0x14899a4398251439938d6ef8a15ea8c6acdddc98a7b0066d7e63676192dea0d1\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://3998d03de7025c2c601a4fdcaf9475d12a1ef661fcf1a685ece84fdde6498cf9\",\"dweb:/ipfs/QmReknRbiGAiPqq9toKyXKo6hUKXrQPJyyS6LnTGjiDKoY\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol\":{\"keccak256\":\"0x2fdbd1b13751a264cd6e7fac518a2685b15c968806c03f1d18b177fc0526e9a9\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://600af48bb67939b5f4a3a00c76863ee290a55325ea8697f7cc4b46321ab26ef2\",\"dweb:/ipfs/QmdRigYaB6TXczjtVkvwpUEBwvvvDuymFoViMCB6xQPYUU\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol\":{\"keccak256\":\"0x400eaa11c7d50b4c25b7625290ff00937b6875ad3986b353c37a4e62b5a834b1\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://1f51eb0785d3630815a9d63de1c1331fe966df4c3f2fb6750b8da7be9e9743a4\",\"dweb:/ipfs/QmaAEf1kjhhff3AUhRiPm6ikpk2YMMrpKc2ccYzNs7waBy\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol\":{\"keccak256\":\"0x90ada11d0a330732c56b989e59c8272b70f956a5d7be2cf209d6d51a51d35a9e\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0abc7a6d07ec40a3a922256ad05bdd6eca10550d85bfd2e67147473617bb0497\",\"dweb:/ipfs/QmRDphmFhx1scRJXcusg6pUhVQvp941oCJwnHGAPdrNY4T\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol\":{\"keccak256\":\"0xa0abbbde2d91fc80929bb3214eeb57ecd11cef99c6190bf31bdb9930fa16d14a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbd50b72c788d3a0a71094d5bb81e74199b9ba66d91ff6d6cb1411966214ac2f\",\"dweb:/ipfs/QmUATu63qJouCskf3ePs67d5DbFFADuGpeENN5sZD4ZWwq\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol\":{\"keccak256\":\"0xf36091f40c969f83831fdf69f91b9ccf25237335bd2696dd18f1b721ddb794b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccd3dfafa17d068d2c7d9ae4990974833226a50ed96fc190a9bef3b77a2c9032\",\"dweb:/ipfs/QmWKNd24A4ghKCL1BCKLrna5KbpbA11vki9LNXZDBT7vV9\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol\":{\"keccak256\":\"0x3647af317ee126b1247a782abb30e59ec5ab21b4945f1d3b4370d1fa3c1bf347\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5b51cd5e7347ee869a06bd57a698f40e4a901ec7fdcb27f0ef485e4a0e1e9be4\",\"dweb:/ipfs/QmP2Nc73veRzLGdUahkjhQAiKR9ZWYiUtSGwoMB1sPXxUp\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol\":{\"keccak256\":\"0xb4df72798a64f5ea44775b526e0c417c3de0ffc661659d7b31d5b28567c6fbcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30ca5fd5e3227a7bffc51654ee3bfebdd591a131f86846ac42dea8a40c5cf1d8\",\"dweb:/ipfs/QmXNmQCF8TZAFpUxgPa1rgWt4ktsBV38A8Hax7TiYLgybW\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol\":{\"keccak256\":\"0x2aab2a3cf50e20af56d9204b1367d52a47abba0b0c7c21f304d413de1ced6345\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8b603b5e5e62c621715f8449280af240a4add8721c4ae8f5e8e491507f6e4c5\",\"dweb:/ipfs/QmUQ7Ti7CPmKnRbQFN9TLvVbeZhsi1xUjqZPTJ36dCZ6y8\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol\":{\"keccak256\":\"0xa6b61913767305227576cc6da5067de4208f09a4f58bfbfe32beafdfae9869b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7fce83bfb831f383606aee7f5ff68a330c8526bb1036f9ba0813d3e4fa8d534\",\"dweb:/ipfs/QmR7zAqJkmCgBj6sguS8t2WthY5k6FwsakgH4UY11uqD4n\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol\":{\"keccak256\":\"0xc3b7b7927472f7c1ca9703af310e9050c798afaccf399ad0f131e179b8582c8d\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://e5be13af32ff6b371985d405bc6fe8ac2faf5445bd88fda2dab4b869f66e3f89\",\"dweb:/ipfs/Qmd21k4H2tAHKrpiuHUbH87eNtHLLJzHj9ZCrMh8AKfDHh\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol\":{\"keccak256\":\"0x36c93de122bbb74ae31e3eacf567c0a3bc649ed3ebb2766c76dfa93aebcace44\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://e83bcaa80e2715e68818dd53e4dc6ad8e665b8249d69a08cf2d2635b9757fb79\",\"dweb:/ipfs/QmSKh6NgaTrTSa48gDzGGqGNAcs5jVEHgZSzZzbuJSEsxo\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol\":{\"keccak256\":\"0x6d9962ffa476ac2efb78f1415bb2f650a30eedeef2b75fdab0aeafaf3e8da6a5\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://21f32c56b67d2e770444b809c1a85a96627194c605ad317d482dfc5b6ce7e8c2\",\"dweb:/ipfs/QmP5tzoMDzTdduEcSpYHgg6WCHLQGuc1djDMFUBycJPLCU\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol\":{\"keccak256\":\"0xfdb1d04f4996c0a9d35abfbfcf10d978da638885eb77d0a9dc35cea5993074e3\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://776d58d88d13b058f236cf18c32b4b9718a021513fc4e198287f4fe18ec5aba4\",\"dweb:/ipfs/QmdNX8jJu2aXJ8Dpbt2ohfhT8RKQLuvh58sW6SAXcUTcV9\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol\":{\"keccak256\":\"0xa7fbe84ee6a646a09577f409b6c4c5ad05467e6896f9da6db91510801d6eaa4f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1038e6fd16a679b6a5e0e4171dd889465e70b867c3b084e92dbf8152490a4bc9\",\"dweb:/ipfs/QmYqhMnurtMYsaL4twHusKEAMuEHBER6ZrXcMKak6Y4GcN\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol\":{\"keccak256\":\"0x7edb42d1580a08e77d5cc48d83087f7d8c35138605456a5c82a583df3a7cbd73\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18710ab2a55c410e035aa6c10bc12e347066dfad9ee339841e3dd34cdeda5e55\",\"dweb:/ipfs/QmVaXhPWFjc3YTikbWHS4TKHkmTgZuEyorikFyyUTJh1bN\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol\":{\"keccak256\":\"0x308e77078242fd5c5746ec29c12e618249134f9e4377c0028ab8f59c07a6014b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f92cf397a8d26864ac92dfcd1b98e92a32c47f556a62c5e6dc1618734c1caa3\",\"dweb:/ipfs/QmXN3XJXEKq5djV6HeM6jrLycmJPFhMhecsYZ2TaRsQmhg\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol\":{\"keccak256\":\"0xcdf7e690e5d5c0a3ec26a0d7b1a7fe49c7d16a3634721c3944f77d13ff5d4a91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd32a05dde1b83be1ce64fcfb9495d8b9bf0c5b3a5b521ac6c214e87e32f3cdc\",\"dweb:/ipfs/QmcDKTor8EQf3cbiWYmeFb9qzUM8JGPzGGN9qJnYjP1nN7\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol\":{\"keccak256\":\"0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141\",\"dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol\":{\"keccak256\":\"0x5df07fef16b20767f7524c367d90f696c12e8ce0e4fde7aecc9d83fb2b6b0e27\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0997203f57d736e56ebb3d736550f1c7ff7950c8df0574c7abe95e22f847b850\",\"dweb:/ipfs/QmZBjkH1vaPLyN3Jx9kGfVZKuTdfVWJfJVLSPok8SpjGbT\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol\":{\"keccak256\":\"0x47f8ebeaa7d96a6f337a18c46e3c532da578c7cb0a13fb6e6f014286b991902f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d51f208b931be54e0ae1801c71c0756251d8c26f8d9b7911be1ad57b3d4a5691\",\"dweb:/ipfs/QmWqjst7jnYtSXQ9pakYHutDvENKLyqNg9nPfMxTH8p2Ed\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol\":{\"keccak256\":\"0x64330e51de72e8d38cfc0eb5527d36baada46df4bc14233d3a8ecaf98098d69a\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://49aa45e5a26fc62e7af569cf915be8344adc78dceb6871c4c14bc5d115e59241\",\"dweb:/ipfs/QmbTuW7kzPDYForDEPnaNQi6ZrmWqDxGVnHFiugnvTyq9K\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol\":{\"keccak256\":\"0x8ab8cb12c8beba699c1a7f22ffa812ac553f7038326d0c0d0af77253005cfe73\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://7c7cba4ae16d0ca46ee0a365a204f7257ceaa892224604bf7c8e65c44737e46c\",\"dweb:/ipfs/QmbQX5hJDKMwKdoo6QkdcusXQXH54SVCPe5hM1ycJZsg7y\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol\":{\"keccak256\":\"0x20d36578e810e75346daf064813b76a177087214cae77628b1f9d43798cb52d1\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://475b6f3f1ba5d981d0c5f90b9e892d4f9f539f3b12196639b95770b5be4dbf6a\",\"dweb:/ipfs/QmYyGrnR3vDt8Dqa2paQwTG9qrD6anAGFrDZmMra8KGC6s\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol\":{\"keccak256\":\"0x9616f3bd0d7293c9723f2ddf86f9f7030fbd99213c9748557eec8f6d13b25420\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://205e713f5af46f52799e51774ac74dbeee4056de6ddba3c4d78a327536426c54\",\"dweb:/ipfs/QmZ2ZqDwxdjpJbh91qwMfRhhQu4AMEsjUcsTEsdRV4NAys\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":{\"keccak256\":\"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf\",\"dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol\":{\"keccak256\":\"0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d\",\"dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol\":{\"keccak256\":\"0x35bcd6ca99c4c8d9f7d8413d1b92fb4a4d4a420ce3bf64b0fb01e68e6bcf2fa7\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0ac14f98563f9c610c936c93e71eff657efaba1e1d892be6a215aa5cb1f63a24\",\"dweb:/ipfs/QmVZZ8owwfDGLQTAzQJJqmYY4KsrChDagh5GBK7rChT5wb\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol\":{\"keccak256\":\"0x8a44524af7deb96593f6b5606e9973654a113e1687809f2e45d4a91ba89862d5\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://32dd0b5d1946e0cd5c7b728086aafac50a62c061115afb8b41254589c8a6732b\",\"dweb:/ipfs/QmR9QqtiAUPRLaRVv5wnth3NGPhdWB8rJmWYfz3o5Z1mWj\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol\":{\"keccak256\":\"0x621d6dd5b8b7e827351459fff4ac87c16ba4656757592cf67de8b199aea4cf9a\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://345aa8c007ed8b96a74260d289545713f1d7180df270d67687e3a540a61fa5c0\",\"dweb:/ipfs/QmNWCvpqSuar6UGLDVshUc7shUv3pt1J5FTf9VyZZ13wXL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol\":{\"keccak256\":\"0xb2b55968b26294139742adee6c155897c8334f4c6bf72f1940456cc84e6fbab9\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://e758a1fdcea4039b19f1252e4e2958f4a0e05517eb3e151784431533446c225f\",\"dweb:/ipfs/QmRBG345abgyUeTnSpuxdK1WbK5pvwhSmvBEgW1mnoYqTq\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol\":{\"keccak256\":\"0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f\",\"dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol\":{\"keccak256\":\"0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2\",\"dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol\":{\"keccak256\":\"0xf1f36bbbc40d03b96affa151affb47da75a1b69dc79f4b311841a072d12fdd22\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9f4f188c2998ecbda28a389ad8038da15c2260b1df6a8d135b3d96422e292fda\",\"dweb:/ipfs/QmeThR83tcaM4CmxQ2AamTafsgjcbGMfZtYcDHqw2CcwKa\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28\",\"dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075\",\"dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e\",\"dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af\",\"dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol\":{\"keccak256\":\"0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f\",\"dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82\",\"dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol\":{\"keccak256\":\"0xb0c90719820a97cdb712062c9c3372839b659c131f379f5156d521d9c57e3bd8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dfdd28f430d976f8ec7cb2c927502a33617329a03d0957a659f6a58ee1396a1c\",\"dweb:/ipfs/QmaQLDzcUKgQ6UFu7uCewBYCGDMS3RNxbuj6GbxaCk4wM9\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol\":{\"keccak256\":\"0xebcc5539a8b6ba5800810398b2f6ac0c49995440cfa98d13b96ae8bbfd71a00c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c1282b6697aad968af9b9775ef757bda8db15c5fda54d84ced8a292fc69bd262\",\"dweb:/ipfs/QmNnjKarA2L4XTe3Kv8bN5oPcQVDA4s7ETxGARwAWnQ1Ty\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol\":{\"keccak256\":\"0x4f78d60b0fd4bebb9d091db945c1908f1ab594c6332ef7e76cc6a27e36a6e2ef\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://1007be62aa5684ac636b45febfa43f69459ea25dcd1e9d944a50a7d6f05a6677\",\"dweb:/ipfs/QmTY7SB6SGbyHEiheQuE4vCjK4sTcbDuhoBL94ncX9Aoon\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol\":{\"keccak256\":\"0x88e3df882ad4e26ff793e786b237153adbda2a3a09133958b561659d5ebd4ada\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0ad6c67e125b3d80476326ce1b06b8b22147edb7bec85e3be135afae513b7590\",\"dweb:/ipfs/QmXwfH4CkqmNk8vDBPuMb1Hv1vBn58wV33XGtDpar8gAMf\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol\":{\"keccak256\":\"0xe9096c53611537a121589b56b882fc4dd797d5cac60def708f794a15e3ca98ff\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://4092d5dd582b48a5f703e4361fc5fb66050b5fe3253891175275dc832bc8e045\",\"dweb:/ipfs/QmXSTJJNx4rn2ByCaE6vxiHnkm366ZU7dScYH1JsUbVZ1V\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol\":{\"keccak256\":\"0x0cb48e8187ff6c77f35f29f9d266f756d9d544dfe6a007f3f21bd10ff6ea4f21\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://df6452cb2e39b2af3bd839ac021fa62cdea399b34c8d5fce6f50b4e7a3f6eb13\",\"dweb:/ipfs/QmNxDKoByW2NQnVNVsXGLEq9qtgJpAnk4Vt8fpqQwMG1oW\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol\":{\"keccak256\":\"0xffd919489fab736fd18ac46c917c476b1eb1f8e2190f0c5ac87d969f17d07a16\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0e30809702b1351fded69e75c13aaee1e8e161a20ad40c8176f66cc1cc737b29\",\"dweb:/ipfs/Qmcke2GWTYGcpcY9k1vgRkkGvo2BQXYmzdkVgXj3x33p1r\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol\":{\"keccak256\":\"0xc7c90e073e52af1da6c07e3d3f7477b064a89e78935c16e9872457df503c6830\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://cef1ae2d517e152616aea7f8f5c15fa1fbabbec8896a9c30a9eed35fb56b4f2f\",\"dweb:/ipfs/QmeitPMQht2WfbR9ZLzwKWgThamdsJkobeaWo6ojTCoQG5\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol\":{\"keccak256\":\"0xd8f419b25c648287b5b7f0923b069b2449c51e807c9153df39445f2f83e55f44\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://bb300a5bb62655073c7aa9cd2221e60e59ce904a0d73f7f5e06af7c9df3445ec\",\"dweb:/ipfs/QmcYb2qFevymfkWhTqGaNH5HwK9MMUixzAKJJAdNQHSCbw\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol\":{\"keccak256\":\"0x8e60b01e9bc801167b374dc119b41832d546afd43c143a0cd15ab1941198e121\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://bb1512762417dda9cd81fd9b41f590fd05888358fda1c2ab7e79e0cfabf61ec4\",\"dweb:/ipfs/QmPAgBwdjLz29vE5L1Jth1Wvx6TTM1ig97amVtAyDFF61Q\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol\":{\"keccak256\":\"0x0c5cb54ec6b18e77aa653f7d774ac9d010684dafc96794d1d02f12b6885cc348\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://24c5a8ba8d92c16ec3047229167528f57b38cbd64882140014126ca51ab14574\",\"dweb:/ipfs/QmXQsMDtZ3qNmjnr2LYgctBpPKxffuC6EeWHvFUtLBS5st\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol\":{\"keccak256\":\"0xe6c93840c612592686732dd516550816eb77d6cde92514220eacb72443dcb9b9\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://a6a00fb60b7ac66e746f0471c2262fc98febafeb8acad8785d38ce1ddc4cc991\",\"dweb:/ipfs/QmboboJskbXBbsyAGGRbW4JQCPJo9WiLFy7nwQxGVS9UhZ\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol\":{\"keccak256\":\"0x6c5bc31c117033dd35fa7ab3b13b1647a4b449c5f5b4cbff41bce8a63529ab97\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://01aa1d3f3b8e2fd4b544312d96916b16b97e01ab740e2bae1137723b2f1a31b1\",\"dweb:/ipfs/QmVMemJ4MSgi6y9NxDdSeB6QbJRtCWojJNxzs3CRLT56EA\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdChains.sol\":{\"keccak256\":\"0x598b85609125830885b8fb54a18f447d04f8dd799aca3de81baef35eb6b783c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9c128aae4f5668d8c8f71e9e6d9379d8451b8713d139cb66a02d23bc1c75f69\",\"dweb:/ipfs/QmVRihXHWi2yg9CcAhzKf63Y7m6gWz4P1giGMhXUHT3DFu\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdJson.sol\":{\"keccak256\":\"0x8f914dbd016bd0e318fe2b8bd556fbc8256c7cddc24e3e4fcb9f3c1c1935592d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19e704df493dde38323303b07d18cadfeb4dcadf1ddc2301add4aea9474fbb5e\",\"dweb:/ipfs/QmZasuGiLK8LHwWtvpqEBxUR6QFY6GdzLMTJ9q7CMf8PNZ\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Vm.sol\":{\"keccak256\":\"0x87ba9f3edc254e529db9e3129c954391adcc7fc8574203767979d8d2f1e724b9\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://4d16c08d80d9f2869deb6350642cf5af624d21fce6b3b023abbcdedc62e195fe\",\"dweb:/ipfs/QmURpnnFECPKt3i7P7jQRZpr4ZBXjRGcZ9KzcbKzsgYR2W\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/mocks/MockERC20.sol\":{\"keccak256\":\"0xd8703f49411737ecf8d411f8fa66b2bf0ef972ba28b7a4adf1748c63df1bf682\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7c10a6b8112f6fe3cdccb6240ecd382765216b1a82e9a86a0fec8f5e09eadd1\",\"dweb:/ipfs/QmdRvPCU4RkjMHsTu3Ric1ZEF1AWDNLp78unFC5aWP17xq\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/mocks/MockERC721.sol\":{\"keccak256\":\"0xa24468244abb66e663fb7eee6463cb518eb9a7c14e1071548ff564cca825bbca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://145585a2194aa6e2d30edfe709ef2814e20b1b4540469aa6a8f50c841fcb9070\",\"dweb:/ipfs/QmZrwbvtpbtTxqbW5phUrwb3F1tBiPSQc6jZJAXBfsBsAh\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc\",\"dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc\"]},\"node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02\",\"dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol\":{\"keccak256\":\"0xed6b702230a66640a0f1dd96106dd697e821b6b0fbb2eeab1c09d88d7c411a67\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://766996a7c9fb936ae08fc451c6bf6c3a9b49aca26002fb76c7fd1833fca459d8\",\"dweb:/ipfs/QmaFKhhPJCNxESLDoio7aR2KSvi4Y8YKirrb9tu4LM1vDp\"]},\"test/mocks/InspectorMock.sol\":{\"keccak256\":\"0xf2b8566a542cf017b9b4ebe9b34fb083e2b7df46b5678b3a370277d7016cb66f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://deff5a006c9de835adb7f94e2732b0fa8541273c63455a42f2fb842998d4e403\",\"dweb:/ipfs/QmTKRTgBYjnVu4CBUfTwytffWRRRBJC613XBhypgh79pN8\"]},\"test/onft/ONFTBaseTestHelper.sol\":{\"keccak256\":\"0xc391362caf12a23d771d1dd8fa5e072ae7cff39266393f7deeae6de502f5dfb8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2567c9a0dd3e4f035dacb37e784ea5b55faa5fc0a42415e060355de3a969edd6\",\"dweb:/ipfs/QmWfsj1mFmeyMq99s63We4pUsL6jRa6wB9VQmVE1FCNCGN\"]},\"test/onft/onft721/ONFT721Base.sol\":{\"keccak256\":\"0x9213f57ec1c112bede376fe220bc68afd33c7c76041b940b9d1625232a2133ba\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://851bedb87080caa3aac2f72dde10620ed0422a3aff758a575464d4f20c18fcff\",\"dweb:/ipfs/QmXaUAPghSiLFhHvPa2ccdkrCnpywudVkEb6wEJQrEs38F\"]},\"test/onft/onft721/mocks/ERC721Mock.sol\":{\"keccak256\":\"0x6b9a321f3f1e9de4bb6ec64f01264717108e77da7173a3e735d3830542a4e8fe\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3cd5b0ecd6121979c0289d8d53c24286793e43c31d337c61fdea408ec1e78135\",\"dweb:/ipfs/QmTrhHATg38ZkspBW1qz5dXcJHeHvMo42PoM3WZtq6KSGY\"]},\"test/onft/onft721/mocks/ONFT721AdapterMock.sol\":{\"keccak256\":\"0xe6a5e529274226003161bfca63fbceab6aaf10f91ef62d6f1d36cabb81da9df0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ee5020c13278a047c22e2bdd86703c2c75ce1e76530005f7e3bce82e0dbf2d3b\",\"dweb:/ipfs/QmQyfe2kn6Zbgu6vw2ss5kBjsTtBZzkFNtbD3mpf3T6Fx8\"]},\"test/onft/onft721/mocks/ONFT721Mock.sol\":{\"keccak256\":\"0xc31f9452ff2400b8279b490bdfe117aaaa27d1fcc35c1e6126a1cbc76a3be675\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc38695a66a85a73b7098513e0fd65d5bf37751f8eb4d3f49dc937f0d6815b8c\",\"dweb:/ipfs/QmV7Swzcstxv8L3n4ZFuS7YBQD4xsHwLDRqvwyoL8bFRtw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.22+commit.4fc1097e"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Executor_InvalidLzComposeOption"},{"inputs":[],"type":"error","name":"Executor_InvalidLzReceiveOption"},{"inputs":[],"type":"error","name":"Executor_InvalidNativeDropOption"},{"inputs":[{"internalType":"uint16","name":"optionType","type":"uint16"}],"type":"error","name":"InvalidOptionType"},{"inputs":[],"type":"error","name":"QueueEmpty"},{"inputs":[],"type":"error","name":"QueueFull"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"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":[],"stateMutability":"view","type":"function","name":"TREASURY_GAS_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TREASURY_GAS_FOR_FEE_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"packetBytes","type":"bytes"},{"internalType":"bytes32","name":"guid","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertGuid"},{"inputs":[{"internalType":"bytes","name":"_option","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeLzComposeOption","outputs":[{"internalType":"uint16","name":"index","type":"uint16"},{"internalType":"uint128","name":"gas","type":"uint128"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"inputs":[{"internalType":"bytes","name":"_option","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeLzReceiveOption","outputs":[{"internalType":"uint128","name":"gas","type":"uint128"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"inputs":[{"internalType":"bytes","name":"_option","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeNativeDropOption","outputs":[{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes32","name":"receiver","type":"bytes32"}]},{"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":"view","type":"function","name":"executorValueCap","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint16","name":"_dstEid","type":"uint16"},{"internalType":"bytes32","name":"_dstAddress","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getNextInflightPacket","outputs":[{"internalType":"bytes","name":"packetBytes","type":"bytes"}]},{"inputs":[{"internalType":"uint16","name":"_dstEid","type":"uint16"},{"internalType":"bytes32","name":"_dstAddress","type":"bytes32"}],"stateMutability":"view","type":"function","name":"hasPendingPackets","outputs":[{"internalType":"bool","name":"flag","type":"bool"}]},{"inputs":[{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"bytes","name":"_options","type":"bytes"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes","name":"_composerMsg","type":"bytes"}],"stateMutability":"payable","type":"function","name":"lzCompose"},{"inputs":[{"internalType":"bytes","name":"_packetBytes","type":"bytes"},{"internalType":"bytes","name":"_options","type":"bytes"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"address","name":"_composer","type":"address"}],"stateMutability":"payable","type":"function","name":"lzCompose"},{"inputs":[{"internalType":"bytes","name":"_packetBytes","type":"bytes"},{"internalType":"bytes","name":"_options","type":"bytes"}],"stateMutability":"payable","type":"function","name":"lzReceive"},{"inputs":[{"internalType":"bytes","name":"_options","type":"bytes"},{"internalType":"uint256","name":"_cursor","type":"uint256"}],"stateMutability":"pure","type":"function","name":"nextExecutorOption","outputs":[{"internalType":"uint8","name":"optionType","type":"uint8"},{"internalType":"bytes","name":"option","type":"bytes"},{"internalType":"uint256","name":"cursor","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"onfts","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract EndpointV2Mock","name":"endpoint","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerEndpoint"},{"inputs":[{"internalType":"bytes","name":"_packetBytes","type":"bytes"},{"internalType":"bytes","name":"_options","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"schedulePacket"},{"inputs":[{"internalType":"uint128","name":"_valueCap","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"setExecutorValueCap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"uint8","name":"_endpointNum","type":"uint8"},{"internalType":"enum TestHelperOz5.LibraryType","name":"_libraryType","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setUpEndpoints"},{"inputs":[{"internalType":"bytes","name":"_oappCreationCode","type":"bytes"},{"internalType":"uint8","name":"_startEid","type":"uint8"},{"internalType":"uint8","name":"_oappNum","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setupOApps","outputs":[{"internalType":"address[]","name":"oapps","type":"address[]"}]},{"inputs":[{"internalType":"uint256[]","name":"array","type":"uint256[]"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"stateMutability":"pure","type":"function","name":"sliceUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"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":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"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":[{"internalType":"bytes","name":"_packetBytes","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"validatePacket"},{"inputs":[{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"address","name":"_dstAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"verifyPackets"},{"inputs":[{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_dstAddress","type":"bytes32"},{"internalType":"uint256","name":"_packetAmount","type":"uint256"},{"internalType":"address","name":"_composer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"verifyPackets"},{"inputs":[{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_dstAddress","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"verifyPackets"},{"inputs":[{"internalType":"address[]","name":"oapps","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"wireOApps"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"schedulePacket(bytes,bytes)":{"details":"Adds the packet to the front of the queue and stores its options for later retrieval.","params":{"_options":"The options associated with the packet, used during delivery.","_packetBytes":"The packet data to be scheduled."}},"setExecutorValueCap(uint128)":{"details":"set executorValueCap if more than 0.1 ether is necessarythis must be called prior to setUpEndpoints() if the value is to be used","params":{"_valueCap":"amount executor can pass as msg.value to lzReceive()"}},"setUp()":{"details":"Initializes test environment setup, to be overridden by specific tests."},"setUpEndpoints(uint8,uint8)":{"params":{"_endpointNum":"The number of endpoints to create.","_libraryType":"The type of message library to use (UltraLightNode or SimpleMessageLib)."}},"setupOApps(bytes,uint8,uint8)":{"params":{"_oappCreationCode":"The bytecode for creating OApp contracts.","_oappNum":"The number of OApps to set up.","_startEid":"The starting endpoint ID for OApp setup."},"returns":{"oapps":"An array of addresses for the deployed OApps."}},"verifyPackets(uint32,address)":{"details":"verify packets to destination chain's OApp address.","params":{"_dstAddress":"The destination address.","_dstEid":"The destination endpoint ID."}},"verifyPackets(uint32,bytes32)":{"details":"Calls an overloaded version of verifyPackets with default values for packet amount and composer address.","params":{"_dstAddress":"The destination address in bytes32 format.","_dstEid":"The destination chain's endpoint ID."}},"verifyPackets(uint32,bytes32,uint256,address)":{"details":"dst UA receive/execute packetswill NOT work calling this directly with composer IF the composed payload is different from the lzReceive msg payload"},"wireOApps(address[])":{"details":"Sets each OApp as a peer to every other OApp in the provided array, except itself.","params":{"oapps":"An array of addresses representing the deployed OApp instances."}}},"version":1},"userdoc":{"kind":"user","methods":{"schedulePacket(bytes,bytes)":{"notice":"Schedules a packet for delivery, storing it in the packets queue."},"setUpEndpoints(uint8,uint8)":{"notice":"Sets up endpoints for testing."},"setupOApps(bytes,uint8,uint8)":{"notice":"Sets up mock OApp contracts for testing."},"verifyPackets(uint32,bytes32)":{"notice":"Verifies and processes packets destined for a specific chain and user address."},"wireOApps(address[])":{"notice":"Configures the peers between multiple OApp instances."}},"version":1}},"settings":{"remappings":["@layerzerolabs/=node_modules/@layerzerolabs/","@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/","forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/","solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/onft/onft721/ONFT721Base.sol":"ONFT721Base"},"evmVersion":"paris","libraries":{}},"sources":{"contracts/libs/ONFTComposeMsgCodec.sol":{"keccak256":"0x6295798bcb8d26c4cf1ea08243e359a2ea63f2f455519f194198e4506d9b7e14","urls":["bzz-raw://4d6b7aa09488ccfa4def2d914d34970f907ea22824f0c7aa48340c2703dfd3ea","dweb:/ipfs/QmWiZwfGP5W3vBDdp93vWDnfRjCqsHoBftwjTAdKmz2v7L"],"license":"MIT"},"contracts/onft721/ONFT721.sol":{"keccak256":"0x496aa9b8e0fb87b50deb94e2a556631c6fe378a782f87206181acfadb24d1a2e","urls":["bzz-raw://0c9573fe2ac788277d2700b2742204096c1c434e4bd28bb4a7e29fee83e2cc17","dweb:/ipfs/QmXRsjo8BN7daireX67655ZwCrNGAb47Ebd6YkeHaryWK1"],"license":"MIT"},"contracts/onft721/ONFT721Adapter.sol":{"keccak256":"0x673a4dbc59476480f5577c041106a1a04d23b7a63fab8139a7b5c4b55c2d74bb","urls":["bzz-raw://eddf9fb8ade5050f9ce147aa2e59ccd9e93e716eff91f0e479d523607bc95f0d","dweb:/ipfs/QmTDV5HRbzir8tMBSYdgwLXscK9ayeuWS4e7S53NzEyJUC"],"license":"MIT"},"contracts/onft721/ONFT721Core.sol":{"keccak256":"0xe28bb9c335705cd2a54dbe0562b808a7a097c51b27dc1797f1c7565791d66899","urls":["bzz-raw://c7dd4ed2b1043c15df3d25405851cbcd01ec06938d0b2b6bdcaab3cbce8de7e6","dweb:/ipfs/QmUDVKhrZLBM3csKep4dkfjBqzkzSxHnH45R2h5Q9a45Ab"],"license":"MIT"},"contracts/onft721/interfaces/IONFT721.sol":{"keccak256":"0x65efa7585fa33d3daa67519a43e026403a0946480dcbf72911fb11b5790f89cf","urls":["bzz-raw://c9d3e06c8162248e53628deb8971a4d17b59b4f35f29bc77bfb56e973d33347b","dweb:/ipfs/Qma7LGVsPK9Q5AbphLqbJ6nZ7A9YaCRKpxz3dzr5eQm9mg"],"license":"MIT"},"contracts/onft721/libs/ONFT721MsgCodec.sol":{"keccak256":"0x2d7fbd79ec71a17b021c4ec85792ee050bcfa658665aa60fa0f0cdcff16f8f45","urls":["bzz-raw://d48d5f11ad4a3fa312412cbf6357db3f60f193c16b7307392115ffef7b5fb394","dweb:/ipfs/QmVMMK6np9fuRGNMJPmkFUax8SUEmkcJTf6oKS6YjWZcfb"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol":{"keccak256":"0x14899a4398251439938d6ef8a15ea8c6acdddc98a7b0066d7e63676192dea0d1","urls":["bzz-raw://3998d03de7025c2c601a4fdcaf9475d12a1ef661fcf1a685ece84fdde6498cf9","dweb:/ipfs/QmReknRbiGAiPqq9toKyXKo6hUKXrQPJyyS6LnTGjiDKoY"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol":{"keccak256":"0x2fdbd1b13751a264cd6e7fac518a2685b15c968806c03f1d18b177fc0526e9a9","urls":["bzz-raw://600af48bb67939b5f4a3a00c76863ee290a55325ea8697f7cc4b46321ab26ef2","dweb:/ipfs/QmdRigYaB6TXczjtVkvwpUEBwvvvDuymFoViMCB6xQPYUU"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol":{"keccak256":"0x400eaa11c7d50b4c25b7625290ff00937b6875ad3986b353c37a4e62b5a834b1","urls":["bzz-raw://1f51eb0785d3630815a9d63de1c1331fe966df4c3f2fb6750b8da7be9e9743a4","dweb:/ipfs/QmaAEf1kjhhff3AUhRiPm6ikpk2YMMrpKc2ccYzNs7waBy"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol":{"keccak256":"0x90ada11d0a330732c56b989e59c8272b70f956a5d7be2cf209d6d51a51d35a9e","urls":["bzz-raw://0abc7a6d07ec40a3a922256ad05bdd6eca10550d85bfd2e67147473617bb0497","dweb:/ipfs/QmRDphmFhx1scRJXcusg6pUhVQvp941oCJwnHGAPdrNY4T"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol":{"keccak256":"0xa0abbbde2d91fc80929bb3214eeb57ecd11cef99c6190bf31bdb9930fa16d14a","urls":["bzz-raw://fbd50b72c788d3a0a71094d5bb81e74199b9ba66d91ff6d6cb1411966214ac2f","dweb:/ipfs/QmUATu63qJouCskf3ePs67d5DbFFADuGpeENN5sZD4ZWwq"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol":{"keccak256":"0xf36091f40c969f83831fdf69f91b9ccf25237335bd2696dd18f1b721ddb794b3","urls":["bzz-raw://ccd3dfafa17d068d2c7d9ae4990974833226a50ed96fc190a9bef3b77a2c9032","dweb:/ipfs/QmWKNd24A4ghKCL1BCKLrna5KbpbA11vki9LNXZDBT7vV9"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol":{"keccak256":"0x3647af317ee126b1247a782abb30e59ec5ab21b4945f1d3b4370d1fa3c1bf347","urls":["bzz-raw://5b51cd5e7347ee869a06bd57a698f40e4a901ec7fdcb27f0ef485e4a0e1e9be4","dweb:/ipfs/QmP2Nc73veRzLGdUahkjhQAiKR9ZWYiUtSGwoMB1sPXxUp"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol":{"keccak256":"0xb4df72798a64f5ea44775b526e0c417c3de0ffc661659d7b31d5b28567c6fbcc","urls":["bzz-raw://30ca5fd5e3227a7bffc51654ee3bfebdd591a131f86846ac42dea8a40c5cf1d8","dweb:/ipfs/QmXNmQCF8TZAFpUxgPa1rgWt4ktsBV38A8Hax7TiYLgybW"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol":{"keccak256":"0x2aab2a3cf50e20af56d9204b1367d52a47abba0b0c7c21f304d413de1ced6345","urls":["bzz-raw://f8b603b5e5e62c621715f8449280af240a4add8721c4ae8f5e8e491507f6e4c5","dweb:/ipfs/QmUQ7Ti7CPmKnRbQFN9TLvVbeZhsi1xUjqZPTJ36dCZ6y8"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol":{"keccak256":"0xa6b61913767305227576cc6da5067de4208f09a4f58bfbfe32beafdfae9869b1","urls":["bzz-raw://b7fce83bfb831f383606aee7f5ff68a330c8526bb1036f9ba0813d3e4fa8d534","dweb:/ipfs/QmR7zAqJkmCgBj6sguS8t2WthY5k6FwsakgH4UY11uqD4n"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol":{"keccak256":"0xc3b7b7927472f7c1ca9703af310e9050c798afaccf399ad0f131e179b8582c8d","urls":["bzz-raw://e5be13af32ff6b371985d405bc6fe8ac2faf5445bd88fda2dab4b869f66e3f89","dweb:/ipfs/Qmd21k4H2tAHKrpiuHUbH87eNtHLLJzHj9ZCrMh8AKfDHh"],"license":"MIT OR Apache-2.0"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol":{"keccak256":"0x36c93de122bbb74ae31e3eacf567c0a3bc649ed3ebb2766c76dfa93aebcace44","urls":["bzz-raw://e83bcaa80e2715e68818dd53e4dc6ad8e665b8249d69a08cf2d2635b9757fb79","dweb:/ipfs/QmSKh6NgaTrTSa48gDzGGqGNAcs5jVEHgZSzZzbuJSEsxo"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol":{"keccak256":"0x6d9962ffa476ac2efb78f1415bb2f650a30eedeef2b75fdab0aeafaf3e8da6a5","urls":["bzz-raw://21f32c56b67d2e770444b809c1a85a96627194c605ad317d482dfc5b6ce7e8c2","dweb:/ipfs/QmP5tzoMDzTdduEcSpYHgg6WCHLQGuc1djDMFUBycJPLCU"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol":{"keccak256":"0xfdb1d04f4996c0a9d35abfbfcf10d978da638885eb77d0a9dc35cea5993074e3","urls":["bzz-raw://776d58d88d13b058f236cf18c32b4b9718a021513fc4e198287f4fe18ec5aba4","dweb:/ipfs/QmdNX8jJu2aXJ8Dpbt2ohfhT8RKQLuvh58sW6SAXcUTcV9"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol":{"keccak256":"0xa7fbe84ee6a646a09577f409b6c4c5ad05467e6896f9da6db91510801d6eaa4f","urls":["bzz-raw://1038e6fd16a679b6a5e0e4171dd889465e70b867c3b084e92dbf8152490a4bc9","dweb:/ipfs/QmYqhMnurtMYsaL4twHusKEAMuEHBER6ZrXcMKak6Y4GcN"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol":{"keccak256":"0x7edb42d1580a08e77d5cc48d83087f7d8c35138605456a5c82a583df3a7cbd73","urls":["bzz-raw://18710ab2a55c410e035aa6c10bc12e347066dfad9ee339841e3dd34cdeda5e55","dweb:/ipfs/QmVaXhPWFjc3YTikbWHS4TKHkmTgZuEyorikFyyUTJh1bN"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol":{"keccak256":"0x308e77078242fd5c5746ec29c12e618249134f9e4377c0028ab8f59c07a6014b","urls":["bzz-raw://2f92cf397a8d26864ac92dfcd1b98e92a32c47f556a62c5e6dc1618734c1caa3","dweb:/ipfs/QmXN3XJXEKq5djV6HeM6jrLycmJPFhMhecsYZ2TaRsQmhg"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol":{"keccak256":"0xcdf7e690e5d5c0a3ec26a0d7b1a7fe49c7d16a3634721c3944f77d13ff5d4a91","urls":["bzz-raw://bd32a05dde1b83be1ce64fcfb9495d8b9bf0c5b3a5b521ac6c214e87e32f3cdc","dweb:/ipfs/QmcDKTor8EQf3cbiWYmeFb9qzUM8JGPzGGN9qJnYjP1nN7"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol":{"keccak256":"0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35","urls":["bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141","dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol":{"keccak256":"0x5df07fef16b20767f7524c367d90f696c12e8ce0e4fde7aecc9d83fb2b6b0e27","urls":["bzz-raw://0997203f57d736e56ebb3d736550f1c7ff7950c8df0574c7abe95e22f847b850","dweb:/ipfs/QmZBjkH1vaPLyN3Jx9kGfVZKuTdfVWJfJVLSPok8SpjGbT"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol":{"keccak256":"0x47f8ebeaa7d96a6f337a18c46e3c532da578c7cb0a13fb6e6f014286b991902f","urls":["bzz-raw://d51f208b931be54e0ae1801c71c0756251d8c26f8d9b7911be1ad57b3d4a5691","dweb:/ipfs/QmWqjst7jnYtSXQ9pakYHutDvENKLyqNg9nPfMxTH8p2Ed"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol":{"keccak256":"0x64330e51de72e8d38cfc0eb5527d36baada46df4bc14233d3a8ecaf98098d69a","urls":["bzz-raw://49aa45e5a26fc62e7af569cf915be8344adc78dceb6871c4c14bc5d115e59241","dweb:/ipfs/QmbTuW7kzPDYForDEPnaNQi6ZrmWqDxGVnHFiugnvTyq9K"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol":{"keccak256":"0x8ab8cb12c8beba699c1a7f22ffa812ac553f7038326d0c0d0af77253005cfe73","urls":["bzz-raw://7c7cba4ae16d0ca46ee0a365a204f7257ceaa892224604bf7c8e65c44737e46c","dweb:/ipfs/QmbQX5hJDKMwKdoo6QkdcusXQXH54SVCPe5hM1ycJZsg7y"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol":{"keccak256":"0x20d36578e810e75346daf064813b76a177087214cae77628b1f9d43798cb52d1","urls":["bzz-raw://475b6f3f1ba5d981d0c5f90b9e892d4f9f539f3b12196639b95770b5be4dbf6a","dweb:/ipfs/QmYyGrnR3vDt8Dqa2paQwTG9qrD6anAGFrDZmMra8KGC6s"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol":{"keccak256":"0x9616f3bd0d7293c9723f2ddf86f9f7030fbd99213c9748557eec8f6d13b25420","urls":["bzz-raw://205e713f5af46f52799e51774ac74dbeee4056de6ddba3c4d78a327536426c54","dweb:/ipfs/QmZ2ZqDwxdjpJbh91qwMfRhhQu4AMEsjUcsTEsdRV4NAys"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol":{"keccak256":"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49","urls":["bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf","dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"keccak256":"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3","urls":["bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083","dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"keccak256":"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0","urls":["bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933","dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol":{"keccak256":"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c","urls":["bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0","dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"keccak256":"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc","urls":["bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b","dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"keccak256":"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972","urls":["bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927","dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"keccak256":"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901","urls":["bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d","dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"keccak256":"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e","urls":["bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6","dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol":{"keccak256":"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625","urls":["bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97","dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol":{"keccak256":"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb","urls":["bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1","dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol":{"keccak256":"0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875","urls":["bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d","dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol":{"keccak256":"0x35bcd6ca99c4c8d9f7d8413d1b92fb4a4d4a420ce3bf64b0fb01e68e6bcf2fa7","urls":["bzz-raw://0ac14f98563f9c610c936c93e71eff657efaba1e1d892be6a215aa5cb1f63a24","dweb:/ipfs/QmVZZ8owwfDGLQTAzQJJqmYY4KsrChDagh5GBK7rChT5wb"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol":{"keccak256":"0x8a44524af7deb96593f6b5606e9973654a113e1687809f2e45d4a91ba89862d5","urls":["bzz-raw://32dd0b5d1946e0cd5c7b728086aafac50a62c061115afb8b41254589c8a6732b","dweb:/ipfs/QmR9QqtiAUPRLaRVv5wnth3NGPhdWB8rJmWYfz3o5Z1mWj"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol":{"keccak256":"0x621d6dd5b8b7e827351459fff4ac87c16ba4656757592cf67de8b199aea4cf9a","urls":["bzz-raw://345aa8c007ed8b96a74260d289545713f1d7180df270d67687e3a540a61fa5c0","dweb:/ipfs/QmNWCvpqSuar6UGLDVshUc7shUv3pt1J5FTf9VyZZ13wXL"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol":{"keccak256":"0xb2b55968b26294139742adee6c155897c8334f4c6bf72f1940456cc84e6fbab9","urls":["bzz-raw://e758a1fdcea4039b19f1252e4e2958f4a0e05517eb3e151784431533446c225f","dweb:/ipfs/QmRBG345abgyUeTnSpuxdK1WbK5pvwhSmvBEgW1mnoYqTq"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol":{"keccak256":"0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9","urls":["bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f","dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol":{"keccak256":"0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28","urls":["bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2","dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol":{"keccak256":"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680","urls":["bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09","dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol":{"keccak256":"0xf1f36bbbc40d03b96affa151affb47da75a1b69dc79f4b311841a072d12fdd22","urls":["bzz-raw://9f4f188c2998ecbda28a389ad8038da15c2260b1df6a8d135b3d96422e292fda","dweb:/ipfs/QmeThR83tcaM4CmxQ2AamTafsgjcbGMfZtYcDHqw2CcwKa"],"license":"BUSL-1.1"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol":{"keccak256":"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5","urls":["bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28","dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"keccak256":"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc","urls":["bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0","dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol":{"keccak256":"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b","urls":["bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075","dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"keccak256":"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20","urls":["bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2","dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"keccak256":"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58","urls":["bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd","dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol":{"keccak256":"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c","urls":["bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e","dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol":{"keccak256":"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461","urls":["bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc","dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol":{"keccak256":"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d","urls":["bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2","dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol":{"keccak256":"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01","urls":["bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af","dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol":{"keccak256":"0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378","urls":["bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f","dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol":{"keccak256":"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750","urls":["bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82","dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol":{"keccak256":"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2","urls":["bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a","dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol":{"keccak256":"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84","urls":["bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e","dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol":{"keccak256":"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6","urls":["bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc","dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4"],"license":"MIT"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol":{"keccak256":"0xb0c90719820a97cdb712062c9c3372839b659c131f379f5156d521d9c57e3bd8","urls":["bzz-raw://dfdd28f430d976f8ec7cb2c927502a33617329a03d0957a659f6a58ee1396a1c","dweb:/ipfs/QmaQLDzcUKgQ6UFu7uCewBYCGDMS3RNxbuj6GbxaCk4wM9"],"license":"UNLICENSED"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol":{"keccak256":"0xebcc5539a8b6ba5800810398b2f6ac0c49995440cfa98d13b96ae8bbfd71a00c","urls":["bzz-raw://c1282b6697aad968af9b9775ef757bda8db15c5fda54d84ced8a292fc69bd262","dweb:/ipfs/QmNnjKarA2L4XTe3Kv8bN5oPcQVDA4s7ETxGARwAWnQ1Ty"],"license":"UNLICENSED"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol":{"keccak256":"0x4f78d60b0fd4bebb9d091db945c1908f1ab594c6332ef7e76cc6a27e36a6e2ef","urls":["bzz-raw://1007be62aa5684ac636b45febfa43f69459ea25dcd1e9d944a50a7d6f05a6677","dweb:/ipfs/QmTY7SB6SGbyHEiheQuE4vCjK4sTcbDuhoBL94ncX9Aoon"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol":{"keccak256":"0x88e3df882ad4e26ff793e786b237153adbda2a3a09133958b561659d5ebd4ada","urls":["bzz-raw://0ad6c67e125b3d80476326ce1b06b8b22147edb7bec85e3be135afae513b7590","dweb:/ipfs/QmXwfH4CkqmNk8vDBPuMb1Hv1vBn58wV33XGtDpar8gAMf"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol":{"keccak256":"0xe9096c53611537a121589b56b882fc4dd797d5cac60def708f794a15e3ca98ff","urls":["bzz-raw://4092d5dd582b48a5f703e4361fc5fb66050b5fe3253891175275dc832bc8e045","dweb:/ipfs/QmXSTJJNx4rn2ByCaE6vxiHnkm366ZU7dScYH1JsUbVZ1V"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol":{"keccak256":"0x0cb48e8187ff6c77f35f29f9d266f756d9d544dfe6a007f3f21bd10ff6ea4f21","urls":["bzz-raw://df6452cb2e39b2af3bd839ac021fa62cdea399b34c8d5fce6f50b4e7a3f6eb13","dweb:/ipfs/QmNxDKoByW2NQnVNVsXGLEq9qtgJpAnk4Vt8fpqQwMG1oW"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol":{"keccak256":"0xffd919489fab736fd18ac46c917c476b1eb1f8e2190f0c5ac87d969f17d07a16","urls":["bzz-raw://0e30809702b1351fded69e75c13aaee1e8e161a20ad40c8176f66cc1cc737b29","dweb:/ipfs/Qmcke2GWTYGcpcY9k1vgRkkGvo2BQXYmzdkVgXj3x33p1r"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol":{"keccak256":"0xc7c90e073e52af1da6c07e3d3f7477b064a89e78935c16e9872457df503c6830","urls":["bzz-raw://cef1ae2d517e152616aea7f8f5c15fa1fbabbec8896a9c30a9eed35fb56b4f2f","dweb:/ipfs/QmeitPMQht2WfbR9ZLzwKWgThamdsJkobeaWo6ojTCoQG5"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol":{"keccak256":"0xd8f419b25c648287b5b7f0923b069b2449c51e807c9153df39445f2f83e55f44","urls":["bzz-raw://bb300a5bb62655073c7aa9cd2221e60e59ce904a0d73f7f5e06af7c9df3445ec","dweb:/ipfs/QmcYb2qFevymfkWhTqGaNH5HwK9MMUixzAKJJAdNQHSCbw"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol":{"keccak256":"0x8e60b01e9bc801167b374dc119b41832d546afd43c143a0cd15ab1941198e121","urls":["bzz-raw://bb1512762417dda9cd81fd9b41f590fd05888358fda1c2ab7e79e0cfabf61ec4","dweb:/ipfs/QmPAgBwdjLz29vE5L1Jth1Wvx6TTM1ig97amVtAyDFF61Q"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol":{"keccak256":"0x0c5cb54ec6b18e77aa653f7d774ac9d010684dafc96794d1d02f12b6885cc348","urls":["bzz-raw://24c5a8ba8d92c16ec3047229167528f57b38cbd64882140014126ca51ab14574","dweb:/ipfs/QmXQsMDtZ3qNmjnr2LYgctBpPKxffuC6EeWHvFUtLBS5st"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol":{"keccak256":"0xe6c93840c612592686732dd516550816eb77d6cde92514220eacb72443dcb9b9","urls":["bzz-raw://a6a00fb60b7ac66e746f0471c2262fc98febafeb8acad8785d38ce1ddc4cc991","dweb:/ipfs/QmboboJskbXBbsyAGGRbW4JQCPJo9WiLFy7nwQxGVS9UhZ"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol":{"keccak256":"0x6c5bc31c117033dd35fa7ab3b13b1647a4b449c5f5b4cbff41bce8a63529ab97","urls":["bzz-raw://01aa1d3f3b8e2fd4b544312d96916b16b97e01ab740e2bae1137723b2f1a31b1","dweb:/ipfs/QmVMemJ4MSgi6y9NxDdSeB6QbJRtCWojJNxzs3CRLT56EA"],"license":"LZBL-1.2"},"node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdChains.sol":{"keccak256":"0x598b85609125830885b8fb54a18f447d04f8dd799aca3de81baef35eb6b783c0","urls":["bzz-raw://c9c128aae4f5668d8c8f71e9e6d9379d8451b8713d139cb66a02d23bc1c75f69","dweb:/ipfs/QmVRihXHWi2yg9CcAhzKf63Y7m6gWz4P1giGMhXUHT3DFu"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdJson.sol":{"keccak256":"0x8f914dbd016bd0e318fe2b8bd556fbc8256c7cddc24e3e4fcb9f3c1c1935592d","urls":["bzz-raw://19e704df493dde38323303b07d18cadfeb4dcadf1ddc2301add4aea9474fbb5e","dweb:/ipfs/QmZasuGiLK8LHwWtvpqEBxUR6QFY6GdzLMTJ9q7CMf8PNZ"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Test.sol":{"keccak256":"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0","urls":["bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765","dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Vm.sol":{"keccak256":"0x87ba9f3edc254e529db9e3129c954391adcc7fc8574203767979d8d2f1e724b9","urls":["bzz-raw://4d16c08d80d9f2869deb6350642cf5af624d21fce6b3b023abbcdedc62e195fe","dweb:/ipfs/QmURpnnFECPKt3i7P7jQRZpr4ZBXjRGcZ9KzcbKzsgYR2W"],"license":"MIT OR Apache-2.0"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/mocks/MockERC20.sol":{"keccak256":"0xd8703f49411737ecf8d411f8fa66b2bf0ef972ba28b7a4adf1748c63df1bf682","urls":["bzz-raw://b7c10a6b8112f6fe3cdccb6240ecd382765216b1a82e9a86a0fec8f5e09eadd1","dweb:/ipfs/QmdRvPCU4RkjMHsTu3Ric1ZEF1AWDNLp78unFC5aWP17xq"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/mocks/MockERC721.sol":{"keccak256":"0xa24468244abb66e663fb7eee6463cb518eb9a7c14e1071548ff564cca825bbca","urls":["bzz-raw://145585a2194aa6e2d30edfe709ef2814e20b1b4540469aa6a8f50c841fcb9070","dweb:/ipfs/QmZrwbvtpbtTxqbW5phUrwb3F1tBiPSQc6jZJAXBfsBsAh"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol":{"keccak256":"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a","urls":["bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535","dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq"],"license":"Unlicense"},"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Pausable.sol":{"keccak256":"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd","urls":["bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc","dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236","urls":["bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02","dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe","urls":["bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c","dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol":{"keccak256":"0xed6b702230a66640a0f1dd96106dd697e821b6b0fbb2eeab1c09d88d7c411a67","urls":["bzz-raw://766996a7c9fb936ae08fc451c6bf6c3a9b49aca26002fb76c7fd1833fca459d8","dweb:/ipfs/QmaFKhhPJCNxESLDoio7aR2KSvi4Y8YKirrb9tu4LM1vDp"],"license":"MIT"},"test/mocks/InspectorMock.sol":{"keccak256":"0xf2b8566a542cf017b9b4ebe9b34fb083e2b7df46b5678b3a370277d7016cb66f","urls":["bzz-raw://deff5a006c9de835adb7f94e2732b0fa8541273c63455a42f2fb842998d4e403","dweb:/ipfs/QmTKRTgBYjnVu4CBUfTwytffWRRRBJC613XBhypgh79pN8"],"license":"UNLICENSED"},"test/onft/ONFTBaseTestHelper.sol":{"keccak256":"0xc391362caf12a23d771d1dd8fa5e072ae7cff39266393f7deeae6de502f5dfb8","urls":["bzz-raw://2567c9a0dd3e4f035dacb37e784ea5b55faa5fc0a42415e060355de3a969edd6","dweb:/ipfs/QmWfsj1mFmeyMq99s63We4pUsL6jRa6wB9VQmVE1FCNCGN"],"license":"UNLICENSED"},"test/onft/onft721/ONFT721Base.sol":{"keccak256":"0x9213f57ec1c112bede376fe220bc68afd33c7c76041b940b9d1625232a2133ba","urls":["bzz-raw://851bedb87080caa3aac2f72dde10620ed0422a3aff758a575464d4f20c18fcff","dweb:/ipfs/QmXaUAPghSiLFhHvPa2ccdkrCnpywudVkEb6wEJQrEs38F"],"license":"UNLICENSED"},"test/onft/onft721/mocks/ERC721Mock.sol":{"keccak256":"0x6b9a321f3f1e9de4bb6ec64f01264717108e77da7173a3e735d3830542a4e8fe","urls":["bzz-raw://3cd5b0ecd6121979c0289d8d53c24286793e43c31d337c61fdea408ec1e78135","dweb:/ipfs/QmTrhHATg38ZkspBW1qz5dXcJHeHvMo42PoM3WZtq6KSGY"],"license":"UNLICENSED"},"test/onft/onft721/mocks/ONFT721AdapterMock.sol":{"keccak256":"0xe6a5e529274226003161bfca63fbceab6aaf10f91ef62d6f1d36cabb81da9df0","urls":["bzz-raw://ee5020c13278a047c22e2bdd86703c2c75ce1e76530005f7e3bce82e0dbf2d3b","dweb:/ipfs/QmQyfe2kn6Zbgu6vw2ss5kBjsTtBZzkFNtbD3mpf3T6Fx8"],"license":"UNLICENSED"},"test/onft/onft721/mocks/ONFT721Mock.sol":{"keccak256":"0xc31f9452ff2400b8279b490bdfe117aaaa27d1fcc35c1e6126a1cbc76a3be675","urls":["bzz-raw://dc38695a66a85a73b7098513e0fd65d5bf37751f8eb4d3f49dc937f0d6815b8c","dweb:/ipfs/QmV7Swzcstxv8L3n4ZFuS7YBQD4xsHwLDRqvwyoL8bFRtw"],"license":"UNLICENSED"}},"version":1},"id":126} \ No newline at end of file +{ + "abi": [ + { "type": "receive", "stateMutability": "payable" }, + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TREASURY_GAS_CAP", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TREASURY_GAS_FOR_FEE_CAP", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "assertGuid", + "inputs": [ + { "name": "packetBytes", "type": "bytes", "internalType": "bytes" }, + { "name": "guid", "type": "bytes32", "internalType": "bytes32" } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "decodeLzComposeOption", + "inputs": [ + { "name": "_option", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [ + { "name": "index", "type": "uint16", "internalType": "uint16" }, + { "name": "gas", "type": "uint128", "internalType": "uint128" }, + { "name": "value", "type": "uint128", "internalType": "uint128" } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "decodeLzReceiveOption", + "inputs": [ + { "name": "_option", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [ + { "name": "gas", "type": "uint128", "internalType": "uint128" }, + { "name": "value", "type": "uint128", "internalType": "uint128" } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "decodeNativeDropOption", + "inputs": [ + { "name": "_option", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [ + { "name": "amount", "type": "uint128", "internalType": "uint128" }, + { "name": "receiver", "type": "bytes32", "internalType": "bytes32" } + ], + "stateMutability": "pure" + }, + { + "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": "executorValueCap", + "inputs": [], + "outputs": [{ "name": "", "type": "uint128", "internalType": "uint128" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getNextInflightPacket", + "inputs": [ + { "name": "_dstEid", "type": "uint16", "internalType": "uint16" }, + { "name": "_dstAddress", "type": "bytes32", "internalType": "bytes32" } + ], + "outputs": [ + { "name": "packetBytes", "type": "bytes", "internalType": "bytes" } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "hasPendingPackets", + "inputs": [ + { "name": "_dstEid", "type": "uint16", "internalType": "uint16" }, + { "name": "_dstAddress", "type": "bytes32", "internalType": "bytes32" } + ], + "outputs": [{ "name": "flag", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "lzCompose", + "inputs": [ + { "name": "_dstEid", "type": "uint32", "internalType": "uint32" }, + { "name": "_from", "type": "address", "internalType": "address" }, + { "name": "_options", "type": "bytes", "internalType": "bytes" }, + { "name": "_guid", "type": "bytes32", "internalType": "bytes32" }, + { "name": "_to", "type": "address", "internalType": "address" }, + { "name": "_composerMsg", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "lzCompose", + "inputs": [ + { "name": "_packetBytes", "type": "bytes", "internalType": "bytes" }, + { "name": "_options", "type": "bytes", "internalType": "bytes" }, + { "name": "_guid", "type": "bytes32", "internalType": "bytes32" }, + { "name": "_composer", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "lzReceive", + "inputs": [ + { "name": "_packetBytes", "type": "bytes", "internalType": "bytes" }, + { "name": "_options", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "nextExecutorOption", + "inputs": [ + { "name": "_options", "type": "bytes", "internalType": "bytes" }, + { "name": "_cursor", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [ + { "name": "optionType", "type": "uint8", "internalType": "uint8" }, + { "name": "option", "type": "bytes", "internalType": "bytes" }, + { "name": "cursor", "type": "uint256", "internalType": "uint256" } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "onfts", + "inputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerEndpoint", + "inputs": [ + { + "name": "endpoint", + "type": "address", + "internalType": "contract EndpointV2Mock" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "schedulePacket", + "inputs": [ + { "name": "_packetBytes", "type": "bytes", "internalType": "bytes" }, + { "name": "_options", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setExecutorValueCap", + "inputs": [ + { "name": "_valueCap", "type": "uint128", "internalType": "uint128" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUpEndpoints", + "inputs": [ + { "name": "_endpointNum", "type": "uint8", "internalType": "uint8" }, + { + "name": "_libraryType", + "type": "uint8", + "internalType": "enum TestHelperOz5.LibraryType" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setupOApps", + "inputs": [ + { + "name": "_oappCreationCode", + "type": "bytes", + "internalType": "bytes" + }, + { "name": "_startEid", "type": "uint8", "internalType": "uint8" }, + { "name": "_oappNum", "type": "uint8", "internalType": "uint8" } + ], + "outputs": [ + { "name": "oapps", "type": "address[]", "internalType": "address[]" } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "sliceUintArray", + "inputs": [ + { "name": "array", "type": "uint256[]", "internalType": "uint256[]" }, + { "name": "start", "type": "uint256", "internalType": "uint256" }, + { "name": "end", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [ + { "name": "", "type": "uint256[]", "internalType": "uint256[]" } + ], + "stateMutability": "pure" + }, + { + "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": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { "name": "addr", "type": "address", "internalType": "address" }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { "name": "addr", "type": "address", "internalType": "address" }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatePacket", + "inputs": [ + { "name": "_packetBytes", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyPackets", + "inputs": [ + { "name": "_dstEid", "type": "uint32", "internalType": "uint32" }, + { "name": "_dstAddress", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyPackets", + "inputs": [ + { "name": "_dstEid", "type": "uint32", "internalType": "uint32" }, + { "name": "_dstAddress", "type": "bytes32", "internalType": "bytes32" }, + { + "name": "_packetAmount", + "type": "uint256", + "internalType": "uint256" + }, + { "name": "_composer", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyPackets", + "inputs": [ + { "name": "_dstEid", "type": "uint32", "internalType": "uint32" }, + { "name": "_dstAddress", "type": "bytes32", "internalType": "bytes32" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "wireOApps", + "inputs": [ + { "name": "oapps", "type": "address[]", "internalType": "address[]" } + ], + "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 + }, + { + "type": "error", + "name": "Executor_InvalidLzComposeOption", + "inputs": [] + }, + { + "type": "error", + "name": "Executor_InvalidLzReceiveOption", + "inputs": [] + }, + { + "type": "error", + "name": "Executor_InvalidNativeDropOption", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidOptionType", + "inputs": [ + { "name": "optionType", "type": "uint16", "internalType": "uint16" } + ] + }, + { "type": "error", "name": "QueueEmpty", "inputs": [] }, + { "type": "error", "name": "QueueFull", "inputs": [] }, + { + "type": "error", + "name": "SafeCastOverflowedUintDowncast", + "inputs": [ + { "name": "bits", "type": "uint8", "internalType": "uint8" }, + { "name": "value", "type": "uint256", "internalType": "uint256" } + ] + } + ], + "bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, + "deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, + "methodIdentifiers": { + "IS_TEST()": "fa7626d4", + "TREASURY_GAS_CAP()": "baead19c", + "TREASURY_GAS_FOR_FEE_CAP()": "b1dcf5c8", + "assertGuid(bytes,bytes32)": "997cff1b", + "decodeLzComposeOption(bytes)": "518e8ab0", + "decodeLzReceiveOption(bytes)": "f93e1d61", + "decodeNativeDropOption(bytes)": "b954fdf6", + "excludeArtifacts()": "b5508aa9", + "excludeContracts()": "e20c9f71", + "excludeSenders()": "1ed7831c", + "executorValueCap()": "2113ce62", + "failed()": "ba414fa6", + "getNextInflightPacket(uint16,bytes32)": "7982cf42", + "hasPendingPackets(uint16,bytes32)": "5ea0fefe", + "lzCompose(bytes,bytes,bytes32,address)": "a29c8984", + "lzCompose(uint32,address,bytes,bytes32,address,bytes)": "3bbd6a94", + "lzReceive(bytes,bytes)": "ec53eaa0", + "nextExecutorOption(bytes,uint256)": "6e1775e3", + "onfts(uint256)": "ac7b331a", + "registerEndpoint(address)": "ae6ce400", + "schedulePacket(bytes,bytes)": "faed6c58", + "setExecutorValueCap(uint128)": "defd9da6", + "setUp()": "0a9254e4", + "setUpEndpoints(uint8,uint8)": "1cc46525", + "setupOApps(bytes,uint8,uint8)": "2a35d250", + "sliceUintArray(uint256[],uint256,uint256)": "7c8bd543", + "targetArtifactSelectors()": "66d9a9a0", + "targetArtifacts()": "85226c81", + "targetContracts()": "3f7286f4", + "targetInterfaces()": "2ade3880", + "targetSelectors()": "916a17c6", + "targetSenders()": "3e5e3c23", + "validatePacket(bytes)": "12cc947f", + "verifyPackets(uint32,address)": "090852b6", + "verifyPackets(uint32,bytes32)": "b752b72a", + "verifyPackets(uint32,bytes32,uint256,address)": "5e7baa42", + "wireOApps(address[])": "703ca254" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Executor_InvalidLzComposeOption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Executor_InvalidLzReceiveOption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Executor_InvalidNativeDropOption\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"optionType\",\"type\":\"uint16\"}],\"name\":\"InvalidOptionType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueueEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueueFull\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"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\":[],\"name\":\"TREASURY_GAS_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TREASURY_GAS_FOR_FEE_CAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"packetBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"}],\"name\":\"assertGuid\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_option\",\"type\":\"bytes\"}],\"name\":\"decodeLzComposeOption\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"internalType\":\"uint128\",\"name\":\"gas\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_option\",\"type\":\"bytes\"}],\"name\":\"decodeLzReceiveOption\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"gas\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_option\",\"type\":\"bytes\"}],\"name\":\"decodeNativeDropOption\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"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\":\"executorValueCap\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstEid\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"_dstAddress\",\"type\":\"bytes32\"}],\"name\":\"getNextInflightPacket\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"packetBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_dstEid\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"_dstAddress\",\"type\":\"bytes32\"}],\"name\":\"hasPendingPackets\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_composerMsg\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_packetBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_composer\",\"type\":\"address\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_packetBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_cursor\",\"type\":\"uint256\"}],\"name\":\"nextExecutorOption\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"optionType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"option\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"cursor\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onfts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract EndpointV2Mock\",\"name\":\"endpoint\",\"type\":\"address\"}],\"name\":\"registerEndpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_packetBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"schedulePacket\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_valueCap\",\"type\":\"uint128\"}],\"name\":\"setExecutorValueCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_endpointNum\",\"type\":\"uint8\"},{\"internalType\":\"enum TestHelperOz5.LibraryType\",\"name\":\"_libraryType\",\"type\":\"uint8\"}],\"name\":\"setUpEndpoints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_oappCreationCode\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"_startEid\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_oappNum\",\"type\":\"uint8\"}],\"name\":\"setupOApps\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"oapps\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"array\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"sliceUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"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\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"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\":[{\"internalType\":\"bytes\",\"name\":\"_packetBytes\",\"type\":\"bytes\"}],\"name\":\"validatePacket\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_dstAddress\",\"type\":\"address\"}],\"name\":\"verifyPackets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_dstAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_packetAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_composer\",\"type\":\"address\"}],\"name\":\"verifyPackets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_dstAddress\",\"type\":\"bytes32\"}],\"name\":\"verifyPackets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"oapps\",\"type\":\"address[]\"}],\"name\":\"wireOApps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"QueueEmpty()\":[{\"details\":\"An operation (e.g. {front}) couldn't be completed due to the queue being empty.\"}],\"QueueFull()\":[{\"details\":\"A push operation couldn't be completed due to the queue being full.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{\"schedulePacket(bytes,bytes)\":{\"details\":\"Adds the packet to the front of the queue and stores its options for later retrieval.\",\"params\":{\"_options\":\"The options associated with the packet, used during delivery.\",\"_packetBytes\":\"The packet data to be scheduled.\"}},\"setExecutorValueCap(uint128)\":{\"details\":\"set executorValueCap if more than 0.1 ether is necessarythis must be called prior to setUpEndpoints() if the value is to be used\",\"params\":{\"_valueCap\":\"amount executor can pass as msg.value to lzReceive()\"}},\"setUp()\":{\"details\":\"Initializes test environment setup, to be overridden by specific tests.\"},\"setUpEndpoints(uint8,uint8)\":{\"params\":{\"_endpointNum\":\"The number of endpoints to create.\",\"_libraryType\":\"The type of message library to use (UltraLightNode or SimpleMessageLib).\"}},\"setupOApps(bytes,uint8,uint8)\":{\"params\":{\"_oappCreationCode\":\"The bytecode for creating OApp contracts.\",\"_oappNum\":\"The number of OApps to set up.\",\"_startEid\":\"The starting endpoint ID for OApp setup.\"},\"returns\":{\"oapps\":\"An array of addresses for the deployed OApps.\"}},\"verifyPackets(uint32,address)\":{\"details\":\"verify packets to destination chain's OApp address.\",\"params\":{\"_dstAddress\":\"The destination address.\",\"_dstEid\":\"The destination endpoint ID.\"}},\"verifyPackets(uint32,bytes32)\":{\"details\":\"Calls an overloaded version of verifyPackets with default values for packet amount and composer address.\",\"params\":{\"_dstAddress\":\"The destination address in bytes32 format.\",\"_dstEid\":\"The destination chain's endpoint ID.\"}},\"verifyPackets(uint32,bytes32,uint256,address)\":{\"details\":\"dst UA receive/execute packetswill NOT work calling this directly with composer IF the composed payload is different from the lzReceive msg payload\"},\"wireOApps(address[])\":{\"details\":\"Sets each OApp as a peer to every other OApp in the provided array, except itself.\",\"params\":{\"oapps\":\"An array of addresses representing the deployed OApp instances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"schedulePacket(bytes,bytes)\":{\"notice\":\"Schedules a packet for delivery, storing it in the packets queue.\"},\"setUpEndpoints(uint8,uint8)\":{\"notice\":\"Sets up endpoints for testing.\"},\"setupOApps(bytes,uint8,uint8)\":{\"notice\":\"Sets up mock OApp contracts for testing.\"},\"verifyPackets(uint32,bytes32)\":{\"notice\":\"Verifies and processes packets destined for a specific chain and user address.\"},\"wireOApps(address[])\":{\"notice\":\"Configures the peers between multiple OApp instances.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/onft/onft721/ONFT721Base.sol\":\"ONFT721Base\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/libs/ONFTComposeMsgCodec.sol\":{\"keccak256\":\"0x6295798bcb8d26c4cf1ea08243e359a2ea63f2f455519f194198e4506d9b7e14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d6b7aa09488ccfa4def2d914d34970f907ea22824f0c7aa48340c2703dfd3ea\",\"dweb:/ipfs/QmWiZwfGP5W3vBDdp93vWDnfRjCqsHoBftwjTAdKmz2v7L\"]},\"contracts/onft721/ONFT721.sol\":{\"keccak256\":\"0x496aa9b8e0fb87b50deb94e2a556631c6fe378a782f87206181acfadb24d1a2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c9573fe2ac788277d2700b2742204096c1c434e4bd28bb4a7e29fee83e2cc17\",\"dweb:/ipfs/QmXRsjo8BN7daireX67655ZwCrNGAb47Ebd6YkeHaryWK1\"]},\"contracts/onft721/ONFT721Adapter.sol\":{\"keccak256\":\"0x673a4dbc59476480f5577c041106a1a04d23b7a63fab8139a7b5c4b55c2d74bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eddf9fb8ade5050f9ce147aa2e59ccd9e93e716eff91f0e479d523607bc95f0d\",\"dweb:/ipfs/QmTDV5HRbzir8tMBSYdgwLXscK9ayeuWS4e7S53NzEyJUC\"]},\"contracts/onft721/ONFT721Core.sol\":{\"keccak256\":\"0xe28bb9c335705cd2a54dbe0562b808a7a097c51b27dc1797f1c7565791d66899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7dd4ed2b1043c15df3d25405851cbcd01ec06938d0b2b6bdcaab3cbce8de7e6\",\"dweb:/ipfs/QmUDVKhrZLBM3csKep4dkfjBqzkzSxHnH45R2h5Q9a45Ab\"]},\"contracts/onft721/interfaces/IONFT721.sol\":{\"keccak256\":\"0x65efa7585fa33d3daa67519a43e026403a0946480dcbf72911fb11b5790f89cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9d3e06c8162248e53628deb8971a4d17b59b4f35f29bc77bfb56e973d33347b\",\"dweb:/ipfs/Qma7LGVsPK9Q5AbphLqbJ6nZ7A9YaCRKpxz3dzr5eQm9mg\"]},\"contracts/onft721/libs/ONFT721MsgCodec.sol\":{\"keccak256\":\"0x2d7fbd79ec71a17b021c4ec85792ee050bcfa658665aa60fa0f0cdcff16f8f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d48d5f11ad4a3fa312412cbf6357db3f60f193c16b7307392115ffef7b5fb394\",\"dweb:/ipfs/QmVMMK6np9fuRGNMJPmkFUax8SUEmkcJTf6oKS6YjWZcfb\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol\":{\"keccak256\":\"0x14899a4398251439938d6ef8a15ea8c6acdddc98a7b0066d7e63676192dea0d1\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://3998d03de7025c2c601a4fdcaf9475d12a1ef661fcf1a685ece84fdde6498cf9\",\"dweb:/ipfs/QmReknRbiGAiPqq9toKyXKo6hUKXrQPJyyS6LnTGjiDKoY\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol\":{\"keccak256\":\"0x2fdbd1b13751a264cd6e7fac518a2685b15c968806c03f1d18b177fc0526e9a9\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://600af48bb67939b5f4a3a00c76863ee290a55325ea8697f7cc4b46321ab26ef2\",\"dweb:/ipfs/QmdRigYaB6TXczjtVkvwpUEBwvvvDuymFoViMCB6xQPYUU\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol\":{\"keccak256\":\"0x400eaa11c7d50b4c25b7625290ff00937b6875ad3986b353c37a4e62b5a834b1\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://1f51eb0785d3630815a9d63de1c1331fe966df4c3f2fb6750b8da7be9e9743a4\",\"dweb:/ipfs/QmaAEf1kjhhff3AUhRiPm6ikpk2YMMrpKc2ccYzNs7waBy\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol\":{\"keccak256\":\"0x90ada11d0a330732c56b989e59c8272b70f956a5d7be2cf209d6d51a51d35a9e\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0abc7a6d07ec40a3a922256ad05bdd6eca10550d85bfd2e67147473617bb0497\",\"dweb:/ipfs/QmRDphmFhx1scRJXcusg6pUhVQvp941oCJwnHGAPdrNY4T\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol\":{\"keccak256\":\"0xa0abbbde2d91fc80929bb3214eeb57ecd11cef99c6190bf31bdb9930fa16d14a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbd50b72c788d3a0a71094d5bb81e74199b9ba66d91ff6d6cb1411966214ac2f\",\"dweb:/ipfs/QmUATu63qJouCskf3ePs67d5DbFFADuGpeENN5sZD4ZWwq\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol\":{\"keccak256\":\"0xf36091f40c969f83831fdf69f91b9ccf25237335bd2696dd18f1b721ddb794b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccd3dfafa17d068d2c7d9ae4990974833226a50ed96fc190a9bef3b77a2c9032\",\"dweb:/ipfs/QmWKNd24A4ghKCL1BCKLrna5KbpbA11vki9LNXZDBT7vV9\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol\":{\"keccak256\":\"0x3647af317ee126b1247a782abb30e59ec5ab21b4945f1d3b4370d1fa3c1bf347\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5b51cd5e7347ee869a06bd57a698f40e4a901ec7fdcb27f0ef485e4a0e1e9be4\",\"dweb:/ipfs/QmP2Nc73veRzLGdUahkjhQAiKR9ZWYiUtSGwoMB1sPXxUp\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol\":{\"keccak256\":\"0xb4df72798a64f5ea44775b526e0c417c3de0ffc661659d7b31d5b28567c6fbcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30ca5fd5e3227a7bffc51654ee3bfebdd591a131f86846ac42dea8a40c5cf1d8\",\"dweb:/ipfs/QmXNmQCF8TZAFpUxgPa1rgWt4ktsBV38A8Hax7TiYLgybW\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol\":{\"keccak256\":\"0x2aab2a3cf50e20af56d9204b1367d52a47abba0b0c7c21f304d413de1ced6345\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8b603b5e5e62c621715f8449280af240a4add8721c4ae8f5e8e491507f6e4c5\",\"dweb:/ipfs/QmUQ7Ti7CPmKnRbQFN9TLvVbeZhsi1xUjqZPTJ36dCZ6y8\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol\":{\"keccak256\":\"0xa6b61913767305227576cc6da5067de4208f09a4f58bfbfe32beafdfae9869b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7fce83bfb831f383606aee7f5ff68a330c8526bb1036f9ba0813d3e4fa8d534\",\"dweb:/ipfs/QmR7zAqJkmCgBj6sguS8t2WthY5k6FwsakgH4UY11uqD4n\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol\":{\"keccak256\":\"0xc3b7b7927472f7c1ca9703af310e9050c798afaccf399ad0f131e179b8582c8d\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://e5be13af32ff6b371985d405bc6fe8ac2faf5445bd88fda2dab4b869f66e3f89\",\"dweb:/ipfs/Qmd21k4H2tAHKrpiuHUbH87eNtHLLJzHj9ZCrMh8AKfDHh\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol\":{\"keccak256\":\"0x36c93de122bbb74ae31e3eacf567c0a3bc649ed3ebb2766c76dfa93aebcace44\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://e83bcaa80e2715e68818dd53e4dc6ad8e665b8249d69a08cf2d2635b9757fb79\",\"dweb:/ipfs/QmSKh6NgaTrTSa48gDzGGqGNAcs5jVEHgZSzZzbuJSEsxo\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol\":{\"keccak256\":\"0x6d9962ffa476ac2efb78f1415bb2f650a30eedeef2b75fdab0aeafaf3e8da6a5\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://21f32c56b67d2e770444b809c1a85a96627194c605ad317d482dfc5b6ce7e8c2\",\"dweb:/ipfs/QmP5tzoMDzTdduEcSpYHgg6WCHLQGuc1djDMFUBycJPLCU\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol\":{\"keccak256\":\"0xfdb1d04f4996c0a9d35abfbfcf10d978da638885eb77d0a9dc35cea5993074e3\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://776d58d88d13b058f236cf18c32b4b9718a021513fc4e198287f4fe18ec5aba4\",\"dweb:/ipfs/QmdNX8jJu2aXJ8Dpbt2ohfhT8RKQLuvh58sW6SAXcUTcV9\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol\":{\"keccak256\":\"0xa7fbe84ee6a646a09577f409b6c4c5ad05467e6896f9da6db91510801d6eaa4f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1038e6fd16a679b6a5e0e4171dd889465e70b867c3b084e92dbf8152490a4bc9\",\"dweb:/ipfs/QmYqhMnurtMYsaL4twHusKEAMuEHBER6ZrXcMKak6Y4GcN\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol\":{\"keccak256\":\"0x7edb42d1580a08e77d5cc48d83087f7d8c35138605456a5c82a583df3a7cbd73\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18710ab2a55c410e035aa6c10bc12e347066dfad9ee339841e3dd34cdeda5e55\",\"dweb:/ipfs/QmVaXhPWFjc3YTikbWHS4TKHkmTgZuEyorikFyyUTJh1bN\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol\":{\"keccak256\":\"0x308e77078242fd5c5746ec29c12e618249134f9e4377c0028ab8f59c07a6014b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f92cf397a8d26864ac92dfcd1b98e92a32c47f556a62c5e6dc1618734c1caa3\",\"dweb:/ipfs/QmXN3XJXEKq5djV6HeM6jrLycmJPFhMhecsYZ2TaRsQmhg\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol\":{\"keccak256\":\"0xcdf7e690e5d5c0a3ec26a0d7b1a7fe49c7d16a3634721c3944f77d13ff5d4a91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd32a05dde1b83be1ce64fcfb9495d8b9bf0c5b3a5b521ac6c214e87e32f3cdc\",\"dweb:/ipfs/QmcDKTor8EQf3cbiWYmeFb9qzUM8JGPzGGN9qJnYjP1nN7\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol\":{\"keccak256\":\"0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141\",\"dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol\":{\"keccak256\":\"0x5df07fef16b20767f7524c367d90f696c12e8ce0e4fde7aecc9d83fb2b6b0e27\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0997203f57d736e56ebb3d736550f1c7ff7950c8df0574c7abe95e22f847b850\",\"dweb:/ipfs/QmZBjkH1vaPLyN3Jx9kGfVZKuTdfVWJfJVLSPok8SpjGbT\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol\":{\"keccak256\":\"0x47f8ebeaa7d96a6f337a18c46e3c532da578c7cb0a13fb6e6f014286b991902f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d51f208b931be54e0ae1801c71c0756251d8c26f8d9b7911be1ad57b3d4a5691\",\"dweb:/ipfs/QmWqjst7jnYtSXQ9pakYHutDvENKLyqNg9nPfMxTH8p2Ed\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol\":{\"keccak256\":\"0x64330e51de72e8d38cfc0eb5527d36baada46df4bc14233d3a8ecaf98098d69a\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://49aa45e5a26fc62e7af569cf915be8344adc78dceb6871c4c14bc5d115e59241\",\"dweb:/ipfs/QmbTuW7kzPDYForDEPnaNQi6ZrmWqDxGVnHFiugnvTyq9K\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol\":{\"keccak256\":\"0x8ab8cb12c8beba699c1a7f22ffa812ac553f7038326d0c0d0af77253005cfe73\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://7c7cba4ae16d0ca46ee0a365a204f7257ceaa892224604bf7c8e65c44737e46c\",\"dweb:/ipfs/QmbQX5hJDKMwKdoo6QkdcusXQXH54SVCPe5hM1ycJZsg7y\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol\":{\"keccak256\":\"0x20d36578e810e75346daf064813b76a177087214cae77628b1f9d43798cb52d1\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://475b6f3f1ba5d981d0c5f90b9e892d4f9f539f3b12196639b95770b5be4dbf6a\",\"dweb:/ipfs/QmYyGrnR3vDt8Dqa2paQwTG9qrD6anAGFrDZmMra8KGC6s\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol\":{\"keccak256\":\"0x9616f3bd0d7293c9723f2ddf86f9f7030fbd99213c9748557eec8f6d13b25420\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://205e713f5af46f52799e51774ac74dbeee4056de6ddba3c4d78a327536426c54\",\"dweb:/ipfs/QmZ2ZqDwxdjpJbh91qwMfRhhQu4AMEsjUcsTEsdRV4NAys\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":{\"keccak256\":\"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf\",\"dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol\":{\"keccak256\":\"0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d\",\"dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol\":{\"keccak256\":\"0x35bcd6ca99c4c8d9f7d8413d1b92fb4a4d4a420ce3bf64b0fb01e68e6bcf2fa7\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0ac14f98563f9c610c936c93e71eff657efaba1e1d892be6a215aa5cb1f63a24\",\"dweb:/ipfs/QmVZZ8owwfDGLQTAzQJJqmYY4KsrChDagh5GBK7rChT5wb\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol\":{\"keccak256\":\"0x8a44524af7deb96593f6b5606e9973654a113e1687809f2e45d4a91ba89862d5\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://32dd0b5d1946e0cd5c7b728086aafac50a62c061115afb8b41254589c8a6732b\",\"dweb:/ipfs/QmR9QqtiAUPRLaRVv5wnth3NGPhdWB8rJmWYfz3o5Z1mWj\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol\":{\"keccak256\":\"0x621d6dd5b8b7e827351459fff4ac87c16ba4656757592cf67de8b199aea4cf9a\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://345aa8c007ed8b96a74260d289545713f1d7180df270d67687e3a540a61fa5c0\",\"dweb:/ipfs/QmNWCvpqSuar6UGLDVshUc7shUv3pt1J5FTf9VyZZ13wXL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol\":{\"keccak256\":\"0xb2b55968b26294139742adee6c155897c8334f4c6bf72f1940456cc84e6fbab9\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://e758a1fdcea4039b19f1252e4e2958f4a0e05517eb3e151784431533446c225f\",\"dweb:/ipfs/QmRBG345abgyUeTnSpuxdK1WbK5pvwhSmvBEgW1mnoYqTq\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol\":{\"keccak256\":\"0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f\",\"dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol\":{\"keccak256\":\"0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2\",\"dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol\":{\"keccak256\":\"0xf1f36bbbc40d03b96affa151affb47da75a1b69dc79f4b311841a072d12fdd22\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9f4f188c2998ecbda28a389ad8038da15c2260b1df6a8d135b3d96422e292fda\",\"dweb:/ipfs/QmeThR83tcaM4CmxQ2AamTafsgjcbGMfZtYcDHqw2CcwKa\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28\",\"dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075\",\"dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e\",\"dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af\",\"dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol\":{\"keccak256\":\"0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f\",\"dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82\",\"dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol\":{\"keccak256\":\"0xb0c90719820a97cdb712062c9c3372839b659c131f379f5156d521d9c57e3bd8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dfdd28f430d976f8ec7cb2c927502a33617329a03d0957a659f6a58ee1396a1c\",\"dweb:/ipfs/QmaQLDzcUKgQ6UFu7uCewBYCGDMS3RNxbuj6GbxaCk4wM9\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol\":{\"keccak256\":\"0xd9693c096fa2e23bdba9d24d0296554150da98a2643065ff61035266744d5350\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://67f9356573993de1d7a509ce008f2430d5b8ef7509378e9fd65d9a10dbc1f3e9\",\"dweb:/ipfs/QmXC3wRWpPy43e13bHsCpDEv5L1Ju1wqUuxt6EfxivUxN5\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol\":{\"keccak256\":\"0x4f78d60b0fd4bebb9d091db945c1908f1ab594c6332ef7e76cc6a27e36a6e2ef\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://1007be62aa5684ac636b45febfa43f69459ea25dcd1e9d944a50a7d6f05a6677\",\"dweb:/ipfs/QmTY7SB6SGbyHEiheQuE4vCjK4sTcbDuhoBL94ncX9Aoon\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol\":{\"keccak256\":\"0x88e3df882ad4e26ff793e786b237153adbda2a3a09133958b561659d5ebd4ada\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0ad6c67e125b3d80476326ce1b06b8b22147edb7bec85e3be135afae513b7590\",\"dweb:/ipfs/QmXwfH4CkqmNk8vDBPuMb1Hv1vBn58wV33XGtDpar8gAMf\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol\":{\"keccak256\":\"0xe9096c53611537a121589b56b882fc4dd797d5cac60def708f794a15e3ca98ff\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://4092d5dd582b48a5f703e4361fc5fb66050b5fe3253891175275dc832bc8e045\",\"dweb:/ipfs/QmXSTJJNx4rn2ByCaE6vxiHnkm366ZU7dScYH1JsUbVZ1V\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol\":{\"keccak256\":\"0x0cb48e8187ff6c77f35f29f9d266f756d9d544dfe6a007f3f21bd10ff6ea4f21\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://df6452cb2e39b2af3bd839ac021fa62cdea399b34c8d5fce6f50b4e7a3f6eb13\",\"dweb:/ipfs/QmNxDKoByW2NQnVNVsXGLEq9qtgJpAnk4Vt8fpqQwMG1oW\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol\":{\"keccak256\":\"0xffd919489fab736fd18ac46c917c476b1eb1f8e2190f0c5ac87d969f17d07a16\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://0e30809702b1351fded69e75c13aaee1e8e161a20ad40c8176f66cc1cc737b29\",\"dweb:/ipfs/Qmcke2GWTYGcpcY9k1vgRkkGvo2BQXYmzdkVgXj3x33p1r\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol\":{\"keccak256\":\"0xc7c90e073e52af1da6c07e3d3f7477b064a89e78935c16e9872457df503c6830\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://cef1ae2d517e152616aea7f8f5c15fa1fbabbec8896a9c30a9eed35fb56b4f2f\",\"dweb:/ipfs/QmeitPMQht2WfbR9ZLzwKWgThamdsJkobeaWo6ojTCoQG5\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol\":{\"keccak256\":\"0xd8f419b25c648287b5b7f0923b069b2449c51e807c9153df39445f2f83e55f44\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://bb300a5bb62655073c7aa9cd2221e60e59ce904a0d73f7f5e06af7c9df3445ec\",\"dweb:/ipfs/QmcYb2qFevymfkWhTqGaNH5HwK9MMUixzAKJJAdNQHSCbw\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol\":{\"keccak256\":\"0x8e60b01e9bc801167b374dc119b41832d546afd43c143a0cd15ab1941198e121\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://bb1512762417dda9cd81fd9b41f590fd05888358fda1c2ab7e79e0cfabf61ec4\",\"dweb:/ipfs/QmPAgBwdjLz29vE5L1Jth1Wvx6TTM1ig97amVtAyDFF61Q\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol\":{\"keccak256\":\"0x0c5cb54ec6b18e77aa653f7d774ac9d010684dafc96794d1d02f12b6885cc348\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://24c5a8ba8d92c16ec3047229167528f57b38cbd64882140014126ca51ab14574\",\"dweb:/ipfs/QmXQsMDtZ3qNmjnr2LYgctBpPKxffuC6EeWHvFUtLBS5st\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol\":{\"keccak256\":\"0xe6c93840c612592686732dd516550816eb77d6cde92514220eacb72443dcb9b9\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://a6a00fb60b7ac66e746f0471c2262fc98febafeb8acad8785d38ce1ddc4cc991\",\"dweb:/ipfs/QmboboJskbXBbsyAGGRbW4JQCPJo9WiLFy7nwQxGVS9UhZ\"]},\"node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol\":{\"keccak256\":\"0x6c5bc31c117033dd35fa7ab3b13b1647a4b449c5f5b4cbff41bce8a63529ab97\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://01aa1d3f3b8e2fd4b544312d96916b16b97e01ab740e2bae1137723b2f1a31b1\",\"dweb:/ipfs/QmVMemJ4MSgi6y9NxDdSeB6QbJRtCWojJNxzs3CRLT56EA\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdChains.sol\":{\"keccak256\":\"0x598b85609125830885b8fb54a18f447d04f8dd799aca3de81baef35eb6b783c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9c128aae4f5668d8c8f71e9e6d9379d8451b8713d139cb66a02d23bc1c75f69\",\"dweb:/ipfs/QmVRihXHWi2yg9CcAhzKf63Y7m6gWz4P1giGMhXUHT3DFu\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdJson.sol\":{\"keccak256\":\"0x8f914dbd016bd0e318fe2b8bd556fbc8256c7cddc24e3e4fcb9f3c1c1935592d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19e704df493dde38323303b07d18cadfeb4dcadf1ddc2301add4aea9474fbb5e\",\"dweb:/ipfs/QmZasuGiLK8LHwWtvpqEBxUR6QFY6GdzLMTJ9q7CMf8PNZ\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Vm.sol\":{\"keccak256\":\"0x87ba9f3edc254e529db9e3129c954391adcc7fc8574203767979d8d2f1e724b9\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://4d16c08d80d9f2869deb6350642cf5af624d21fce6b3b023abbcdedc62e195fe\",\"dweb:/ipfs/QmURpnnFECPKt3i7P7jQRZpr4ZBXjRGcZ9KzcbKzsgYR2W\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/mocks/MockERC20.sol\":{\"keccak256\":\"0xd8703f49411737ecf8d411f8fa66b2bf0ef972ba28b7a4adf1748c63df1bf682\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7c10a6b8112f6fe3cdccb6240ecd382765216b1a82e9a86a0fec8f5e09eadd1\",\"dweb:/ipfs/QmdRvPCU4RkjMHsTu3Ric1ZEF1AWDNLp78unFC5aWP17xq\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/mocks/MockERC721.sol\":{\"keccak256\":\"0xa24468244abb66e663fb7eee6463cb518eb9a7c14e1071548ff564cca825bbca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://145585a2194aa6e2d30edfe709ef2814e20b1b4540469aa6a8f50c841fcb9070\",\"dweb:/ipfs/QmZrwbvtpbtTxqbW5phUrwb3F1tBiPSQc6jZJAXBfsBsAh\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc\",\"dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc\"]},\"node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02\",\"dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol\":{\"keccak256\":\"0xed6b702230a66640a0f1dd96106dd697e821b6b0fbb2eeab1c09d88d7c411a67\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://766996a7c9fb936ae08fc451c6bf6c3a9b49aca26002fb76c7fd1833fca459d8\",\"dweb:/ipfs/QmaFKhhPJCNxESLDoio7aR2KSvi4Y8YKirrb9tu4LM1vDp\"]},\"test/mocks/InspectorMock.sol\":{\"keccak256\":\"0xf2b8566a542cf017b9b4ebe9b34fb083e2b7df46b5678b3a370277d7016cb66f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://deff5a006c9de835adb7f94e2732b0fa8541273c63455a42f2fb842998d4e403\",\"dweb:/ipfs/QmTKRTgBYjnVu4CBUfTwytffWRRRBJC613XBhypgh79pN8\"]},\"test/onft/ONFTBaseTestHelper.sol\":{\"keccak256\":\"0xc391362caf12a23d771d1dd8fa5e072ae7cff39266393f7deeae6de502f5dfb8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2567c9a0dd3e4f035dacb37e784ea5b55faa5fc0a42415e060355de3a969edd6\",\"dweb:/ipfs/QmWfsj1mFmeyMq99s63We4pUsL6jRa6wB9VQmVE1FCNCGN\"]},\"test/onft/onft721/ONFT721Base.sol\":{\"keccak256\":\"0x9213f57ec1c112bede376fe220bc68afd33c7c76041b940b9d1625232a2133ba\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://851bedb87080caa3aac2f72dde10620ed0422a3aff758a575464d4f20c18fcff\",\"dweb:/ipfs/QmXaUAPghSiLFhHvPa2ccdkrCnpywudVkEb6wEJQrEs38F\"]},\"test/onft/onft721/mocks/ERC721Mock.sol\":{\"keccak256\":\"0x6b9a321f3f1e9de4bb6ec64f01264717108e77da7173a3e735d3830542a4e8fe\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3cd5b0ecd6121979c0289d8d53c24286793e43c31d337c61fdea408ec1e78135\",\"dweb:/ipfs/QmTrhHATg38ZkspBW1qz5dXcJHeHvMo42PoM3WZtq6KSGY\"]},\"test/onft/onft721/mocks/ONFT721AdapterMock.sol\":{\"keccak256\":\"0xe6a5e529274226003161bfca63fbceab6aaf10f91ef62d6f1d36cabb81da9df0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ee5020c13278a047c22e2bdd86703c2c75ce1e76530005f7e3bce82e0dbf2d3b\",\"dweb:/ipfs/QmQyfe2kn6Zbgu6vw2ss5kBjsTtBZzkFNtbD3mpf3T6Fx8\"]},\"test/onft/onft721/mocks/ONFT721Mock.sol\":{\"keccak256\":\"0xc31f9452ff2400b8279b490bdfe117aaaa27d1fcc35c1e6126a1cbc76a3be675\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc38695a66a85a73b7098513e0fd65d5bf37751f8eb4d3f49dc937f0d6815b8c\",\"dweb:/ipfs/QmV7Swzcstxv8L3n4ZFuS7YBQD4xsHwLDRqvwyoL8bFRtw\"]}},\"version\":1}", + "metadata": { + "compiler": { "version": "0.8.22+commit.4fc1097e" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [], + "type": "error", + "name": "Executor_InvalidLzComposeOption" + }, + { + "inputs": [], + "type": "error", + "name": "Executor_InvalidLzReceiveOption" + }, + { + "inputs": [], + "type": "error", + "name": "Executor_InvalidNativeDropOption" + }, + { + "inputs": [ + { "internalType": "uint16", "name": "optionType", "type": "uint16" } + ], + "type": "error", + "name": "InvalidOptionType" + }, + { "inputs": [], "type": "error", "name": "QueueEmpty" }, + { "inputs": [], "type": "error", "name": "QueueFull" }, + { + "inputs": [ + { "internalType": "uint8", "name": "bits", "type": "uint8" }, + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "type": "error", + "name": "SafeCastOverflowedUintDowncast" + }, + { + "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": [], + "stateMutability": "view", + "type": "function", + "name": "TREASURY_GAS_CAP", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "TREASURY_GAS_FOR_FEE_CAP", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "packetBytes", "type": "bytes" }, + { "internalType": "bytes32", "name": "guid", "type": "bytes32" } + ], + "stateMutability": "pure", + "type": "function", + "name": "assertGuid" + }, + { + "inputs": [ + { "internalType": "bytes", "name": "_option", "type": "bytes" } + ], + "stateMutability": "pure", + "type": "function", + "name": "decodeLzComposeOption", + "outputs": [ + { "internalType": "uint16", "name": "index", "type": "uint16" }, + { "internalType": "uint128", "name": "gas", "type": "uint128" }, + { "internalType": "uint128", "name": "value", "type": "uint128" } + ] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "_option", "type": "bytes" } + ], + "stateMutability": "pure", + "type": "function", + "name": "decodeLzReceiveOption", + "outputs": [ + { "internalType": "uint128", "name": "gas", "type": "uint128" }, + { "internalType": "uint128", "name": "value", "type": "uint128" } + ] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "_option", "type": "bytes" } + ], + "stateMutability": "pure", + "type": "function", + "name": "decodeNativeDropOption", + "outputs": [ + { "internalType": "uint128", "name": "amount", "type": "uint128" }, + { "internalType": "bytes32", "name": "receiver", "type": "bytes32" } + ] + }, + { + "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": "view", + "type": "function", + "name": "executorValueCap", + "outputs": [ + { "internalType": "uint128", "name": "", "type": "uint128" } + ] + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "failed", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "uint16", "name": "_dstEid", "type": "uint16" }, + { + "internalType": "bytes32", + "name": "_dstAddress", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getNextInflightPacket", + "outputs": [ + { "internalType": "bytes", "name": "packetBytes", "type": "bytes" } + ] + }, + { + "inputs": [ + { "internalType": "uint16", "name": "_dstEid", "type": "uint16" }, + { + "internalType": "bytes32", + "name": "_dstAddress", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "hasPendingPackets", + "outputs": [ + { "internalType": "bool", "name": "flag", "type": "bool" } + ] + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_dstEid", "type": "uint32" }, + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "bytes", "name": "_options", "type": "bytes" }, + { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "bytes", "name": "_composerMsg", "type": "bytes" } + ], + "stateMutability": "payable", + "type": "function", + "name": "lzCompose" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_packetBytes", + "type": "bytes" + }, + { "internalType": "bytes", "name": "_options", "type": "bytes" }, + { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, + { + "internalType": "address", + "name": "_composer", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "lzCompose" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_packetBytes", + "type": "bytes" + }, + { "internalType": "bytes", "name": "_options", "type": "bytes" } + ], + "stateMutability": "payable", + "type": "function", + "name": "lzReceive" + }, + { + "inputs": [ + { "internalType": "bytes", "name": "_options", "type": "bytes" }, + { "internalType": "uint256", "name": "_cursor", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function", + "name": "nextExecutorOption", + "outputs": [ + { "internalType": "uint8", "name": "optionType", "type": "uint8" }, + { "internalType": "bytes", "name": "option", "type": "bytes" }, + { "internalType": "uint256", "name": "cursor", "type": "uint256" } + ] + }, + { + "inputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function", + "name": "onfts", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ] + }, + { + "inputs": [ + { + "internalType": "contract EndpointV2Mock", + "name": "endpoint", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerEndpoint" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_packetBytes", + "type": "bytes" + }, + { "internalType": "bytes", "name": "_options", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "schedulePacket" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "_valueCap", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setExecutorValueCap" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "setUp" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_endpointNum", + "type": "uint8" + }, + { + "internalType": "enum TestHelperOz5.LibraryType", + "name": "_libraryType", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setUpEndpoints" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_oappCreationCode", + "type": "bytes" + }, + { "internalType": "uint8", "name": "_startEid", "type": "uint8" }, + { "internalType": "uint8", "name": "_oappNum", "type": "uint8" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setupOApps", + "outputs": [ + { + "internalType": "address[]", + "name": "oapps", + "type": "address[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "array", + "type": "uint256[]" + }, + { "internalType": "uint256", "name": "start", "type": "uint256" }, + { "internalType": "uint256", "name": "end", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function", + "name": "sliceUintArray", + "outputs": [ + { "internalType": "uint256[]", "name": "", "type": "uint256[]" } + ] + }, + { + "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": "targetInterfaces", + "outputs": [ + { + "internalType": "struct StdInvariant.FuzzInterface[]", + "name": "targetedInterfaces_", + "type": "tuple[]", + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string[]", + "name": "artifacts", + "type": "string[]" + } + ] + } + ] + }, + { + "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": [ + { "internalType": "bytes", "name": "_packetBytes", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "validatePacket" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_dstEid", "type": "uint32" }, + { + "internalType": "address", + "name": "_dstAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "verifyPackets" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_dstEid", "type": "uint32" }, + { + "internalType": "bytes32", + "name": "_dstAddress", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_packetAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_composer", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "verifyPackets" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_dstEid", "type": "uint32" }, + { + "internalType": "bytes32", + "name": "_dstAddress", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "verifyPackets" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "oapps", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "wireOApps" + }, + { "inputs": [], "stateMutability": "payable", "type": "receive" } + ], + "devdoc": { + "kind": "dev", + "methods": { + "schedulePacket(bytes,bytes)": { + "details": "Adds the packet to the front of the queue and stores its options for later retrieval.", + "params": { + "_options": "The options associated with the packet, used during delivery.", + "_packetBytes": "The packet data to be scheduled." + } + }, + "setExecutorValueCap(uint128)": { + "details": "set executorValueCap if more than 0.1 ether is necessarythis must be called prior to setUpEndpoints() if the value is to be used", + "params": { + "_valueCap": "amount executor can pass as msg.value to lzReceive()" + } + }, + "setUp()": { + "details": "Initializes test environment setup, to be overridden by specific tests." + }, + "setUpEndpoints(uint8,uint8)": { + "params": { + "_endpointNum": "The number of endpoints to create.", + "_libraryType": "The type of message library to use (UltraLightNode or SimpleMessageLib)." + } + }, + "setupOApps(bytes,uint8,uint8)": { + "params": { + "_oappCreationCode": "The bytecode for creating OApp contracts.", + "_oappNum": "The number of OApps to set up.", + "_startEid": "The starting endpoint ID for OApp setup." + }, + "returns": { + "oapps": "An array of addresses for the deployed OApps." + } + }, + "verifyPackets(uint32,address)": { + "details": "verify packets to destination chain's OApp address.", + "params": { + "_dstAddress": "The destination address.", + "_dstEid": "The destination endpoint ID." + } + }, + "verifyPackets(uint32,bytes32)": { + "details": "Calls an overloaded version of verifyPackets with default values for packet amount and composer address.", + "params": { + "_dstAddress": "The destination address in bytes32 format.", + "_dstEid": "The destination chain's endpoint ID." + } + }, + "verifyPackets(uint32,bytes32,uint256,address)": { + "details": "dst UA receive/execute packetswill NOT work calling this directly with composer IF the composed payload is different from the lzReceive msg payload" + }, + "wireOApps(address[])": { + "details": "Sets each OApp as a peer to every other OApp in the provided array, except itself.", + "params": { + "oapps": "An array of addresses representing the deployed OApp instances." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "schedulePacket(bytes,bytes)": { + "notice": "Schedules a packet for delivery, storing it in the packets queue." + }, + "setUpEndpoints(uint8,uint8)": { + "notice": "Sets up endpoints for testing." + }, + "setupOApps(bytes,uint8,uint8)": { + "notice": "Sets up mock OApp contracts for testing." + }, + "verifyPackets(uint32,bytes32)": { + "notice": "Verifies and processes packets destined for a specific chain and user address." + }, + "wireOApps(address[])": { + "notice": "Configures the peers between multiple OApp instances." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@layerzerolabs/=node_modules/@layerzerolabs/", + "@openzeppelin/=node_modules/@openzeppelin/", + "ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/", + "forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/", + "solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/" + ], + "optimizer": { "enabled": true, "runs": 200 }, + "metadata": { "bytecodeHash": "ipfs" }, + "compilationTarget": { + "test/onft/onft721/ONFT721Base.sol": "ONFT721Base" + }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "contracts/libs/ONFTComposeMsgCodec.sol": { + "keccak256": "0x6295798bcb8d26c4cf1ea08243e359a2ea63f2f455519f194198e4506d9b7e14", + "urls": [ + "bzz-raw://4d6b7aa09488ccfa4def2d914d34970f907ea22824f0c7aa48340c2703dfd3ea", + "dweb:/ipfs/QmWiZwfGP5W3vBDdp93vWDnfRjCqsHoBftwjTAdKmz2v7L" + ], + "license": "MIT" + }, + "contracts/onft721/ONFT721.sol": { + "keccak256": "0x496aa9b8e0fb87b50deb94e2a556631c6fe378a782f87206181acfadb24d1a2e", + "urls": [ + "bzz-raw://0c9573fe2ac788277d2700b2742204096c1c434e4bd28bb4a7e29fee83e2cc17", + "dweb:/ipfs/QmXRsjo8BN7daireX67655ZwCrNGAb47Ebd6YkeHaryWK1" + ], + "license": "MIT" + }, + "contracts/onft721/ONFT721Adapter.sol": { + "keccak256": "0x673a4dbc59476480f5577c041106a1a04d23b7a63fab8139a7b5c4b55c2d74bb", + "urls": [ + "bzz-raw://eddf9fb8ade5050f9ce147aa2e59ccd9e93e716eff91f0e479d523607bc95f0d", + "dweb:/ipfs/QmTDV5HRbzir8tMBSYdgwLXscK9ayeuWS4e7S53NzEyJUC" + ], + "license": "MIT" + }, + "contracts/onft721/ONFT721Core.sol": { + "keccak256": "0xe28bb9c335705cd2a54dbe0562b808a7a097c51b27dc1797f1c7565791d66899", + "urls": [ + "bzz-raw://c7dd4ed2b1043c15df3d25405851cbcd01ec06938d0b2b6bdcaab3cbce8de7e6", + "dweb:/ipfs/QmUDVKhrZLBM3csKep4dkfjBqzkzSxHnH45R2h5Q9a45Ab" + ], + "license": "MIT" + }, + "contracts/onft721/interfaces/IONFT721.sol": { + "keccak256": "0x65efa7585fa33d3daa67519a43e026403a0946480dcbf72911fb11b5790f89cf", + "urls": [ + "bzz-raw://c9d3e06c8162248e53628deb8971a4d17b59b4f35f29bc77bfb56e973d33347b", + "dweb:/ipfs/Qma7LGVsPK9Q5AbphLqbJ6nZ7A9YaCRKpxz3dzr5eQm9mg" + ], + "license": "MIT" + }, + "contracts/onft721/libs/ONFT721MsgCodec.sol": { + "keccak256": "0x2d7fbd79ec71a17b021c4ec85792ee050bcfa658665aa60fa0f0cdcff16f8f45", + "urls": [ + "bzz-raw://d48d5f11ad4a3fa312412cbf6357db3f60f193c16b7307392115ffef7b5fb394", + "dweb:/ipfs/QmVMMK6np9fuRGNMJPmkFUax8SUEmkcJTf6oKS6YjWZcfb" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol": { + "keccak256": "0x14899a4398251439938d6ef8a15ea8c6acdddc98a7b0066d7e63676192dea0d1", + "urls": [ + "bzz-raw://3998d03de7025c2c601a4fdcaf9475d12a1ef661fcf1a685ece84fdde6498cf9", + "dweb:/ipfs/QmReknRbiGAiPqq9toKyXKo6hUKXrQPJyyS6LnTGjiDKoY" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol": { + "keccak256": "0x2fdbd1b13751a264cd6e7fac518a2685b15c968806c03f1d18b177fc0526e9a9", + "urls": [ + "bzz-raw://600af48bb67939b5f4a3a00c76863ee290a55325ea8697f7cc4b46321ab26ef2", + "dweb:/ipfs/QmdRigYaB6TXczjtVkvwpUEBwvvvDuymFoViMCB6xQPYUU" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol": { + "keccak256": "0x400eaa11c7d50b4c25b7625290ff00937b6875ad3986b353c37a4e62b5a834b1", + "urls": [ + "bzz-raw://1f51eb0785d3630815a9d63de1c1331fe966df4c3f2fb6750b8da7be9e9743a4", + "dweb:/ipfs/QmaAEf1kjhhff3AUhRiPm6ikpk2YMMrpKc2ccYzNs7waBy" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol": { + "keccak256": "0x90ada11d0a330732c56b989e59c8272b70f956a5d7be2cf209d6d51a51d35a9e", + "urls": [ + "bzz-raw://0abc7a6d07ec40a3a922256ad05bdd6eca10550d85bfd2e67147473617bb0497", + "dweb:/ipfs/QmRDphmFhx1scRJXcusg6pUhVQvp941oCJwnHGAPdrNY4T" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol": { + "keccak256": "0xa0abbbde2d91fc80929bb3214eeb57ecd11cef99c6190bf31bdb9930fa16d14a", + "urls": [ + "bzz-raw://fbd50b72c788d3a0a71094d5bb81e74199b9ba66d91ff6d6cb1411966214ac2f", + "dweb:/ipfs/QmUATu63qJouCskf3ePs67d5DbFFADuGpeENN5sZD4ZWwq" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol": { + "keccak256": "0xf36091f40c969f83831fdf69f91b9ccf25237335bd2696dd18f1b721ddb794b3", + "urls": [ + "bzz-raw://ccd3dfafa17d068d2c7d9ae4990974833226a50ed96fc190a9bef3b77a2c9032", + "dweb:/ipfs/QmWKNd24A4ghKCL1BCKLrna5KbpbA11vki9LNXZDBT7vV9" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol": { + "keccak256": "0x3647af317ee126b1247a782abb30e59ec5ab21b4945f1d3b4370d1fa3c1bf347", + "urls": [ + "bzz-raw://5b51cd5e7347ee869a06bd57a698f40e4a901ec7fdcb27f0ef485e4a0e1e9be4", + "dweb:/ipfs/QmP2Nc73veRzLGdUahkjhQAiKR9ZWYiUtSGwoMB1sPXxUp" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol": { + "keccak256": "0xb4df72798a64f5ea44775b526e0c417c3de0ffc661659d7b31d5b28567c6fbcc", + "urls": [ + "bzz-raw://30ca5fd5e3227a7bffc51654ee3bfebdd591a131f86846ac42dea8a40c5cf1d8", + "dweb:/ipfs/QmXNmQCF8TZAFpUxgPa1rgWt4ktsBV38A8Hax7TiYLgybW" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol": { + "keccak256": "0x2aab2a3cf50e20af56d9204b1367d52a47abba0b0c7c21f304d413de1ced6345", + "urls": [ + "bzz-raw://f8b603b5e5e62c621715f8449280af240a4add8721c4ae8f5e8e491507f6e4c5", + "dweb:/ipfs/QmUQ7Ti7CPmKnRbQFN9TLvVbeZhsi1xUjqZPTJ36dCZ6y8" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol": { + "keccak256": "0xa6b61913767305227576cc6da5067de4208f09a4f58bfbfe32beafdfae9869b1", + "urls": [ + "bzz-raw://b7fce83bfb831f383606aee7f5ff68a330c8526bb1036f9ba0813d3e4fa8d534", + "dweb:/ipfs/QmR7zAqJkmCgBj6sguS8t2WthY5k6FwsakgH4UY11uqD4n" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol": { + "keccak256": "0xc3b7b7927472f7c1ca9703af310e9050c798afaccf399ad0f131e179b8582c8d", + "urls": [ + "bzz-raw://e5be13af32ff6b371985d405bc6fe8ac2faf5445bd88fda2dab4b869f66e3f89", + "dweb:/ipfs/Qmd21k4H2tAHKrpiuHUbH87eNtHLLJzHj9ZCrMh8AKfDHh" + ], + "license": "MIT OR Apache-2.0" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol": { + "keccak256": "0x36c93de122bbb74ae31e3eacf567c0a3bc649ed3ebb2766c76dfa93aebcace44", + "urls": [ + "bzz-raw://e83bcaa80e2715e68818dd53e4dc6ad8e665b8249d69a08cf2d2635b9757fb79", + "dweb:/ipfs/QmSKh6NgaTrTSa48gDzGGqGNAcs5jVEHgZSzZzbuJSEsxo" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol": { + "keccak256": "0x6d9962ffa476ac2efb78f1415bb2f650a30eedeef2b75fdab0aeafaf3e8da6a5", + "urls": [ + "bzz-raw://21f32c56b67d2e770444b809c1a85a96627194c605ad317d482dfc5b6ce7e8c2", + "dweb:/ipfs/QmP5tzoMDzTdduEcSpYHgg6WCHLQGuc1djDMFUBycJPLCU" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol": { + "keccak256": "0xfdb1d04f4996c0a9d35abfbfcf10d978da638885eb77d0a9dc35cea5993074e3", + "urls": [ + "bzz-raw://776d58d88d13b058f236cf18c32b4b9718a021513fc4e198287f4fe18ec5aba4", + "dweb:/ipfs/QmdNX8jJu2aXJ8Dpbt2ohfhT8RKQLuvh58sW6SAXcUTcV9" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol": { + "keccak256": "0xa7fbe84ee6a646a09577f409b6c4c5ad05467e6896f9da6db91510801d6eaa4f", + "urls": [ + "bzz-raw://1038e6fd16a679b6a5e0e4171dd889465e70b867c3b084e92dbf8152490a4bc9", + "dweb:/ipfs/QmYqhMnurtMYsaL4twHusKEAMuEHBER6ZrXcMKak6Y4GcN" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol": { + "keccak256": "0x7edb42d1580a08e77d5cc48d83087f7d8c35138605456a5c82a583df3a7cbd73", + "urls": [ + "bzz-raw://18710ab2a55c410e035aa6c10bc12e347066dfad9ee339841e3dd34cdeda5e55", + "dweb:/ipfs/QmVaXhPWFjc3YTikbWHS4TKHkmTgZuEyorikFyyUTJh1bN" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol": { + "keccak256": "0x308e77078242fd5c5746ec29c12e618249134f9e4377c0028ab8f59c07a6014b", + "urls": [ + "bzz-raw://2f92cf397a8d26864ac92dfcd1b98e92a32c47f556a62c5e6dc1618734c1caa3", + "dweb:/ipfs/QmXN3XJXEKq5djV6HeM6jrLycmJPFhMhecsYZ2TaRsQmhg" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol": { + "keccak256": "0xcdf7e690e5d5c0a3ec26a0d7b1a7fe49c7d16a3634721c3944f77d13ff5d4a91", + "urls": [ + "bzz-raw://bd32a05dde1b83be1ce64fcfb9495d8b9bf0c5b3a5b521ac6c214e87e32f3cdc", + "dweb:/ipfs/QmcDKTor8EQf3cbiWYmeFb9qzUM8JGPzGGN9qJnYjP1nN7" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol": { + "keccak256": "0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35", + "urls": [ + "bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141", + "dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol": { + "keccak256": "0x5df07fef16b20767f7524c367d90f696c12e8ce0e4fde7aecc9d83fb2b6b0e27", + "urls": [ + "bzz-raw://0997203f57d736e56ebb3d736550f1c7ff7950c8df0574c7abe95e22f847b850", + "dweb:/ipfs/QmZBjkH1vaPLyN3Jx9kGfVZKuTdfVWJfJVLSPok8SpjGbT" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol": { + "keccak256": "0x47f8ebeaa7d96a6f337a18c46e3c532da578c7cb0a13fb6e6f014286b991902f", + "urls": [ + "bzz-raw://d51f208b931be54e0ae1801c71c0756251d8c26f8d9b7911be1ad57b3d4a5691", + "dweb:/ipfs/QmWqjst7jnYtSXQ9pakYHutDvENKLyqNg9nPfMxTH8p2Ed" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol": { + "keccak256": "0x64330e51de72e8d38cfc0eb5527d36baada46df4bc14233d3a8ecaf98098d69a", + "urls": [ + "bzz-raw://49aa45e5a26fc62e7af569cf915be8344adc78dceb6871c4c14bc5d115e59241", + "dweb:/ipfs/QmbTuW7kzPDYForDEPnaNQi6ZrmWqDxGVnHFiugnvTyq9K" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol": { + "keccak256": "0x8ab8cb12c8beba699c1a7f22ffa812ac553f7038326d0c0d0af77253005cfe73", + "urls": [ + "bzz-raw://7c7cba4ae16d0ca46ee0a365a204f7257ceaa892224604bf7c8e65c44737e46c", + "dweb:/ipfs/QmbQX5hJDKMwKdoo6QkdcusXQXH54SVCPe5hM1ycJZsg7y" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol": { + "keccak256": "0x20d36578e810e75346daf064813b76a177087214cae77628b1f9d43798cb52d1", + "urls": [ + "bzz-raw://475b6f3f1ba5d981d0c5f90b9e892d4f9f539f3b12196639b95770b5be4dbf6a", + "dweb:/ipfs/QmYyGrnR3vDt8Dqa2paQwTG9qrD6anAGFrDZmMra8KGC6s" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol": { + "keccak256": "0x9616f3bd0d7293c9723f2ddf86f9f7030fbd99213c9748557eec8f6d13b25420", + "urls": [ + "bzz-raw://205e713f5af46f52799e51774ac74dbeee4056de6ddba3c4d78a327536426c54", + "dweb:/ipfs/QmZ2ZqDwxdjpJbh91qwMfRhhQu4AMEsjUcsTEsdRV4NAys" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol": { + "keccak256": "0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49", + "urls": [ + "bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf", + "dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol": { + "keccak256": "0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3", + "urls": [ + "bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083", + "dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol": { + "keccak256": "0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0", + "urls": [ + "bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933", + "dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol": { + "keccak256": "0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c", + "urls": [ + "bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0", + "dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol": { + "keccak256": "0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc", + "urls": [ + "bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b", + "dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol": { + "keccak256": "0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972", + "urls": [ + "bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927", + "dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol": { + "keccak256": "0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901", + "urls": [ + "bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d", + "dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol": { + "keccak256": "0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e", + "urls": [ + "bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6", + "dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol": { + "keccak256": "0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625", + "urls": [ + "bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97", + "dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol": { + "keccak256": "0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb", + "urls": [ + "bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1", + "dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol": { + "keccak256": "0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875", + "urls": [ + "bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d", + "dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol": { + "keccak256": "0x35bcd6ca99c4c8d9f7d8413d1b92fb4a4d4a420ce3bf64b0fb01e68e6bcf2fa7", + "urls": [ + "bzz-raw://0ac14f98563f9c610c936c93e71eff657efaba1e1d892be6a215aa5cb1f63a24", + "dweb:/ipfs/QmVZZ8owwfDGLQTAzQJJqmYY4KsrChDagh5GBK7rChT5wb" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol": { + "keccak256": "0x8a44524af7deb96593f6b5606e9973654a113e1687809f2e45d4a91ba89862d5", + "urls": [ + "bzz-raw://32dd0b5d1946e0cd5c7b728086aafac50a62c061115afb8b41254589c8a6732b", + "dweb:/ipfs/QmR9QqtiAUPRLaRVv5wnth3NGPhdWB8rJmWYfz3o5Z1mWj" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol": { + "keccak256": "0x621d6dd5b8b7e827351459fff4ac87c16ba4656757592cf67de8b199aea4cf9a", + "urls": [ + "bzz-raw://345aa8c007ed8b96a74260d289545713f1d7180df270d67687e3a540a61fa5c0", + "dweb:/ipfs/QmNWCvpqSuar6UGLDVshUc7shUv3pt1J5FTf9VyZZ13wXL" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol": { + "keccak256": "0xb2b55968b26294139742adee6c155897c8334f4c6bf72f1940456cc84e6fbab9", + "urls": [ + "bzz-raw://e758a1fdcea4039b19f1252e4e2958f4a0e05517eb3e151784431533446c225f", + "dweb:/ipfs/QmRBG345abgyUeTnSpuxdK1WbK5pvwhSmvBEgW1mnoYqTq" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol": { + "keccak256": "0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9", + "urls": [ + "bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f", + "dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol": { + "keccak256": "0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28", + "urls": [ + "bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2", + "dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol": { + "keccak256": "0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680", + "urls": [ + "bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09", + "dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol": { + "keccak256": "0xf1f36bbbc40d03b96affa151affb47da75a1b69dc79f4b311841a072d12fdd22", + "urls": [ + "bzz-raw://9f4f188c2998ecbda28a389ad8038da15c2260b1df6a8d135b3d96422e292fda", + "dweb:/ipfs/QmeThR83tcaM4CmxQ2AamTafsgjcbGMfZtYcDHqw2CcwKa" + ], + "license": "BUSL-1.1" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol": { + "keccak256": "0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5", + "urls": [ + "bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28", + "dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol": { + "keccak256": "0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc", + "urls": [ + "bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0", + "dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol": { + "keccak256": "0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b", + "urls": [ + "bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075", + "dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol": { + "keccak256": "0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20", + "urls": [ + "bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2", + "dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol": { + "keccak256": "0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58", + "urls": [ + "bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd", + "dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol": { + "keccak256": "0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c", + "urls": [ + "bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e", + "dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol": { + "keccak256": "0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461", + "urls": [ + "bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc", + "dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol": { + "keccak256": "0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d", + "urls": [ + "bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2", + "dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol": { + "keccak256": "0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01", + "urls": [ + "bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af", + "dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol": { + "keccak256": "0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378", + "urls": [ + "bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f", + "dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol": { + "keccak256": "0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750", + "urls": [ + "bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82", + "dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol": { + "keccak256": "0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2", + "urls": [ + "bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a", + "dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol": { + "keccak256": "0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84", + "urls": [ + "bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e", + "dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol": { + "keccak256": "0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6", + "urls": [ + "bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc", + "dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol": { + "keccak256": "0xb0c90719820a97cdb712062c9c3372839b659c131f379f5156d521d9c57e3bd8", + "urls": [ + "bzz-raw://dfdd28f430d976f8ec7cb2c927502a33617329a03d0957a659f6a58ee1396a1c", + "dweb:/ipfs/QmaQLDzcUKgQ6UFu7uCewBYCGDMS3RNxbuj6GbxaCk4wM9" + ], + "license": "UNLICENSED" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol": { + "keccak256": "0xd9693c096fa2e23bdba9d24d0296554150da98a2643065ff61035266744d5350", + "urls": [ + "bzz-raw://67f9356573993de1d7a509ce008f2430d5b8ef7509378e9fd65d9a10dbc1f3e9", + "dweb:/ipfs/QmXC3wRWpPy43e13bHsCpDEv5L1Ju1wqUuxt6EfxivUxN5" + ], + "license": "UNLICENSED" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol": { + "keccak256": "0x4f78d60b0fd4bebb9d091db945c1908f1ab594c6332ef7e76cc6a27e36a6e2ef", + "urls": [ + "bzz-raw://1007be62aa5684ac636b45febfa43f69459ea25dcd1e9d944a50a7d6f05a6677", + "dweb:/ipfs/QmTY7SB6SGbyHEiheQuE4vCjK4sTcbDuhoBL94ncX9Aoon" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol": { + "keccak256": "0x88e3df882ad4e26ff793e786b237153adbda2a3a09133958b561659d5ebd4ada", + "urls": [ + "bzz-raw://0ad6c67e125b3d80476326ce1b06b8b22147edb7bec85e3be135afae513b7590", + "dweb:/ipfs/QmXwfH4CkqmNk8vDBPuMb1Hv1vBn58wV33XGtDpar8gAMf" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol": { + "keccak256": "0xe9096c53611537a121589b56b882fc4dd797d5cac60def708f794a15e3ca98ff", + "urls": [ + "bzz-raw://4092d5dd582b48a5f703e4361fc5fb66050b5fe3253891175275dc832bc8e045", + "dweb:/ipfs/QmXSTJJNx4rn2ByCaE6vxiHnkm366ZU7dScYH1JsUbVZ1V" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol": { + "keccak256": "0x0cb48e8187ff6c77f35f29f9d266f756d9d544dfe6a007f3f21bd10ff6ea4f21", + "urls": [ + "bzz-raw://df6452cb2e39b2af3bd839ac021fa62cdea399b34c8d5fce6f50b4e7a3f6eb13", + "dweb:/ipfs/QmNxDKoByW2NQnVNVsXGLEq9qtgJpAnk4Vt8fpqQwMG1oW" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol": { + "keccak256": "0xffd919489fab736fd18ac46c917c476b1eb1f8e2190f0c5ac87d969f17d07a16", + "urls": [ + "bzz-raw://0e30809702b1351fded69e75c13aaee1e8e161a20ad40c8176f66cc1cc737b29", + "dweb:/ipfs/Qmcke2GWTYGcpcY9k1vgRkkGvo2BQXYmzdkVgXj3x33p1r" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol": { + "keccak256": "0xc7c90e073e52af1da6c07e3d3f7477b064a89e78935c16e9872457df503c6830", + "urls": [ + "bzz-raw://cef1ae2d517e152616aea7f8f5c15fa1fbabbec8896a9c30a9eed35fb56b4f2f", + "dweb:/ipfs/QmeitPMQht2WfbR9ZLzwKWgThamdsJkobeaWo6ojTCoQG5" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol": { + "keccak256": "0xd8f419b25c648287b5b7f0923b069b2449c51e807c9153df39445f2f83e55f44", + "urls": [ + "bzz-raw://bb300a5bb62655073c7aa9cd2221e60e59ce904a0d73f7f5e06af7c9df3445ec", + "dweb:/ipfs/QmcYb2qFevymfkWhTqGaNH5HwK9MMUixzAKJJAdNQHSCbw" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol": { + "keccak256": "0x8e60b01e9bc801167b374dc119b41832d546afd43c143a0cd15ab1941198e121", + "urls": [ + "bzz-raw://bb1512762417dda9cd81fd9b41f590fd05888358fda1c2ab7e79e0cfabf61ec4", + "dweb:/ipfs/QmPAgBwdjLz29vE5L1Jth1Wvx6TTM1ig97amVtAyDFF61Q" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol": { + "keccak256": "0x0c5cb54ec6b18e77aa653f7d774ac9d010684dafc96794d1d02f12b6885cc348", + "urls": [ + "bzz-raw://24c5a8ba8d92c16ec3047229167528f57b38cbd64882140014126ca51ab14574", + "dweb:/ipfs/QmXQsMDtZ3qNmjnr2LYgctBpPKxffuC6EeWHvFUtLBS5st" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol": { + "keccak256": "0xe6c93840c612592686732dd516550816eb77d6cde92514220eacb72443dcb9b9", + "urls": [ + "bzz-raw://a6a00fb60b7ac66e746f0471c2262fc98febafeb8acad8785d38ce1ddc4cc991", + "dweb:/ipfs/QmboboJskbXBbsyAGGRbW4JQCPJo9WiLFy7nwQxGVS9UhZ" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol": { + "keccak256": "0x6c5bc31c117033dd35fa7ab3b13b1647a4b449c5f5b4cbff41bce8a63529ab97", + "urls": [ + "bzz-raw://01aa1d3f3b8e2fd4b544312d96916b16b97e01ab740e2bae1137723b2f1a31b1", + "dweb:/ipfs/QmVMemJ4MSgi6y9NxDdSeB6QbJRtCWojJNxzs3CRLT56EA" + ], + "license": "LZBL-1.2" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/test.sol": { + "keccak256": "0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b", + "urls": [ + "bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240", + "dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k" + ], + "license": "GPL-3.0-or-later" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Base.sol": { + "keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c", + "urls": [ + "bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224", + "dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdAssertions.sol": { + "keccak256": "0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60", + "urls": [ + "bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b", + "dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdChains.sol": { + "keccak256": "0x598b85609125830885b8fb54a18f447d04f8dd799aca3de81baef35eb6b783c0", + "urls": [ + "bzz-raw://c9c128aae4f5668d8c8f71e9e6d9379d8451b8713d139cb66a02d23bc1c75f69", + "dweb:/ipfs/QmVRihXHWi2yg9CcAhzKf63Y7m6gWz4P1giGMhXUHT3DFu" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdCheats.sol": { + "keccak256": "0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7", + "urls": [ + "bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2", + "dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdError.sol": { + "keccak256": "0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77", + "urls": [ + "bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6", + "dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdInvariant.sol": { + "keccak256": "0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6", + "urls": [ + "bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d", + "dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdJson.sol": { + "keccak256": "0x8f914dbd016bd0e318fe2b8bd556fbc8256c7cddc24e3e4fcb9f3c1c1935592d", + "urls": [ + "bzz-raw://19e704df493dde38323303b07d18cadfeb4dcadf1ddc2301add4aea9474fbb5e", + "dweb:/ipfs/QmZasuGiLK8LHwWtvpqEBxUR6QFY6GdzLMTJ9q7CMf8PNZ" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdMath.sol": { + "keccak256": "0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2", + "urls": [ + "bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92", + "dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdStorage.sol": { + "keccak256": "0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811", + "urls": [ + "bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32", + "dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdStyle.sol": { + "keccak256": "0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d", + "urls": [ + "bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8", + "dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/StdUtils.sol": { + "keccak256": "0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0", + "urls": [ + "bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61", + "dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Test.sol": { + "keccak256": "0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0", + "urls": [ + "bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765", + "dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/Vm.sol": { + "keccak256": "0x87ba9f3edc254e529db9e3129c954391adcc7fc8574203767979d8d2f1e724b9", + "urls": [ + "bzz-raw://4d16c08d80d9f2869deb6350642cf5af624d21fce6b3b023abbcdedc62e195fe", + "dweb:/ipfs/QmURpnnFECPKt3i7P7jQRZpr4ZBXjRGcZ9KzcbKzsgYR2W" + ], + "license": "MIT OR Apache-2.0" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/console.sol": { + "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba", + "urls": [ + "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70", + "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/console2.sol": { + "keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea", + "urls": [ + "bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973", + "dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/interfaces/IMulticall3.sol": { + "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a", + "urls": [ + "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0", + "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/mocks/MockERC20.sol": { + "keccak256": "0xd8703f49411737ecf8d411f8fa66b2bf0ef972ba28b7a4adf1748c63df1bf682", + "urls": [ + "bzz-raw://b7c10a6b8112f6fe3cdccb6240ecd382765216b1a82e9a86a0fec8f5e09eadd1", + "dweb:/ipfs/QmdRvPCU4RkjMHsTu3Ric1ZEF1AWDNLp78unFC5aWP17xq" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/mocks/MockERC721.sol": { + "keccak256": "0xa24468244abb66e663fb7eee6463cb518eb9a7c14e1071548ff564cca825bbca", + "urls": [ + "bzz-raw://145585a2194aa6e2d30edfe709ef2814e20b1b4540469aa6a8f50c841fcb9070", + "dweb:/ipfs/QmZrwbvtpbtTxqbW5phUrwb3F1tBiPSQc6jZJAXBfsBsAh" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/safeconsole.sol": { + "keccak256": "0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381", + "urls": [ + "bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae", + "dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol": { + "keccak256": "0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a", + "urls": [ + "bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535", + "dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq" + ], + "license": "Unlicense" + }, + "node_modules/@openzeppelin/contracts/access/AccessControl.sol": { + "keccak256": "0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308", + "urls": [ + "bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80", + "dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/access/IAccessControl.sol": { + "keccak256": "0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41", + "urls": [ + "bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26", + "dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/access/Ownable.sol": { + "keccak256": "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb", + "urls": [ + "bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6", + "dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "keccak256": "0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7", + "urls": [ + "bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f", + "dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70", + "urls": [ + "bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c", + "dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "keccak256": "0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff", + "urls": [ + "bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d", + "dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "keccak256": "0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386", + "urls": [ + "bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0", + "dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": { + "keccak256": "0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784", + "urls": [ + "bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd", + "dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "keccak256": "0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4", + "urls": [ + "bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7", + "dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49", + "urls": [ + "bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22", + "dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "keccak256": "0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1", + "urls": [ + "bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02", + "dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Address.sol": { + "keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721", + "urls": [ + "bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245", + "dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Context.sol": { + "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", + "urls": [ + "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12", + "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Pausable.sol": { + "keccak256": "0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd", + "urls": [ + "bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc", + "dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol": { + "keccak256": "0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236", + "urls": [ + "bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02", + "dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Strings.sol": { + "keccak256": "0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792", + "urls": [ + "bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453", + "dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "keccak256": "0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf", + "urls": [ + "bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c", + "dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { + "keccak256": "0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133", + "urls": [ + "bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8", + "dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "keccak256": "0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b", + "urls": [ + "bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df", + "dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "keccak256": "0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d", + "urls": [ + "bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875", + "dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": { + "keccak256": "0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe", + "urls": [ + "bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c", + "dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { + "keccak256": "0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72", + "urls": [ + "bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc", + "dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol": { + "keccak256": "0xed6b702230a66640a0f1dd96106dd697e821b6b0fbb2eeab1c09d88d7c411a67", + "urls": [ + "bzz-raw://766996a7c9fb936ae08fc451c6bf6c3a9b49aca26002fb76c7fd1833fca459d8", + "dweb:/ipfs/QmaFKhhPJCNxESLDoio7aR2KSvi4Y8YKirrb9tu4LM1vDp" + ], + "license": "MIT" + }, + "test/mocks/InspectorMock.sol": { + "keccak256": "0xf2b8566a542cf017b9b4ebe9b34fb083e2b7df46b5678b3a370277d7016cb66f", + "urls": [ + "bzz-raw://deff5a006c9de835adb7f94e2732b0fa8541273c63455a42f2fb842998d4e403", + "dweb:/ipfs/QmTKRTgBYjnVu4CBUfTwytffWRRRBJC613XBhypgh79pN8" + ], + "license": "UNLICENSED" + }, + "test/onft/ONFTBaseTestHelper.sol": { + "keccak256": "0xc391362caf12a23d771d1dd8fa5e072ae7cff39266393f7deeae6de502f5dfb8", + "urls": [ + "bzz-raw://2567c9a0dd3e4f035dacb37e784ea5b55faa5fc0a42415e060355de3a969edd6", + "dweb:/ipfs/QmWfsj1mFmeyMq99s63We4pUsL6jRa6wB9VQmVE1FCNCGN" + ], + "license": "UNLICENSED" + }, + "test/onft/onft721/ONFT721Base.sol": { + "keccak256": "0x9213f57ec1c112bede376fe220bc68afd33c7c76041b940b9d1625232a2133ba", + "urls": [ + "bzz-raw://851bedb87080caa3aac2f72dde10620ed0422a3aff758a575464d4f20c18fcff", + "dweb:/ipfs/QmXaUAPghSiLFhHvPa2ccdkrCnpywudVkEb6wEJQrEs38F" + ], + "license": "UNLICENSED" + }, + "test/onft/onft721/mocks/ERC721Mock.sol": { + "keccak256": "0x6b9a321f3f1e9de4bb6ec64f01264717108e77da7173a3e735d3830542a4e8fe", + "urls": [ + "bzz-raw://3cd5b0ecd6121979c0289d8d53c24286793e43c31d337c61fdea408ec1e78135", + "dweb:/ipfs/QmTrhHATg38ZkspBW1qz5dXcJHeHvMo42PoM3WZtq6KSGY" + ], + "license": "UNLICENSED" + }, + "test/onft/onft721/mocks/ONFT721AdapterMock.sol": { + "keccak256": "0xe6a5e529274226003161bfca63fbceab6aaf10f91ef62d6f1d36cabb81da9df0", + "urls": [ + "bzz-raw://ee5020c13278a047c22e2bdd86703c2c75ce1e76530005f7e3bce82e0dbf2d3b", + "dweb:/ipfs/QmQyfe2kn6Zbgu6vw2ss5kBjsTtBZzkFNtbD3mpf3T6Fx8" + ], + "license": "UNLICENSED" + }, + "test/onft/onft721/mocks/ONFT721Mock.sol": { + "keccak256": "0xc31f9452ff2400b8279b490bdfe117aaaa27d1fcc35c1e6126a1cbc76a3be675", + "urls": [ + "bzz-raw://dc38695a66a85a73b7098513e0fd65d5bf37751f8eb4d3f49dc937f0d6815b8c", + "dweb:/ipfs/QmV7Swzcstxv8L3n4ZFuS7YBQD4xsHwLDRqvwyoL8bFRtw" + ], + "license": "UNLICENSED" + } + }, + "version": 1 + }, + "id": 126 +} diff --git a/packages/test-devtools-evm-foundry/artifacts/TestHelperOz5.sol/TestHelperOz5.json b/packages/test-devtools-evm-foundry/artifacts/TestHelperOz5.sol/TestHelperOz5.json index 6c8f70146..f0f02397b 100644 --- a/packages/test-devtools-evm-foundry/artifacts/TestHelperOz5.sol/TestHelperOz5.json +++ b/packages/test-devtools-evm-foundry/artifacts/TestHelperOz5.sol/TestHelperOz5.json @@ -809,7 +809,7 @@ }, "deployedBytecode": { "object": "0x608060405260043610620002335760003560e01c80637982cf42116200012f578063b954fdf611620000ad578063e20c9f711162000078578063e20c9f7114620006e7578063ec53eaa014620006ff578063f93e1d611462000716578063fa7626d4146200075c578063faed6c58146200077857600080fd5b8063b954fdf6146200062e578063ba414fa61462000673578063baead19c146200068b578063defd9da614620006a657600080fd5b8063a29c898411620000fa578063a29c8984146200058d578063ae6ce40014620005a4578063b1dcf5c814620005c9578063b5508aa914620005f1578063b752b72a146200060957600080fd5b80637982cf4214620004f557806385226c811462000529578063916a17c61462000550578063997cff1b146200056857600080fd5b80633bbd6a9411620001bd5780635e7baa4211620001885780635e7baa4214620004175780635ea0fefe146200043c57806366d9a9a014620004725780636e1775e31462000499578063703ca25414620004d057600080fd5b80633bbd6a9414620003805780633e5e3c2314620003975780633f7286f414620003af578063518e8ab014620003c757600080fd5b80631ed7831c11620001fe5780631ed7831c14620002c95780632113ce6214620002f95780632a35d25014620003345780632ade3880146200035957600080fd5b8063090852b614620002405780630a9254e4146200026757806312cc947f146200027f5780631cc4652514620002a457600080fd5b366200023b57005b600080fd5b3480156200024d57600080fd5b50620002656200025f3660046200478c565b6200079d565b005b3480156200027457600080fd5b5062000265620007b9565b3480156200028c57600080fd5b50620002656200029e3660046200480e565b620007c5565b348015620002b157600080fd5b5062000265620002c336600462004863565b620010c9565b348015620002d657600080fd5b50620002e1620026aa565b604051620002f09190620048e0565b60405180910390f35b3480156200030657600080fd5b506021546200031b906001600160801b031681565b6040516001600160801b039091168152602001620002f0565b3480156200034157600080fd5b50620002e162000353366004620049ef565b6200270e565b3480156200036657600080fd5b506200037162002825565b604051620002f0919062004b0c565b620002656200039136600462004b8f565b62002973565b348015620003a457600080fd5b50620002e162002a33565b348015620003bc57600080fd5b50620002e162002a95565b348015620003d457600080fd5b50620003ec620003e63660046200480e565b62002af7565b6040805161ffff90941684526001600160801b039283166020850152911690820152606001620002f0565b3480156200042457600080fd5b50620002656200043636600462004c49565b62002b15565b3480156200044957600080fd5b50620004616200045b36600462004ca9565b62002fc9565b6040519015158152602001620002f0565b3480156200047f57600080fd5b506200048a62002ffe565b604051620002f0919062004cd8565b348015620004a657600080fd5b50620004be620004b836600462004d91565b620030e8565b604051620002f0949392919062004e09565b348015620004dd57600080fd5b5062000265620004ef36600462004e5f565b6200310c565b3480156200050257600080fd5b506200051a6200051436600462004ca9565b620032d3565b604051620002f0919062004f03565b3480156200053657600080fd5b5062000541620033c1565b604051620002f0919062004f18565b3480156200055d57600080fd5b506200048a6200349b565b3480156200057557600080fd5b50620002656200058736600462004d91565b62003585565b620002656200059e36600462004f2d565b620035dd565b348015620005b157600080fd5b5062000265620005c336600462004fbd565b62003669565b348015620005d657600080fd5b50620005e2620186a081565b604051908152602001620002f0565b348015620005fe57600080fd5b50620005416200370a565b3480156200061657600080fd5b50620002656200062836600462004fdd565b620037e4565b3480156200063b57600080fd5b50620006536200064d3660046200480e565b620037f3565b604080516001600160801b039093168352602083019190915201620002f0565b3480156200068057600080fd5b50620004616200380e565b3480156200069857600080fd5b50620005e264e8d4a5100081565b348015620006b357600080fd5b5062000265620006c536600462005014565b602180546001600160801b0319166001600160801b0392909216919091179055565b348015620006f457600080fd5b50620002e162003945565b620002656200071036600462005034565b620039a7565b3480156200072357600080fd5b506200073b620007353660046200480e565b62003ae2565b604080516001600160801b03938416815292909116602083015201620002f0565b3480156200076957600080fd5b50600754620004619060ff1681565b3480156200078557600080fd5b506200026562000797366004620050a3565b62003af1565b620007b5826001600160a01b03831660008062002b15565b5050565b620007c362003b83565b565b6000620007d3838362003bd1565b63ffffffff811660009081526020805260408120549192506001600160a01b03909116908163402f846862000809878762003bf8565b62000815888862003c0d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015263ffffffff1660248201526044016040805180830381865afa15801562000864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200088a919062005126565b50905060008190506000826001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa158015620008d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008f991906200517c565b50509050806001600160401b03166003036200105b576000826001600160a01b0316639c33abf76200092c8a8a62003c0d565b620009388b8b62003bf8565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526001600160a01b0316602482015260026044820152606401600060405180830381865afa15801562000990573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009ba919081019062005216565b9050600081806020019051810190620009d49190620052ca565b60800151600081518110620009ed57620009ed620053b1565b60200260200101519050600062000a058a8a62003c1f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945062000a4a92508d91508c905062003c31565b60405162000a5a929190620053c7565b6040518091039020905060606000630223536e60e01b8484606460405160240162000a8893929190620053d7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905060006001600160a01b03861663f010cb238d8b8562000ade426103e86200541b565b6040518563ffffffff1660e01b815260040162000aff949392919062005431565b602060405180830381865afa15801562000b1d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b43919062005474565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052909150600090605c0160408051808303601f190181529082905280516020909101206338d07aa960e21b82526001600483015260248201819052915060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562000bf3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c1991906200548e565b6040805160208101939093528281019190915260f89290921b6001600160f81b03191660608201528151604181830301815260619091019091529650600094506001935062000c6792505050565b60405190808252806020026020018201604052801562000cc457816020015b6040805160a081018252600080825260208201819052606092820183905282820152608081019190915281526020019060019003908162000c865790505b5090506040518060a001604052808d63ffffffff1681526020018a6001600160a01b03168152602001838152602001426103e862000d0391906200541b565b8152602001848152508160008151811062000d225762000d22620053b1565b602090810291909101015260405163b143044b60e01b81526001600160a01b0387169063b143044b9062000d5b908490600401620054c8565b600060405180830381600087803b15801562000d7657600080fd5b505af115801562000d8b573d6000803e3d6000fd5b505050506000630894edf160e01b868660405160240162000dae9291906200557a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905060006001600160a01b03881663f010cb238f8d8562000e04426103e86200541b565b6040518563ffffffff1660e01b815260040162000e25949392919062005431565b602060405180830381865afa15801562000e43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e69919062005474565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052909150600090605c0160408051808303601f190181529082905280516020909101206338d07aa960e21b82526001600483015260248201819052915060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562000f19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f3f91906200548e565b60408051602081018490529081018290526001600160f81b031960f885901b1660608201529295509093509150606101604051602081830303815290604052985050505050506040518060a001604052808e63ffffffff1681526020018b6001600160a01b03168152602001828152602001426103e862000fc191906200541b565b8152602001858152508260008151811062000fe05762000fe0620053b1565b602090810291909101015260405163b143044b60e01b81526001600160a01b0388169063b143044b9062001019908590600401620054c8565b600060405180830381600087803b1580156200103457600080fd5b505af115801562001049573d6000803e3d6000fd5b505050505050505050505050620010c0565b6040516312cc947f60e01b81526001600160a01b038416906312cc947f906200108b908a908a906004016200559e565b600060405180830381600087803b158015620010a657600080fd5b505af1158015620010bb573d6000803e3d6000fd5b505050505b50505050505050565b8160ff166001600160401b03811115620010e757620010e7620048f5565b60405190808252806020026020018201604052801562001111578160200160208202803683370190505b5080516200112891602291602090910190620044f4565b508160ff166001600160401b03811115620011475762001147620048f5565b60405190808252806020026020018201604052801562001171578160200160208202803683370190505b50805162001188916023916020909101906200455e565b508160ff166001600160401b03811115620011a757620011a7620048f5565b604051908082528060200260200182016040528015620011d1578160200160208202803683370190505b508051620011e891602491602090910190620044f4565b508160ff166001600160401b03811115620012075762001207620048f5565b60405190808252806020026020018201604052801562001231578160200160208202803683370190505b5080516200124891602591602090910190620044f4565b506040805160018082528183019092529060208083019080368337505081516200127a926026925060200190620044f4565b506040516001625e79b760e01b0319815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620012cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012f59190620055b4565b602680546000906200130b576200130b620053b1565b6000918252602082200180546001600160a01b0319166001600160a01b0393909316929092179091555b8260ff168160ff1610156200147e57600062001353826001620055d4565b60ff1690508060226001018360ff1681548110620013755762001375620053b1565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055508030604051620013b8906200460f565b63ffffffff90921682526001600160a01b03166020820152604001604051809103906000f080158015620013f0573d6000803e3d6000fd5b506022805460ff85169081106200140b576200140b620053b1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506200147460226000018360ff1681548110620014595762001459620053b1565b6000918252602090912001546001600160a01b031662003669565b5060010162001335565b50306040516200148e906200461d565b6001600160a01b039091168152602001604051809103906000f080158015620014bb573d6000803e3d6000fd5b50602780546001600160a01b0319166001600160a01b039290921691909117905560005b8260ff168160ff161015620024da576000826001811115620015055762001505620055f0565b03620022d157600060226000018260ff1681548110620015295762001529620053b1565b9060005260206000200160009054906101000a90046001600160a01b03169050308164e8d4a51000620186a060405162001563906200462b565b6001600160a01b03948516815293909216602084015260408301526060820152608001604051809103906000f080158015620015a3573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03929092169190911790556040518190620015d49062004639565b6001600160a01b039091168152602001604051809103906000f08015801562001601573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b03929092169190911790556022805460ff84169081106200163c576200163c620053b1565b60009182526020909120015460285460405163e8964e8160e01b81526001600160a01b03918216600482015291169063e8964e8190602401600060405180830381600087803b1580156200168f57600080fd5b505af1158015620016a4573d6000803e3d6000fd5b5050505060226000018260ff1681548110620016c457620016c4620053b1565b60009182526020909120015460295460405163e8964e8160e01b81526001600160a01b03918216600482015291169063e8964e8190602401600060405180830381600087803b1580156200171757600080fd5b505af11580156200172c573d6000803e3d6000fd5b5050602854602480546001600160a01b039092169350915060ff85169081106200175a576200175a620053b1565b600091825260209091200180546001600160a01b0319166001600160a01b039283161790556029546025805491909216919060ff8516908110620017a257620017a2620053b1565b6000918252602082200180546001600160a01b03939093166001600160a01b031990931692909217909155604080516001808252818301909252908160200160208202803683370190505090503081600081518110620018065762001806620053b1565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183526000939192909183019080368337505060285482519293506001600160a01b031691839150600090620018645762001864620053b1565b6001600160a01b039283166020918202929092010152602954825191169082906001908110620018985762001898620053b1565b6001600160a01b0392831660209182029290920101526027546040518592600092859291169030908790620018cd9062004647565b620018de9695949392919062005606565b604051809103906000f080158015620018fb573d6000803e3d6000fd5b50602a80546001600160a01b0319166001600160a01b03929092169190911790556040516200192a9062004655565b604051809103906000f08015801562001947573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03928316908117909155602a5460405163c7b2370b60e01b815260048101929092529091169063c7b2370b90602401600060405180830381600087803b158015620019a757600080fd5b505af1158015620019bc573d6000803e3d6000fd5b50505050836001620019cf9190620055d4565b60275460405183916001600160a01b0316906026906001908790620019f49062004663565b62001a059695949392919062005664565b604051809103906000f08015801562001a22573d6000803e3d6000fd5b50602b80546001600160a01b0319166001600160a01b0392909216919091179055604051670de0b6b3a76400009062001a5b9062004671565b908152602001604051809103906000f08015801562001a7e573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03928316908117909155602b5460405163c7b2370b60e01b815260048101929092529091169063c7b2370b90602401600060405180830381600087803b15801562001ade57600080fd5b505af115801562001af3573d6000803e3d6000fd5b50505050505062001b17604051806040016040528060608152602001606081525090565b8460ff166001600160401b0381111562001b355762001b35620048f5565b60405190808252806020026020018201604052801562001b9757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a0820152825260001990920191018162001b545790505b50815260ff85166001600160401b0381111562001bb85762001bb8620048f5565b60405190808252806020026020018201604052801562001c0c57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018162001bd75790505b50602082015260005b8560ff168160ff161015620021f9578060ff168460ff160315620021f057600062001c42826001620055d4565b60408051600180825281830190925260ff9290921692506000919060208083019080368337505060408051600080825260208201909252602b54845194955090936001600160a01b03909116925084919062001ca25762001ca2620053b1565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020015b62001cdc6200467f565b81526020019060019003908162001cd257905050905060006040518060c0016040528060646001600160401b03168152602001855160ff168152602001845160ff168152602001600060ff16815260200185815260200184815250905060405180604001604052808663ffffffff168152602001828152508260008151811062001d6a5762001d6a620053b1565b60209081029190910101526028546040516329460b0b60e01b81526001600160a01b03909116906329460b0b9062001da790859060040162005705565b600060405180830381600087803b15801562001dc257600080fd5b505af115801562001dd7573d6000803e3d6000fd5b50506029546040516329460b0b60e01b81526001600160a01b0390911692506329460b0b915062001e0d90859060040162005705565b600060405180830381600087803b15801562001e2857600080fd5b505af115801562001e3d573d6000803e3d6000fd5b50600092506001915062001e4e9050565b60405190808252806020026020018201604052801562001e8b57816020015b62001e77620046e8565b81526020019060019003908162001e6d5790505b506040805180820182526127108152602a546001600160a01b0316602080830191909152825180840190935263ffffffff8a1683528201819052825192935091839060009062001edf5762001edf620053b1565b602090810291909101015260285460405163c14c434960e01b81526001600160a01b039091169063c14c43499062001f1c908590600401620057e3565b600060405180830381600087803b15801562001f3757600080fd5b505af115801562001f4c573d6000803e3d6000fd5b50506040805160c08101825263ffffffff8b168152611388602082018190529181019190915261271060608201526402540be40060808201526021546001600160801b031660a08201528b518051919550935060ff8b1692508210905062001fb85762001fb8620053b1565b602002602001018190525060405180608001604052808663ffffffff1681526020016113886001600160401b0316815260200161271061ffff1681526020016402540be4006001600160801b031681525087602001518760ff1681518110620020255762002025620053b1565b60200260200101819052506000602260050160009054906101000a90046001600160a01b03166001600160a01b031663c18403276040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020af919062005854565b60408051600180825281830190925291925060009190816020015b620020fe60408051808201825260008082528251606081018452818152602081810183905293810191909152909182015290565b815260200190600190039081620020ca57905050905060405180604001604052808863ffffffff168152602001604051806060016040528085600162002145919062005874565b6001600160801b03168152600160208201819052604090910152905281518290600090620021775762002177620053b1565b60209081029190910101526027546040516318b0dbfb60e11b81526001600160a01b0390911690633161b7f690620021b4908490600401620058a2565b600060405180830381600087803b158015620021cf57600080fd5b505af1158015620021e4573d6000803e3d6000fd5b50505050505050505050505b60010162001c15565b50602a548151604051633d85ac3360e01b81526001600160a01b0390921691633d85ac33916200222c9160040162005916565b600060405180830381600087803b1580156200224757600080fd5b505af11580156200225c573d6000803e3d6000fd5b5050602b5460208401516040516352d3b87160e01b81526001600160a01b0390921693506352d3b87192506200229591600401620059a8565b600060405180830381600087803b158015620022b057600080fd5b505af1158015620022c5573d6000803e3d6000fd5b505050505050620024d1565b6001826001811115620022e857620022e8620055f0565b036200248d5760003060226000018360ff16815481106200230d576200230d620053b1565b6000918252602090912001546040516001600160a01b039091169062002333906200472d565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562002367573d6000803e3d6000fd5b50905060226000018260ff1681548110620023865762002386620053b1565b60009182526020909120015460405163e8964e8160e01b81526001600160a01b0383811660048301529091169063e8964e8190602401600060405180830381600087803b158015620023d757600080fd5b505af1158015620023ec573d6000803e3d6000fd5b505050508060226002018360ff16815481106200240d576200240d620053b1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060226003018360ff1681548110620024585762002458620053b1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050620024d1565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206c696272617279207479706560601b60448201526064015b60405180910390fd5b600101620014df565b5060005b8260ff168160ff161015620026a557600060226000018260ff16815481106200250b576200250b620053b1565b60009182526020822001546001600160a01b031691505b8460ff168160ff1610156200269a578060ff168360ff16031562002691576001600160a01b03821663aafea3126200255c836001620055d4565b6024805460ff8816908110620025765762002576620053b1565b60009182526020909120015460405160e084901b6001600160e01b031916815260ff90921660048301526001600160a01b03166024820152604401600060405180830381600087803b158015620025cc57600080fd5b505af1158015620025e1573d6000803e3d6000fd5b50505050816001600160a01b031663a718531b826001620026039190620055d4565b6025805460ff88169081106200261d576200261d620053b1565b600091825260208220015460405160e085901b6001600160e01b031916815260ff90931660048401526001600160a01b031660248301526044820152606401600060405180830381600087803b1580156200267757600080fd5b505af11580156200268c573d6000803e3d6000fd5b505050505b60010162002522565b5050600101620024de565b505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200270457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620026e5575b5050505050905090565b60608160ff166001600160401b038111156200272e576200272e620048f5565b60405190808252806020026020018201604052801562002758578160200160208202803683370190505b509050825b620027698385620055d4565b60ff168160ff161015620028125760ff81166000908152602080805260408083205481516001600160a01b0390911692810192909252309082015260016060820152620027ca90879060800160405160208183030381529060405262003c43565b90508083620027da878562005a1d565b60ff1681518110620027f057620027f0620053b1565b6001600160a01b0390921660209283029190910190910152506001016200275d565b506200281e816200310c565b9392505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200296a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562002952578382906000526020600020018054620028be9062005a39565b80601f0160208091040260200160405190810160405280929190818152602001828054620028ec9062005a39565b80156200293d5780601f1062002911576101008083540402835291602001916200293d565b820191906000526020600020905b8154815290600101906020018083116200291f57829003601f168201915b5050505050815260200190600101906200289c565b50505050815250508152602001906001019062002849565b50505050905090565b63ffffffff871660009081526020805260408120546001600160a01b03169080806200299f8962003ca2565b925092509250836001600160a01b03166391d20fa18284908d8b8d898d8d604051806020016040528060008152506040518a63ffffffff1660e01b8152600401620029f1979695949392919062005a75565b6000604051808303818589803b15801562002a0b57600080fd5b5088f115801562002a20573d6000803e3d6000fd5b5050505050505050505050505050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562002704576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620026e5575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562002704576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620026e5575050505050905090565b600080600062002b08858562003d9f565b9250925092509250925092565b63ffffffff841660009081526020805260409020546001600160a01b031662002b815760405162461bcd60e51b815260206004820152601b60248201527f656e64706f696e74206e6f7420796574207265676973746572656400000000006044820152606401620024c8565b63ffffffff84166000908152601d6020908152604080832086845290915281209062002bad8262003e1d565b905060008460000362002bcd5762002bc58362003e1d565b905062002be1565b84821162002bdc578162002bde565b845b90505b8015620010c0578062002bf48162005ac9565b915050600062002c048462003e3b565b6000818152601e602052604081208054929350909162002c249062005a39565b80601f016020809104026020016040519081016040528092919081815260200182805462002c529062005a39565b801562002ca35780601f1062002c775761010080835404028352916020019162002ca3565b820191906000526020600020905b81548152906001019060200180831162002c8557829003601f168201915b505060405163997cff1b60e01b8152939450309363997cff1b935062002cd2925085915086906004016200557a565b60006040518083038186803b15801562002ceb57600080fd5b505afa15801562002d00573d6000803e3d6000fd5b50506040516312cc947f60e01b81523092506312cc947f915062002d2990849060040162004f03565b600060405180830381600087803b15801562002d4457600080fd5b505af115801562002d59573d6000803e3d6000fd5b5050506000838152601f6020526040812080549192509062002d7b9062005a39565b80601f016020809104026020016040519081016040528092919081815260200182805462002da99062005a39565b801562002dfa5780601f1062002dce5761010080835404028352916020019162002dfa565b820191906000526020600020905b81548152906001019060200180831162002ddc57829003601f168201915b5050505050905062002e0e81600262003eac565b1562002eca5760008062002e228362003ec2565b604051919350915081906000906001600160a01b0383169085908381818185875af1925050503d806000811462002e76576040519150601f19603f3d011682016040523d82523d6000602084013e62002e7b565b606091505b505090508062002ec55760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401620024c8565b505050505b62002ed781600162003eac565b1562002f39576040516307629f5560e51b8152309063ec53eaa09062002f04908590859060040162005ae3565b600060405180830381600087803b15801562002f1f57600080fd5b505af115801562002f34573d6000803e3d6000fd5b505050505b6001600160a01b0387161580159062002f5a575062002f5a81600362003eac565b1562002fc0576040516328a7226160e21b8152309063a29c89849062002f8b908590859088908d9060040162005b0c565b600060405180830381600087803b15801562002fa657600080fd5b505af115801562002fbb573d6000803e3d6000fd5b505050505b50505062002be1565b61ffff82166000908152601d6020908152604080832084845290915281208162002ff38262003e1d565b119150505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200296a5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620030cf57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620030905790505b5050505050815250508152602001906001019062003022565b600036600080620030fb87878762003fb9565b935093509350935093509350935093565b805160005b81811015620026a5576000838281518110620031315762003131620053b1565b6020026020010151905060005b83811015620032c857828114620032bf576000858281518110620031665762003166620053b1565b602002602001015190506000816001600160a01b0316635e280f116040518163ffffffff1660e01b8152600401602060405180830381865afa158015620031b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031d79190620055b4565b6001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200323b919062005b57565b9050836001600160a01b0316633400288b826200325e856001600160a01b031690565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b158015620032a357600080fd5b505af1158015620032b8573d6000803e3d6000fd5b5050505050505b6001016200313e565b505060010162003111565b61ffff82166000908152601d602090815260408083208484529091528120606091620032ff8262003e1d565b1115620033ba576000620033138262004015565b6000818152601e60205260409020805491925090620033329062005a39565b80601f0160208091040260200160405190810160405280929190818152602001828054620033609062005a39565b8015620033b15780601f106200338557610100808354040283529160200191620033b1565b820191906000526020600020905b8154815290600101906020018083116200339357829003601f168201915b50505050509250505b5092915050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200296a578382906000526020600020018054620034079062005a39565b80601f0160208091040260200160405190810160405280929190818152602001828054620034359062005a39565b8015620034865780601f106200345a5761010080835404028352916020019162003486565b820191906000526020600020905b8154815290600101906020018083116200346857829003601f168201915b505050505081526020019060010190620033e5565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200296a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200356c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200352d5790505b50505050508152505081526020019060010190620034bf565b600062003593848462004083565b9050818114620035d75760405162461bcd60e51b815260206004820152600e60248201526d0ceead2c840dcdee840dac2e8c6d60931b6044820152606401620024c8565b50505050565b30633bbd6a94620035ef878762003bd1565b620035fb888862003bf8565b8686866200360a8c8c620040a0565b6040518863ffffffff1660e01b81526004016200362e979695949392919062005b77565b600060405180830381600087803b1580156200364957600080fd5b505af11580156200365e573d6000803e3d6000fd5b505050505050505050565b8060206000836001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620036ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036d3919062005b57565b63ffffffff168152602081019190915260400160002080546001600160a01b0319166001600160a01b039290921691909117905550565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200296a578382906000526020600020018054620037509062005a39565b80601f01602080910402602001604051908101604052809291908181526020018280546200377e9062005a39565b8015620037cf5780601f10620037a357610100808354040283529160200191620037cf565b820191906000526020600020905b815481529060010190602001808311620037b157829003601f168201915b5050505050815260200190600101906200372e565b620007b5828260008062002b15565b600080620038028484620040b2565b915091505b9250929050565b600754600090610100900460ff1615620038315750600754610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620039405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620038c2917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005bd9565b60408051601f1981840301815290829052620038de9162005c0c565b6000604051808303816000865af19150503d80600081146200391d576040519150601f19603f3d011682016040523d82523d6000602084013e62003922565b606091505b50915050808060200190518101906200393c919062005c2a565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562002704576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620026e5575050505050905090565b600060206000620039b9868662003bd1565b63ffffffff16815260208101919091526040016000908120546001600160a01b0316915080620039e984620040fe565b915091506000604051806060016040528062003a06898962003c0d565b63ffffffff16815260200162003a1d8989620041f5565b815260200162003a2e898962004207565b6001600160401b0316905290506001600160a01b038416630c0c389e84848462003a598c8c62003bf8565b62003a658d8d62004083565b62003a718e8e620040a0565b604051806020016040528060008152506040518963ffffffff1660e01b815260040162003aa49695949392919062005c48565b6000604051808303818589803b15801562003abe57600080fd5b5088f115801562003ad3573d6000803e3d6000fd5b50505050505050505050505050565b6000806200380284846200422e565b600062003aff858562003bd1565b9050600062003b0f868662004292565b63ffffffff83166000908152601d60209081526040808320848452909152812091925062003b3e888862004083565b905062003b4c8282620042a4565b6000818152601e6020526040902062003b67888a8362005d11565b506000818152601f602052604090206200365e86888362005d11565b60405162003b91906200473b565b604051809103906000f08015801562003bae573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055565b600062003be36031602d848662005dde565b62003bee9162005e0a565b60e01c9392505050565b60006200281e62003c0a848462004292565b90565b600062003be3600d6009848662005dde565b36600062003802605182858762005dde565b36600062003802836051818762005dde565b6000808360405160200162003c59919062005c0c565b60408051601f198184030181529082905262003c7a91859060200162005e39565b60405160208183030381529060405290508051602082016000f09150813b620033ba57600080fd5b600080600080600062003cb78660036200430f565b915091508162003d1c5760405162461bcd60e51b815260206004820152602960248201527f4f7074696f6e7348656c7065723a206c7a436f6d706f7365206f7074696f6e206044820152681b9bdd08199bdd5b9960ba1b6064820152608401620024c8565b604051630518e8ab60e41b8152309063518e8ab09062003d4190849060040162004f03565b606060405180830381865afa15801562003d5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d85919062005e6c565b91986001600160801b039182169850911695509350505050565b600080806012841480159062003db6575060228414155b1562003dd557604051638b4aa70b60e01b815260040160405180910390fd5b62003de3858560006200444e565b925062003df38585600262004479565b91506022841462003e0657600062003e14565b62003e148585601262004479565b90509250925092565b546001600160801b03808216600160801b9092048116919091031690565b80546000906001600160801b03600160801b820481169116810362003e73576040516375e52f4f60e01b815260040160405180910390fd5b600019016001600160801b039081166000818152600185016020526040812080549190558454909216600160801b909102179092555090565b600062003eba83836200430f565b509392505050565b60008060008062003ed58560026200430f565b915091508162003f3b5760405162461bcd60e51b815260206004820152602a60248201527f4f7074696f6e7348656c7065723a206e617469766544726f70206f7074696f6e604482015269081b9bdd08199bdd5b9960b21b6064820152608401620024c8565b604051635caa7efb60e11b8152309063b954fdf69062003f6090849060040162004f03565b6040805180830381865afa15801562003f7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fa3919062005eb5565b6001600160801b03909116969095509350505050565b60003681600184018162003fcf8888846200444e565b60029290920191905062003fe5888884620044a4565b94506001820161ffff821683016200400081838b8d62005dde565b979b909a50969850505061ffff160193505050565b6000620040358254600160801b81046001600160801b0390811691161490565b1562004054576040516375e52f4f60e01b815260040160405180910390fd5b5080546000196001600160801b03600160801b9092048216011660009081526001909101602052604090205490565b60006200409560716051848662005dde565b6200281e9162005ee6565b36600062003802836071818762005dde565b60008060308314620040d7576040516361d0c2c760e11b815260040160405180910390fd5b620040e58484600062004479565b9150620040f584846010620044cc565b90509250929050565b600080600080620041118560016200430f565b9150915081620041765760405162461bcd60e51b815260206004820152602960248201527f4f7074696f6e7348656c7065723a206c7a52656365697665206f7074696f6e206044820152681b9bdd08199bdd5b9960ba1b6064820152608401620024c8565b60405163f93e1d6160e01b8152309063f93e1d61906200419b90849060040162004f03565b6040805180830381865afa158015620041b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041de919062005f05565b6001600160801b0391821697911695509350505050565b600062004095602d600d848662005dde565b60006200421960096001848662005dde565b620042249162005f39565b60c01c9392505050565b6000806010831480159062004244575060208314155b156200426357604051634796aee160e01b815260040160405180910390fd5b620042718484600062004479565b91506020831462004284576000620040f5565b620040f58484601062004479565b60006200409560516031848662005dde565b81546001600160801b038082166000190191600160801b9004811690821603620042e157604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b0316600081815260018401602052604090209190915581546001600160801b031916179055565b601c5460405163e5c5e9a360e01b815260009160609183916001600160a01b03169063e5c5e9a3906200434790889060040162004f03565b600060405180830381865afa15801562004365573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200438f919081019062005f68565b50905060005b81518110156200444557604051636e1775e360e01b8152600090819081903090636e1775e390620043cd90889088906004016200557a565b600060405180830381865afa158015620043eb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004415919081019062005fd2565b9250925092508760ff168360ff16036200443a57506001955093506200380792505050565b925062004395915050565b50509250929050565b600060028201620044628184868862005dde565b6200446d9162006031565b60f01c95945050505050565b6000601082016200448d8184868862005dde565b620044989162006060565b60801c95945050505050565b6000838383818110620044bb57620044bb620053b1565b919091013560f81c95945050505050565b600060208201620044e08184868862005dde565b620044eb9162005ee6565b95945050505050565b8280548282559060005260206000209081019282156200454c579160200282015b828111156200454c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062004515565b506200455a92915062004749565b5090565b828054828255906000526020600020906007016008900481019282156200454c5791602002820160005b83821115620045ce57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030262004588565b8015620046005782816101000a81549063ffffffff0219169055600401602081600301049283019260010302620045ce565b50506200455a92915062004749565b6155c1806200609083390190565b6114d6806200b65183390190565b614ac0806200cb2783390190565b61244180620115e783390190565b612c708062013a2883390190565b611257806201669883390190565b6138e780620178ef83390190565b610e2e806201b1d683390190565b6040518060400160405280600063ffffffff168152602001620046e36040518060c0016040528060006001600160401b03168152602001600060ff168152602001600060ff168152602001600060ff16815260200160608152602001606081525090565b905290565b6040518060400160405280600063ffffffff168152602001620046e36040518060400160405280600063ffffffff16815260200160006001600160a01b031681525090565b611a44806201c00483390190565b6107f2806201da4883390190565b5b808211156200455a57600081556001016200474a565b63ffffffff811681146200477357600080fd5b50565b6001600160a01b03811681146200477357600080fd5b60008060408385031215620047a057600080fd5b8235620047ad8162004760565b91506020830135620047bf8162004776565b809150509250929050565b60008083601f840112620047dd57600080fd5b5081356001600160401b03811115620047f557600080fd5b6020830191508360208285010111156200380757600080fd5b600080602083850312156200482257600080fd5b82356001600160401b038111156200483957600080fd5b6200484785828601620047ca565b90969095509350505050565b60ff811681146200477357600080fd5b600080604083850312156200487757600080fd5b8235620048848162004853565b9150602083013560028110620047bf57600080fd5b60008151808452602080850194506020840160005b83811015620048d55781516001600160a01b031687529582019590820190600101620048ae565b509495945050505050565b6020815260006200281e602083018462004899565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715620049305762004930620048f5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620049615762004961620048f5565b604052919050565b60006001600160401b03821115620049855762004985620048f5565b50601f01601f191660200190565b600082601f830112620049a557600080fd5b8135620049bc620049b68262004969565b62004936565b818152846020838601011115620049d257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121562004a0557600080fd5b83356001600160401b0381111562004a1c57600080fd5b62004a2a8682870162004993565b935050602084013562004a3d8162004853565b9150604084013562004a4f8162004853565b809150509250925092565b60005b8381101562004a7757818101518382015260200162004a5d565b50506000910152565b6000815180845262004a9a81602086016020860162004a5a565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b8481101562004aff57601f1986840301895262004aec83835162004a80565b9884019892509083019060010162004acd565b5090979650505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101562004b8157888303603f19018552815180516001600160a01b0316845287015187840187905262004b6d8785018262004aae565b958801959350509086019060010162004b35565b509098975050505050505050565b600080600080600080600060c0888a03121562004bab57600080fd5b873562004bb88162004760565b9650602088013562004bca8162004776565b955060408801356001600160401b038082111562004be757600080fd5b62004bf58b838c0162004993565b965060608a0135955060808a0135915062004c108262004776565b90935060a0890135908082111562004c2757600080fd5b5062004c368a828b01620047ca565b989b979a50959850939692959293505050565b6000806000806080858703121562004c6057600080fd5b843562004c6d8162004760565b93506020850135925060408501359150606085013562004c8d8162004776565b939692955090935050565b61ffff811681146200477357600080fd5b6000806040838503121562004cbd57600080fd5b823562004cca8162004c98565b946020939093013593505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562004d8257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562004d6c5783516001600160e01b0319168252928b019260019290920191908b019062004d40565b50978a0197955050509187019160010162004d02565b50919998505050505050505050565b60008060006040848603121562004da757600080fd5b83356001600160401b0381111562004dbe57600080fd5b62004dcc86828701620047ca565b909790965060209590950135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60ff8516815260606020820152600062004e2860608301858762004de0565b905082604083015295945050505050565b60006001600160401b0382111562004e555762004e55620048f5565b5060051b60200190565b6000602080838503121562004e7357600080fd5b82356001600160401b0381111562004e8a57600080fd5b8301601f8101851362004e9c57600080fd5b803562004ead620049b68262004e39565b81815260059190911b8201830190838101908783111562004ecd57600080fd5b928401925b8284101562004ef857833562004ee88162004776565b8252928401929084019062004ed2565b979650505050505050565b6020815260006200281e602083018462004a80565b6020815260006200281e602083018462004aae565b60008060008060006080868803121562004f4657600080fd5b85356001600160401b038082111562004f5e57600080fd5b62004f6c89838a01620047ca565b9097509550602088013591508082111562004f8657600080fd5b5062004f958882890162004993565b93505060408601359150606086013562004faf8162004776565b809150509295509295909350565b60006020828403121562004fd057600080fd5b81356200281e8162004776565b6000806040838503121562004ff157600080fd5b823562004cca8162004760565b6001600160801b03811681146200477357600080fd5b6000602082840312156200502757600080fd5b81356200281e8162004ffe565b6000806000604084860312156200504a57600080fd5b83356001600160401b03808211156200506257600080fd5b6200507087838801620047ca565b909550935060208601359150808211156200508a57600080fd5b50620050998682870162004993565b9150509250925092565b60008060008060408587031215620050ba57600080fd5b84356001600160401b0380821115620050d257600080fd5b620050e088838901620047ca565b90965094506020870135915080821115620050fa57600080fd5b506200510987828801620047ca565b95989497509550505050565b805180151581146200394057600080fd5b600080604083850312156200513a57600080fd5b8251620051478162004776565b9150620040f56020840162005115565b80516001600160401b03811681146200394057600080fd5b8051620039408162004853565b6000806000606084860312156200519257600080fd5b6200519d8462005157565b92506020840151620051af8162004853565b604085015190925062004a4f8162004853565b600082601f830112620051d457600080fd5b8151620051e5620049b68262004969565b818152846020838601011115620051fb57600080fd5b6200520e82602083016020870162004a5a565b949350505050565b6000602082840312156200522957600080fd5b81516001600160401b038111156200524057600080fd5b6200520e84828501620051c2565b600082601f8301126200526057600080fd5b8151602062005273620049b68362004e39565b8083825260208201915060208460051b8701019350868411156200529657600080fd5b602086015b84811015620052bf578051620052b18162004776565b83529183019183016200529b565b509695505050505050565b600060208284031215620052dd57600080fd5b81516001600160401b0380821115620052f557600080fd5b9083019060c082860312156200530a57600080fd5b620053146200490b565b6200531f8362005157565b81526200532f602084016200516f565b602082015262005342604084016200516f565b604082015262005355606084016200516f565b60608201526080830151828111156200536d57600080fd5b6200537b878286016200524e565b60808301525060a0830151828111156200539457600080fd5b620053a2878286016200524e565b60a08301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b606081526000620053ec606083018662004a80565b905083602083015260ff83166040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111562002ff85762002ff862005405565b63ffffffff851681526001600160a01b0384166020820152608060408201819052600090620054639083018562004a80565b905082606083015295945050505050565b6000602082840312156200548757600080fd5b5051919050565b600080600060608486031215620054a457600080fd5b8351620054b18162004853565b602085015160409095015190969495509392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101562004b8157888303603f190185528151805163ffffffff168452878101516001600160a01b0316888501528681015160a0888601819052906200553b8287018262004a80565b91505060608083015181870152506080808301519250858203818701525062005565818362004a80565b968901969450505090860190600101620054f1565b6040815260006200558f604083018562004a80565b90508260208301529392505050565b6020815260006200520e60208301848662004de0565b600060208284031215620055c757600080fd5b81516200281e8162004776565b60ff818116838216019081111562002ff85762002ff862005405565b634e487b7160e01b600052602160045260246000fd5b600060018060a01b038089168352808816602084015260c060408401526200563260c084018862004899565b8187166060850152818616608085015283810360a085015262005656818662004899565b9a9950505050505050505050565b60ff871681526000602060c060208401526200568460c084018962004899565b6001600160a01b0388811660408601528482036060860152875480835260008981526020808220940191905b81811015620056d0578454841683526001948501949286019201620056b0565b50506001600160401b038816608087015285810360a0870152620056f5818862004899565b9c9b505050505050505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101562004b8157603f19898403810186528251805163ffffffff16855288015188850188905280516001600160401b0316888601528089015160ff9081166060808801919091528983015182166080808901919091529083015190911660a0808801919091529082015160c08088015290620057b161010088018362004899565b920151868303840160e0880152919050620057cd818362004899565b978a01979550505091870191506001016200572e565b602080825282518282018190526000919060409081850190868401855b8281101562005847578151805163ffffffff9081168652908701518051909116878601528601516001600160a01b0316858501526060909301929085019060010162005800565b5091979650505050505050565b6000602082840312156200586757600080fd5b81516200281e8162004ffe565b6001600160801b038181168382160280821691908281146200589a576200589a62005405565b505092915050565b602080825282518282018190526000919060409081850190868401855b8281101562005847578151805163ffffffff90811686529087015180516001600160801b031688870152808801516001600160401b03168787015286015116606085015260809093019290850190600101620058bf565b602080825282518282018190526000919060409081850190868401855b8281101562005847578151805163ffffffff168552868101516001600160401b039081168887015286820151168686015260608082015161ffff16908601526080808201516001600160801b039081169187019190915260a091820151169085015260c0909301929085019060010162005933565b602080825282518282018190526000919060409081850190868401855b8281101562005847578151805163ffffffff168552868101516001600160401b0316878601528581015161ffff16868601526060908101516001600160801b03169085015260809093019290850190600101620059c5565b60ff828116828216039081111562002ff85762002ff862005405565b600181811c9082168062005a4e57607f821691505b60208210810362005a6f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038881168252871660208201526040810186905261ffff8516606082015260c06080820181905260009062005ab5908301858762004de0565b82810360a084015262005656818562004a80565b60008162005adb5762005adb62005405565b506000190190565b60408152600062005af8604083018562004a80565b8281036020840152620044eb818562004a80565b60808152600062005b21608083018762004a80565b828103602084015262005b35818762004a80565b604084019590955250506001600160a01b039190911660609091015292915050565b60006020828403121562005b6a57600080fd5b81516200281e8162004760565b63ffffffff88168152600060018060a01b03808916602084015260c0604084015262005ba760c084018962004a80565b876060850152818716608085015283810360a085015262005bca81868862004de0565b9b9a5050505050505050505050565b6001600160e01b031983168152815160009062005bfe81600485016020870162004a5a565b919091016004019392505050565b6000825162005c2081846020870162004a5a565b9190910192915050565b60006020828403121562005c3d57600080fd5b6200281e8262005115565b63ffffffff8751168152602087015160208201526001600160401b03604088015116604082015260018060a01b038616606082015284608082015260e060a0820152600062005c9c60e08301858762004de0565b82810360c084015262005cb0818562004a80565b9998505050505050505050565b601f821115620026a5576000816000526020600020601f850160051c8101602086101562005ce85750805b601f850160051c820191505b8181101562005d095782815560010162005cf4565b505050505050565b6001600160401b0383111562005d2b5762005d2b620048f5565b62005d438362005d3c835462005a39565b8362005cbd565b6000601f84116001811462005d7a576000851562005d615750838201355b600019600387901b1c1916600186901b17835562005dd7565b600083815260209020601f19861690835b8281101562005dad578685013582556020948501946001909201910162005d8b565b508682101562005dcb5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6000808585111562005def57600080fd5b8386111562005dfd57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156200589a5760049490940360031b84901b1690921692915050565b6000835162005e4d81846020880162004a5a565b83519083019062005e6381836020880162004a5a565b01949350505050565b60008060006060848603121562005e8257600080fd5b835162005e8f8162004c98565b602085015190935062005ea28162004ffe565b604085015190925062004a4f8162004ffe565b6000806040838503121562005ec957600080fd5b825162005ed68162004ffe565b6020939093015192949293505050565b8035602083101562002ff857600019602084900360031b1b1692915050565b6000806040838503121562005f1957600080fd5b825162005f268162004ffe565b6020840151909250620047bf8162004ffe565b6001600160c01b031981358181169160088510156200589a5760089490940360031b84901b1690921692915050565b6000806040838503121562005f7c57600080fd5b82516001600160401b038082111562005f9457600080fd5b62005fa286838701620051c2565b9350602085015191508082111562005fb957600080fd5b5062005fc885828601620051c2565b9150509250929050565b60008060006060848603121562005fe857600080fd5b835162005ff58162004853565b60208501519093506001600160401b038111156200601257600080fd5b6200602086828701620051c2565b925050604084015190509250925092565b6001600160f01b031981358181169160028510156200589a5760029490940360031b84901b1690921692915050565b6001600160801b031981358181169160108510156200589a5760109490940360031b84901b169092169291505056fe60c06040526001600d553480156200001657600080fd5b50604051620055c1380380620055c18339810160408190526200003991620002cd565b81816001600160a01b0381166200006b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200007681620000cd565b5063ffffffff166080526040516200008e90620002bf565b604051809103906000f080158015620000ab573d6000803e3d6000fd5b506001600160a01b031660a0819052620000c5906200011d565b50506200034a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001276200028e565b6040516301ffc9a760e01b81526325fc096160e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019991906200031f565b620001b75760405163eb64f35d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620001f25760405163457517f360e11b815260040160405180910390fd5b6001600160a01b0381166000818152600560209081526040808320805460ff191660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180546001600160a01b0319168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af5910160405180910390a150565b6000546001600160a01b03163314620002bd5760405163118cdaa760e01b815233600482015260240162000062565b565b6101e380620053de83390190565b60008060408385031215620002e157600080fd5b825163ffffffff81168114620002f657600080fd5b60208401519092506001600160a01b03811681146200031457600080fd5b809150509250929050565b6000602082840312156200033257600080fd5b815180151581146200034357600080fd5b9392505050565b60805160a05161504b6200039360003960006107810152600081816105310152818161278901528181612f7b01528181612fe20152818161355301526135ba015261504b6000f3fe6080604052600436106103505760003560e01c80639132e5c3116101c6578063c9fc7bcd116100f7578063ddc28c5811610095578063e8964e811161006f578063e8964e8114610b8f578063ef667aa114610baf578063f2fde38b14610bfa578063f64be4c714610c1a57600080fd5b8063ddc28c5814610b2e578063e1758bd814610b5b578063e4fe1d9414610b6f57600080fd5b8063d4b4ec8f116100d1578063d4b4ec8f14610a72578063d70b890214610a92578063dc706a6214610ab2578063dc93c8a214610ae257600080fd5b8063c9fc7bcd146109f6578063ca5eb5e114610a3d578063cb5026b914610a5d57600080fd5b8063a7229fd911610164578063aafea3121161013e578063aafea31214610976578063b96a277f14610996578063c28e0eed146109b6578063c9a54a99146109d657600080fd5b8063a7229fd914610916578063a825d74714610936578063aafe5e071461095657600080fd5b80639c6d7340116101a05780639c6d73401461086f5780639d7f9775146108b6578063a0dd43fc146108d6578063a718531b146108f657600080fd5b80639132e5c31461081a57806391d20fa11461083c5780639535ff301461084f57600080fd5b80635b17bb70116102a05780636f50a8031161023e57806379624ca91161021857806379624ca9146107a35780637cb59012146107bc578063861e1ca5146107dc5780638da5cb5b146107fc57600080fd5b80636f50a80314610724578063715018a61461075a578063733180911461076f57600080fd5b80636a14d7151161027a5780636a14d715146106655780636bf73fa3146106855780636dbd9f90146106a55780636e83f5bb146106c557600080fd5b80635b17bb70146105b65780636750cd4c14610615578063697fe6b61461064557600080fd5b80632baf0be71161030d578063402f8468116102e7578063402f8468146104c057806340f80683146104ff578063416ecebf1461051f578063587cde1e1461056857600080fd5b80632baf0be7146104355780632e80fbf31461045957806335d330b01461047957600080fd5b80630c0c389e1461035557806314f651a91461036a578063183c834f146103a85780632637a450146103c85780632a56c1b0146103e85780632b3197b914610408575b600080fd5b610368610363366004613ef7565b610c50565b005b34801561037657600080fd5b5061037f610d4e565b6040805163ffffffff90931683526001600160a01b039091166020830152015b60405180910390f35b3480156103b457600080fd5b506103686103c3366004613fa6565b610d80565b6103db6103d6366004613ff1565b611027565b60405161039f9190614043565b3480156103f457600080fd5b50610368610403366004614085565b61114d565b34801561041457600080fd5b506104286104233660046140f4565b6111ed565b60405161039f9190614198565b34801561044157600080fd5b5061044b60001981565b60405190815260200161039f565b34801561046557600080fd5b506103686104743660046141c2565b6112b8565b34801561048557600080fd5b5061044b610494366004614229565b600c60209081526000948552604080862082529385528385208152918452828420909152825290205481565b3480156104cc57600080fd5b506104e06104db36600461426b565b611427565b604080516001600160a01b03909316835290151560208301520161039f565b34801561050b57600080fd5b5061036861051a3660046141c2565b6114a5565b34801561052b57600080fd5b506105537f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161039f565b34801561057457600080fd5b5061059e610583366004614295565b600f602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161039f565b3480156105c257600080fd5b506105fd6105d13660046142b0565b60016020908152600093845260408085208252928452828420905282529020546001600160401b031681565b6040516001600160401b03909116815260200161039f565b34801561062157600080fd5b506106356106303660046142ec565b61160b565b604051901515815260200161039f565b34801561065157600080fd5b50610368610660366004614307565b61165b565b34801561067157600080fd5b50610368610680366004613fa6565b6116d0565b34801561069157600080fd5b506103686106a0366004614402565b611aae565b3480156106b157600080fd5b506103686106c03660046144e5565b611b18565b3480156106d157600080fd5b506107056106e03660046142ec565b600b60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161039f565b34801561073057600080fd5b5061059e61073f3660046142ec565b600a602052600090815260409020546001600160a01b031681565b34801561076657600080fd5b50610368611bba565b34801561077b57600080fd5b5061059e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107af57600080fd5b50600d5460011415610635565b3480156107c857600080fd5b506103686107d7366004614575565b611bce565b3480156107e857600080fd5b506106356107f73660046145c6565b611cba565b34801561080857600080fd5b506000546001600160a01b031661059e565b34801561082657600080fd5b5061082f611d26565b60405161039f91906145f1565b61036861084a36600461463e565b611d88565b34801561085b57600080fd5b5061036861086a3660046146e8565b611f18565b34801561087b57600080fd5b506105fd61088a3660046142b0565b60036020908152600093845260408085208252928452828420905282529020546001600160401b031681565b3480156108c257600080fd5b506106356108d13660046146e8565b61217c565b3480156108e257600080fd5b506105fd6108f13660046142b0565b612256565b34801561090257600080fd5b5061036861091136600461472b565b6122b6565b34801561092257600080fd5b50610368610931366004614757565b6125d6565b34801561094257600080fd5b50610368610951366004614775565b6125ee565b34801561096257600080fd5b5061044b6109713660046142b0565b612739565b34801561098257600080fd5b506103686109913660046147b2565b6127b9565b3480156109a257600080fd5b5061059e6109b136600461426b565b6129e2565b3480156109c257600080fd5b506103686109d1366004614295565b612a51565b3480156109e257600080fd5b506106356109f13660046145c6565b612aae565b348015610a0257600080fd5b5061044b610a113660046147ce565b600260209081526000948552604080862082529385528385208152918452828420909152825290205481565b348015610a4957600080fd5b50610368610a58366004614295565b612b13565b348015610a6957600080fd5b5061044b600081565b348015610a7e57600080fd5b50610368610a8d36600461472b565b612b73565b348015610a9e57600080fd5b50610368610aad3660046147ce565b612db1565b348015610abe57600080fd5b50610635610acd366004614295565b60056020526000908152604090205460ff1681565b348015610aee57600080fd5b50610635610afd36600461426b565b6001600160a01b03918216600090815260066020908152604080832063ffffffff9490941683529290522054161590565b348015610b3a57600080fd5b50610b4e610b49366004613ff1565b612ea0565b60405161039f9190614810565b348015610b6757600080fd5b50600061059e565b348015610b7b57600080fd5b50600e5461059e906001600160a01b031681565b348015610b9b57600080fd5b50610368610baa366004614295565b61310c565b348015610bbb57600080fd5b50610705610bca36600461426b565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b348015610c0657600080fd5b50610368610c15366004614295565b613270565b348015610c2657600080fd5b5061059e610c353660046142ec565b6009602052600090815260409020546001600160a01b031681565b610c9f86610c6160208a018a6142ec565b60208a0135610c7660608c0160408d01614827565b898989604051602001610c8b93929190614842565b6040516020818303038152906040526132ae565b506040516313137d6560e01b81526001600160a01b038716906313137d65903490610cda908b908a908a908a9033908b908b906004016148be565b6000604051808303818588803b158015610cf357600080fd5b505af1158015610d07573d6000803e3d6000fd5b50505050507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca048787604051610d3d929190614915565b60405180910390a150505050505050565b600080610d5e600d546001141590565b610d6a57600080610d78565b610d78600d5460a081901c91565b915091509091565b6001600160a01b038216600090815260056020526040902054829060ff16610dbb57604051631bc58ef360e11b815260040160405180910390fd5b826001600160a01b03811615610e5e576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2f9190614951565b6002811115610e4057610e4061493b565b03610e5e576040516342756b1b60e11b815260040160405180910390fd5b83856001600160a01b03821615610efa576040516319d4335360e21b815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190614980565b610efa57604051630e476aa960e21b815260040160405180910390fd5b610f0388613469565b6000610f0f8989611427565b9150508015610f3157604051633c075f7560e01b815260040160405180910390fd5b85600003610f79576001600160a01b038916600090815260086020908152604080832063ffffffff8c168452909152812080546001600160a01b031916815560010155610fdf565b438611610f99576040516302efcf9160e11b815260040160405180910390fd5b6001600160a01b03898116600090815260086020908152604080832063ffffffff8d168452909152902080546001600160a01b0319169189169190911781556001018690555b7f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb2092889898989604051611014949392919061499d565b60405180910390a1505050505050505050565b61102f613e40565b61103c60208401846142ec565b336001600d54146110605760405163ee120b0960e01b815260040160405180910390fd5b63ffffffff60a01b60a083811b919091166001600160a01b03831617600d5561108e908601608087016149cd565b80156110a35750600e546001600160a01b0316155b156110c157604051632d7b695560e11b815260040160405180910390fd5b6000806110ce33886134ba565b9150915060006110db3490565b905060006110f76110f260a08b0160808c016149cd565b613766565b905061110884604001518383613802565b600e5460408501516020015161112a916001600160a01b03169083868c613850565b60408401515161113c9083858b61387d565b50506001600d555095945050505050565b61115685613469565b600083838360405160200161116d93929190614842565b60408051601f1981840301815291905290506111ab8661119060208801886142ec565b60208801356111a560608a0160408b01614827565b856132ae565b507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca0485876040516111dd929190614915565b60405180910390a1505050505050565b6001600160a01b038316600090815260056020526040902054606090849060ff1661122b57604051631bc58ef360e11b815260040160405180910390fd5b604051639c33abf760e01b815263ffffffff80861660048301526001600160a01b0388811660248401529085166044830152861690639c33abf790606401600060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112ae9190810190614a7d565b9695505050505050565b6112c185613469565b6001600160a01b038516600090815260026020908152604080832063ffffffff88168452825280832086845282528083206001600160401b038616845290915290205481811461133357604051637182306f60e01b815260048101829052602481018390526044015b60405180910390fd5b6001600160a01b038616600090815260016020908152604080832063ffffffff8916845282528083208784529091529020546001600160401b039081169084161180159061137f575080155b156113a857604051630c09b63560e41b81526001600160401b038416600482015260240161132a565b6001600160a01b038616600090815260026020908152604080832063ffffffff89168452825280832087845282528083206001600160401b0387168452909152908190206000199055517faf0450c392c4f702515a457a362328c8aa21916048ca6d0419e248b30cb55292906111dd90879087908a9088908890614ab1565b6001600160a01b03808316600090815260076020908152604080832063ffffffff86168452909152812054909116908161149e5763ffffffff83166000908152600a60205260409020546001600160a01b031691508161149a57604051633c74268360e11b815260040160405180910390fd5b5060015b9250929050565b6114ae85613469565b6001600160a01b038516600090815260026020908152604080832063ffffffff88168452825280832086845282528083206001600160401b038616845290915290205481811461151b57604051637182306f60e01b8152600481018290526024810183905260440161132a565b80158061156557506001600160a01b038616600090815260016020908152604080832063ffffffff8916845282528083208784529091529020546001600160401b03908116908416115b1561158e57604051630c09b63560e41b81526001600160401b038416600482015260240161132a565b6001600160a01b038616600090815260026020908152604080832063ffffffff89168452825280832087845282528083206001600160401b038716845290915280822091909155517f7f68a37a6e69a0de35024a234558f9efe4b33b58657753d21eaaa82d51c3510e906111dd90879087908a9088908890614ab1565b63ffffffff81166000908152600960205260408120546001600160a01b031615801590611655575063ffffffff82166000908152600a60205260409020546001600160a01b031615155b92915050565b336001600160a01b03168b6001600160a01b03168d6001600160a01b03167f8a0b1dce321c5c5fb42349bce46d18087c04140de520917661fb923e44a904b98d8d8d8d8d8d8d8d8d8d6040516116ba9a99989796959493929190614aee565b60405180910390a4505050505050505050505050565b6001600160a01b038216600090815260056020526040902054829060ff1615801561170357506001600160a01b03811615155b156117215760405163a4ff2ec360e01b815260040160405180910390fd5b826001600160a01b038116156117c4576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117959190614951565b60028111156117a6576117a661493b565b036117c4576040516342756b1b60e11b815260040160405180910390fd5b83856001600160a01b03821615611860576040516319d4335360e21b815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa15801561181f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118439190614980565b61186057604051630e476aa960e21b815260040160405180910390fd5b61186988613469565b6001600160a01b03808916600090815260076020908152604080832063ffffffff8c168452909152902054811690871681036118b85760405163d0ecb66b60e01b815260040160405180910390fd5b6001600160a01b03898116600081815260076020908152604080832063ffffffff8e168085529083529281902080546001600160a01b031916958d1695861790558051938452908301919091528101919091527fcd6f92f5ac6185a5acfa02c92090746cec64d777269cbcd0ed031e396657a1c29060600160405180910390a18515611a32576001600160a01b038116158061195b57506001600160a01b038716155b1561197957604051633c075f7560e01b815260040160405180910390fd5b60006040518060400160405280836001600160a01b0316815260200188436119a19190614b6d565b90526001600160a01b038b8116600090815260086020908152604080832063ffffffff8f168452825291829020845181546001600160a01b03191694169390931783558301516001909201829055519192507f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb2092891611a24918d918d91879161499d565b60405180910390a150611aa3565b6001600160a01b038916600090815260086020908152604080832063ffffffff8c16845290915280822080546001600160a01b0319168155600101829055517f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb2092891611014918c918c9186919061499d565b505050505050505050565b336001600160a01b03168a6001600160a01b03167f7edfa10fe10193301ad8a8bea7e968c7bcabcc64981f368e3aeada40ce26ae2c8d8c8c8c8c8c8c8c8c8c604051611b039a99989796959493929190614b80565b60405180910390a35050505050505050505050565b6001600160a01b038316600090815260056020526040902054839060ff16611b5357604051631bc58ef360e11b815260040160405180910390fd5b611b5c85613469565b604051631077eb9160e11b81526001600160a01b038516906320efd72290611b8c90889087908790600401614bdf565b600060405180830381600087803b158015611ba657600080fd5b505af1158015611aa3573d6000803e3d6000fd5b611bc26138a7565b611bcc60006138d4565b565b336000908152600c602090815260408083206001600160a01b03891684528252808320878452825280832061ffff8716845290915290205415611c2457604051630542086560e21b815260040160405180910390fd5b8181604051611c34929190614cd2565b60408051918290038220336000818152600c60209081528482206001600160a01b038c16835281528482208a8352815284822061ffff8a168352905292909220557f3d52ff888d033fd3dd1d8057da59e850c91d91a72c41dfa445b247dfedeb6dc191611cab919088908890889088908890614ce2565b60405180910390a15050505050565b6001600160a01b03811660009081526001602090815260408220611d1f91859185918590611cea908501856142ec565b63ffffffff168152602080820192909252604090810160009081208984013582529092529020546001600160401b0316613924565b9392505050565b60606004805480602002602001604051908101604052809291908181526020018280548015611d7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d60575b5050505050905090565b6001600160a01b038089166000908152600c60209081526040808320938b168352928152828220898352815282822061ffff891683529052818120549151611dd39087908790614cd2565b60405180910390209050808214611e07576040516335ca595f60e01b8152600481018390526024810182905260440161132a565b6001600160a01b03808b166000908152600c60209081526040808320938d168084529382528083208c8452825280832061ffff8c168452909152908190206001905551630685081360e51b815263d0a10260903490611e76908e908d908c908c9033908d908d90600401614d2c565b6000604051808303818588803b158015611e8f57600080fd5b505af1158015611ea3573d6000803e3d6000fd5b50505050507e36c98efcf9e6641dfbc9051f66f405253e8e0c2ab4a24dccda15595b7378c88a8a8a8a604051611f0494939291906001600160a01b039485168152929093166020830152604082015261ffff91909116606082015260800190565b60405180910390a150505050505050505050565b6001600160a01b038116600090815260056020526040902054819060ff16158015611f4b57506001600160a01b03811615155b15611f695760405163a4ff2ec360e01b815260040160405180910390fd5b816001600160a01b0381161561200c576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdd9190614951565b6002811115611fee57611fee61493b565b0361200c57604051633d00f6f160e11b815260040160405180910390fd5b82846001600160a01b038216156120a8576040516319d4335360e21b815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015612067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208b9190614980565b6120a857604051630e476aa960e21b815260040160405180910390fd5b6120b187613469565b6001600160a01b03878116600090815260066020908152604080832063ffffffff8b1684529091529020548187169116036120ff5760405163d0ecb66b60e01b815260040160405180910390fd5b6001600160a01b03878116600081815260066020908152604080832063ffffffff8c168085529083529281902080546001600160a01b031916958b1695861790558051938452908301919091528101919091527f4cff966ebee29a156dcb34cf72c1d06231fb1777f6bdf6e8089819232f002b1c90606001610d3d565b600080600061218b8686611427565b91509150816001600160a01b0316846001600160a01b0316036121b357600192505050611d1f565b6000816121e8576001600160a01b038716600090815260086020908152604080832063ffffffff8a16845290915290206121fe565b63ffffffff86166000908152600b602052604090205b6040805180820190915281546001600160a01b03908116808352600190930154602083015290925086161480156122385750438160200151115b156122495760019350505050611d1f565b5060009695505050505050565b6001600160a01b038316600090815260016020908152604080832063ffffffff8616845282528083208484529091528120546001600160401b03165b6122a1858585846001016139a8565b156122ae57600101612292565b949350505050565b6122be6138a7565b6001600160a01b038216600090815260056020526040902054829060ff166122f957604051631bc58ef360e11b815260040160405180910390fd5b826001600160a01b0381161561239c576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190614951565b600281111561237e5761237e61493b565b0361239c576040516342756b1b60e11b815260040160405180910390fd5b83856001600160a01b03821615612438576040516319d4335360e21b815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa1580156123f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241b9190614980565b61243857604051630e476aa960e21b815260040160405180910390fd5b63ffffffff87166000908152600a60205260409020546001600160a01b03908116908716810361247b5760405163d0ecb66b60e01b815260040160405180910390fd5b63ffffffff88166000818152600a602090815260409182902080546001600160a01b0319166001600160a01b038c169081179091558251938452908301527fc16891855cffb4a5ac51ac11864a3f3c96ba816cc45fe686c987ae36277de5ec910160405180910390a185156125695763ffffffff88166000908152600b6020526040902080546001600160a01b0319166001600160a01b0383161781556125228743614b6d565b600182018190556040517f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f89161255b918c918691614d7f565b60405180910390a1506125cc565b63ffffffff88166000908152600b602052604080822080546001600160a01b0319168155600101829055517f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f8916125c3918b918591614d7f565b60405180910390a15b5050505050505050565b6125de6138a7565b6125e98383836139f5565b505050565b612605826125ff60208601866142ec565b3361217c565b612622576040516313e9bb2b60e21b815260040160405180910390fd5b6001600160a01b0382166000908152600160209081526040822090829061264b908701876142ec565b63ffffffff168152602080820192909252604090810160009081208784013582529092529020546001600160401b03169050612688848483613924565b6126a55760405163751cb20f60e01b815260040160405180910390fd5b6126b0848483613a18565b6126cc5760405162bbf0e560e11b815260040160405180910390fd5b6126f8836126dd60208701876142ec565b60208701356126f26060890160408a01614827565b86613ad5565b7f0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b484848460405161272b93929190614da6565b60405180910390a150505050565b6001600160a01b038316600090815260036020908152604080832063ffffffff8616845282528083208484529091528120548190612781906001600160401b03166001614dce565b90506127b0817f0000000000000000000000000000000000000000000000000000000000000000878787613b3b565b95945050505050565b6127c16138a7565b6001600160a01b038116600090815260056020526040902054819060ff166127fc57604051631bc58ef360e11b815260040160405180910390fd5b816001600160a01b0381161561289f576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561284c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128709190614951565b60028111156128815761288161493b565b0361289f57604051633d00f6f160e11b815260040160405180910390fd5b82846001600160a01b0382161561293b576040516319d4335360e21b815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa1580156128fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291e9190614980565b61293b57604051630e476aa960e21b815260040160405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b0380871691160361297c5760405163d0ecb66b60e01b815260040160405180910390fd5b63ffffffff861660008181526009602090815260409182902080546001600160a01b0319166001600160a01b038a169081179091558251938452908301527f16aa0f528038ab41019e95bae5b418a50ba8532c5800e3b7ea2f517d3fa625f591016111dd565b6001600160a01b03808316600090815260066020908152604080832063ffffffff861684529091529020541680611655575063ffffffff81166000908152600960205260409020546001600160a01b03168061165557604051636c1ccdb560e01b815260040160405180910390fd5b612a596138a7565b600e80546001600160a01b0319166001600160a01b0383169081179091556040519081527fd476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a62396906020015b60405180910390a150565b6001600160a01b03811660009081526001602090815260408220611d1f91859185918590612ade908501856142ec565b63ffffffff168152602080820192909252604090810160009081208984013582529092529020546001600160401b0316613a18565b336000818152600f602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527f6ee10e9ed4d6ce9742703a498707862f4b00f1396a87195eb93267b3d79839819101612aa3565b6001600160a01b038216600090815260056020526040902054829060ff16612bae57604051631bc58ef360e11b815260040160405180910390fd5b826001600160a01b03811615612c51576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c229190614951565b6002811115612c3357612c3361493b565b03612c51576040516342756b1b60e11b815260040160405180910390fd5b83856001600160a01b03821615612ced576040516319d4335360e21b815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015612cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd09190614980565b612ced57604051630e476aa960e21b815260040160405180910390fd5b612cf56138a7565b84600003612d295763ffffffff87166000908152600b6020526040812080546001600160a01b031916815560010155612d7e565b438511612d49576040516302efcf9160e11b815260040160405180910390fd5b63ffffffff87166000908152600b6020526040902080546001600160a01b0319166001600160a01b0388161781556001018590555b7f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f8878787604051610d3d93929190614d7f565b612dba84613469565b612dc5848484612256565b612dd0906001614dce565b6001600160401b0316816001600160401b031614612e0c57604051630c09b63560e41b81526001600160401b038216600482015260240161132a565b6001600160a01b038416600081815260016020908152604080832063ffffffff8816808552908352818420878552835292819020805467ffffffffffffffff19166001600160401b038716908117909155815193845291830186905282019290925260608101919091527f28f40053783033ef755556a0c3315379141f51a33aed8334174ffbadd90bde489060800161272b565b6040805180820190915260008082526020820152612ec460a08401608085016149cd565b8015612ed95750600e546001600160a01b0316155b15612ef757604051632d7b695560e11b815260040160405180910390fd5b6001600160a01b03821660009081526003602090815260408220908290612f20908701876142ec565b63ffffffff16815260208082019290925260409081016000908120878401358252909252902054612f5b906001600160401b03166001614dce565b905060006040518060e00160405280836001600160401b031681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001856001600160a01b03168152602001866000016020810190612fc791906142ec565b63ffffffff1681526020018660200135815260200161301f847f0000000000000000000000000000000000000000000000000000000000000000888a600001602081019061301591906142ec565b8b60200135613b3b565b81526020016130316040880188614dee565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250929350915061307e9050856109b160208901896142ec565b90506001600160a01b03811663d80e9bd98361309d60608a018a614dee565b6130ad60a08c0160808d016149cd565b6040518563ffffffff1660e01b81526004016130cc9493929190614e34565b6040805180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190614f28565b6131146138a7565b6040516301ffc9a760e01b81526325fc096160e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801561315f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131839190614980565b6131a05760405163eb64f35d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156131da5760405163457517f360e11b815260040160405180910390fd5b6001600160a01b0381166000818152600560209081526040808320805460ff191660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180546001600160a01b0319168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af59101612aa3565b6132786138a7565b6001600160a01b0381166132a257604051631e4fbdf760e01b81526000600482015260240161132a565b6132ab816138d4565b50565b6001600160a01b038516600090815260016020908152604080832063ffffffff8816845282528083208684529091528120546001600160401b0390811690841681101561339c57600181015b846001600160401b0316816001600160401b03161161334f5761331f888888846139a8565b61334757604051630c09b63560e41b81526001600160401b038216600482015260240161132a565b6001016132fa565b506001600160a01b038716600090815260016020908152604080832063ffffffff8a16845282528083208884529091529020805467ffffffffffffffff19166001600160401b0386161790555b82516020808501919091206001600160a01b038916600090815260028352604080822063ffffffff8b168352845280822089835284528082206001600160401b0389168352909352919091205490925080831461341657604051637182306f60e01b8152600481018290526024810184905260440161132a565b50506001600160a01b03909516600090815260026020908152604080832063ffffffff90971683529581528582209482529384528481206001600160401b03909316815291909252918220919091555090565b336001600160a01b0382161480159061349c57506001600160a01b038181166000908152600f6020526040902054163314155b156132ab5760405163c4c5259360e01b815260040160405180910390fd5b6134c2613e40565b600080613533856134d660208701876142ec565b6001600160a01b0391909116600090815260036020908152604080832063ffffffff949094168352928152828220818901358352905220805467ffffffffffffffff19811660016001600160401b03928316019182161790915590565b905060006040518060e00160405280836001600160401b031681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001876001600160a01b0316815260200186600001602081019061359f91906142ec565b63ffffffff168152602001866020013581526020016135ed847f00000000000000000000000000000000000000000000000000000000000000008a8a600001602081019061301591906142ec565b81526020016135ff6040880188614dee565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250929350915061364c9050876109b160208901896142ec565b90506000806001600160a01b038316634389e58f8561366e60608c018c614dee565b61367e60a08e0160808f016149cd565b6040518563ffffffff1660e01b815260040161369d9493929190614e34565b6000604051808303816000875af11580156136bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136e49190810190614f44565b90925090507f1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f8161371860608b018b614dee565b866040516137299493929190614f92565b60405180910390a1506040805160608101825260a09094015184526001600160401b03909416602084015292820192909252925090509250929050565b600081156137fd57600e546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156137b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137da9190614fd2565b9050806000036137fd57604051631775123760e01b815260040160405180910390fd5b919050565b82518210806138145750808360200151115b156125e95782516020840151604051634f3ec0d360e01b815260048101929092526024820184905260448201526064810182905260840161132a565b831561386157613861858386613bb4565b82841015613876576138768582868603613bb4565b5050505050565b831561388d5761388d8285613bef565b828410156138a1576138a181858503613bef565b50505050565b6000546001600160a01b03163314611bcc5760405163118cdaa760e01b815233600482015260240161132a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080826001600160401b031611806122ae5750604051600162842fc360e01b031981526001600160a01b0384169063ff7bd03d90613967908790600401614feb565b602060405180830381865afa158015613984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190614980565b6001600160a01b038416600090815260026020908152604080832063ffffffff87168452825280832085845282528083206001600160401b03851684529091529020541515949350505050565b6001600160a01b038316613a0d576125e98282613bef565b6125e9838383613bb4565b60006001600160401b038216613a346060860160408701614827565b6001600160401b031611806122ae57506001600160a01b03831660009081526002602090815260408220908290613a6d908801886142ec565b63ffffffff1663ffffffff1681526020019081526020016000206000866020013581526020019081526020016000206000866040016020810190613ab19190614827565b6001600160401b031681526020810191909152604001600020541415949350505050565b80613af3576040516304df7fdb60e11b815260040160405180910390fd5b6001600160a01b03909416600090815260026020908152604080832063ffffffff90961683529481528482209382529283528381206001600160401b03909216815291522055565b600085856001600160a01b03861660405160c09390931b6001600160c01b031916602084015260e091821b6001600160e01b03199081166028850152602c8401919091529085901b16604c8201526050810183905260700160405160208183030381529060405280519060200120905095945050505050565b6001600160a01b038216613bdb576040516306b7a93160e41b815260040160405180910390fd5b6125e96001600160a01b0384168383613c9c565b6001600160a01b038216613c16576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613c63576040519150601f19603f3d011682016040523d82523d6000602084013e613c68565b606091505b50509050806125e957604051631196f20d60e21b81526001600160a01b03841660048201526024810183905260440161132a565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092019092526020810180516001600160e01b031663a9059cbb60e01b1790526125e991859190600090613cfa90841683613d48565b90508051600014158015613d1f575080806020019051810190613d1d9190614980565b155b156125e957604051635274afe760e01b81526001600160a01b038416600482015260240161132a565b6060611d1f8383600084600080856001600160a01b03168486604051613d6e9190614ff9565b60006040518083038185875af1925050503d8060008114613dab576040519150601f19603f3d011682016040523d82523d6000602084013e613db0565b606091505b50915091506112ae868383606082613dd057613dcb82613e17565b611d1f565b8151158015613de757506001600160a01b0384163b155b15613e1057604051639996b31560e01b81526001600160a01b038516600482015260240161132a565b5080611d1f565b805115613e275780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180606001604052806000801916815260200160006001600160401b03168152602001613e82604051806040016040528060008152602001600081525090565b905290565b600060608284031215613e9957600080fd5b50919050565b80356001600160a01b03811681146137fd57600080fd5b60008083601f840112613ec857600080fd5b5081356001600160401b03811115613edf57600080fd5b60208301915083602082850101111561149e57600080fd5b600080600080600080600060e0888a031215613f1257600080fd5b613f1c8989613e87565b9650613f2a60608901613e9f565b95506080880135945060a08801356001600160401b0380821115613f4d57600080fd5b613f598b838c01613eb6565b909650945060c08a0135915080821115613f7257600080fd5b50613f7f8a828b01613eb6565b989b979a50959850939692959293505050565b803563ffffffff811681146137fd57600080fd5b60008060008060808587031215613fbc57600080fd5b613fc585613e9f565b9350613fd360208601613f92565b9250613fe160408601613e9f565b9396929550929360600135925050565b6000806040838503121561400457600080fd5b82356001600160401b0381111561401a57600080fd5b830160a0818603121561402c57600080fd5b915061403a60208401613e9f565b90509250929050565b6000608082019050825182526001600160401b036020840151166020830152604083015161407e604084018280518252602090810151910152565b5092915050565b600080600080600060c0868803121561409d57600080fd5b6140a686613e9f565b94506140b58760208801613e87565b93506080860135925060a08601356001600160401b038111156140d757600080fd5b6140e388828901613eb6565b969995985093965092949392505050565b6000806000806080858703121561410a57600080fd5b61411385613e9f565b935061412160208601613e9f565b925061412f60408601613f92565b915061413d60608601613f92565b905092959194509250565b60005b8381101561416357818101518382015260200161414b565b50506000910152565b60008151808452614184816020860160208601614148565b601f01601f19169290920160200192915050565b602081526000611d1f602083018461416c565b80356001600160401b03811681146137fd57600080fd5b600080600080600060a086880312156141da57600080fd5b6141e386613e9f565b94506141f160208701613f92565b935060408601359250614206606087016141ab565b949793965091946080013592915050565b803561ffff811681146137fd57600080fd5b6000806000806080858703121561423f57600080fd5b61424885613e9f565b935061425660208601613e9f565b92506040850135915061413d60608601614217565b6000806040838503121561427e57600080fd5b61428783613e9f565b915061403a60208401613f92565b6000602082840312156142a757600080fd5b611d1f82613e9f565b6000806000606084860312156142c557600080fd5b6142ce84613e9f565b92506142dc60208501613f92565b9150604084013590509250925092565b6000602082840312156142fe57600080fd5b611d1f82613f92565b6000806000806000806000806000806000806101208d8f03121561432a57600080fd5b6143338d613e9f565b9b5061434160208e01613e9f565b9a5060408d0135995061435660608e01614217565b985060808d0135975060a08d013596506001600160401b0360c08e0135111561437e57600080fd5b61438e8e60c08f01358f01613eb6565b90965094506001600160401b0360e08e013511156143ab57600080fd5b6143bb8e60e08f01358f01613eb6565b90945092506001600160401b036101008e013511156143d957600080fd5b6143ea8e6101008f01358f01613eb6565b81935080925050509295989b509295989b509295989b565b60008060008060008060008060008060006101408c8e03121561442457600080fd5b61442e8d8d613e87565b9a5061443c60608d01613e9f565b995060808c0135985060a08c0135975060c08c013596506001600160401b038060e08e0135111561446c57600080fd5b61447c8e60e08f01358f01613eb6565b90975095506101008d013581101561449357600080fd5b6144a48e6101008f01358f01613eb6565b90955093506101208d01358110156144bb57600080fd5b506144cd8d6101208e01358e01613eb6565b81935080925050509295989b509295989b9093969950565b600080600080606085870312156144fb57600080fd5b61450485613e9f565b935061451260208601613e9f565b925060408501356001600160401b038082111561452e57600080fd5b818701915087601f83011261454257600080fd5b81358181111561455157600080fd5b8860208260051b850101111561456657600080fd5b95989497505060200194505050565b60008060008060006080868803121561458d57600080fd5b61459686613e9f565b9450602086013593506145ab60408701614217565b925060608601356001600160401b038111156140d757600080fd5b600080608083850312156145d957600080fd5b6145e38484613e87565b915061403a60608401613e9f565b6020808252825182820181905260009190848201906040850190845b818110156146325783516001600160a01b03168352928401929184019160010161460d565b50909695505050505050565b60008060008060008060008060c0898b03121561465a57600080fd5b61466389613e9f565b975061467160208a01613e9f565b96506040890135955061468660608a01614217565b945060808901356001600160401b03808211156146a257600080fd5b6146ae8c838d01613eb6565b909650945060a08b01359150808211156146c757600080fd5b506146d48b828c01613eb6565b999c989b5096995094979396929594505050565b6000806000606084860312156146fd57600080fd5b61470684613e9f565b925061471460208501613f92565b915061472260408501613e9f565b90509250925092565b60008060006060848603121561474057600080fd5b61474984613f92565b92506142dc60208501613e9f565b60008060006060848603121561476c57600080fd5b61474984613e9f565b600080600060a0848603121561478a57600080fd5b6147948585613e87565b92506147a260608501613e9f565b9150608084013590509250925092565b600080604083850312156147c557600080fd5b61402c83613f92565b600080600080608085870312156147e457600080fd5b6147ed85613e9f565b93506147fb60208601613f92565b92506040850135915061413d606086016141ab565b815181526020808301519082015260408101611655565b60006020828403121561483957600080fd5b611d1f826141ab565b838152818360208301376000910160200190815292915050565b63ffffffff61486a82613f92565b168252602081013560208301526001600160401b0361488b604083016141ab565b1660408301525050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6148c8818961485c565b86606082015260e0608082015260006148e560e083018789614895565b6001600160a01b03861660a084015282810360c0840152614907818587614895565b9a9950505050505050505050565b60808101614923828561485c565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561496357600080fd5b815160038110611d1f57600080fd5b80151581146132ab57600080fd5b60006020828403121561499257600080fd5b8151611d1f81614972565b6001600160a01b03948516815263ffffffff93909316602084015292166040820152606081019190915260800190565b6000602082840312156149df57600080fd5b8135611d1f81614972565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614a1157600080fd5b81516001600160401b0380821115614a2b57614a2b6149ea565b604051601f8301601f19908116603f01168101908282118183101715614a5357614a536149ea565b81604052838152866020858801011115614a6c57600080fd5b6112ae846020830160208901614148565b600060208284031215614a8f57600080fd5b81516001600160401b03811115614aa557600080fd5b6122ae84828501614a00565b63ffffffff95909516855260208501939093526001600160a01b039190911660408401526001600160401b03166060830152608082015260a00190565b8a815261ffff8a16602082015288604082015287606082015260e060808201526000614b1e60e08301888a614895565b82810360a0840152614b31818789614895565b905082810360c0840152614b46818587614895565b9d9c50505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561165557611655614b57565b6000610120614b8f838e61485c565b8b60608401528a60808401528960a08401528060c0840152614bb4818401898b614895565b905082810360e0840152614bc9818789614895565b9050828103610100840152614b46818587614895565b6001600160a01b03841681526040602080830182905282820184905260009190606090818501600587901b8601830188865b89811015614cc257888303605f190184528135368c9003605e19018112614c3757600080fd5b8b0163ffffffff80614c4883613f92565b16855280614c57888401613f92565b16878601525087810135601e19823603018112614c7357600080fd5b0185810190356001600160401b03811115614c8d57600080fd5b803603821315614c9c57600080fd5b8789860152614cae8886018284614895565b958701959450505090840190600101614c11565b50909a9950505050505050505050565b8183823760009101908152919050565b6001600160a01b038781168252861660208201526040810185905261ffff8416606082015260a060808201819052600090614d209083018486614895565b98975050505050505050565b600060018060a01b03808a16835288602084015260a06040840152614d5560a08401888a614895565b81871660608501528381036080850152614d70818688614895565b9b9a5050505050505050505050565b63ffffffff9390931683526001600160a01b03919091166020830152604082015260600190565b60a08101614db4828661485c565b6001600160a01b0393909316606082015260800152919050565b6001600160401b0381811683821601908082111561407e5761407e614b57565b6000808335601e19843603018112614e0557600080fd5b8301803591506001600160401b03821115614e1f57600080fd5b60200191503681900382131561149e57600080fd5b606080825285516001600160401b031682820152602086015163ffffffff16608083015260408601516001600160a01b031660a0830152850151600090614e8360c084018263ffffffff169052565b50608086015160e083015260a086015161010083015260c086015160e0610120840152614eb461014084018261416c565b90508281036020840152614ec9818688614895565b9150506127b0604083018415159052565b600060408284031215614eec57600080fd5b604051604081018181106001600160401b0382111715614f0e57614f0e6149ea565b604052825181526020928301519281019290925250919050565b600060408284031215614f3a57600080fd5b611d1f8383614eda565b60008060608385031215614f5757600080fd5b614f618484614eda565b915060408301516001600160401b03811115614f7c57600080fd5b614f8885828601614a00565b9150509250929050565b606081526000614fa5606083018761416c565b8281036020840152614fb8818688614895565b91505060018060a01b038316604083015295945050505050565b600060208284031215614fe457600080fd5b5051919050565b60608101611655828461485c565b6000825161500b818460208701614148565b919091019291505056fea26469706673582212209ef147cc654e914d176e2ac7917fe8bc66363d9208d712a87ac7dc2d44b4357964736f6c63430008160033608060405234801561001057600080fd5b506101c3806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a7146100655780631881d94d1461008d57806354fd4d501461009c5780636750cd4c146100c3575b604051632657b6c360e01b815260040160405180910390fd5b61007861007336600461010e565b6100d7565b60405190151581526020015b60405180910390f35b6002604051610084919061013f565b6040805167ffffffffffffffff815260ff6020820152600291810191909152606001610084565b6100786100d1366004610167565b50600190565b60006001600160e01b031982166325fc096160e21b148061010857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561012057600080fd5b81356001600160e01b03198116811461013857600080fd5b9392505050565b602081016003831061016157634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561017957600080fd5b813563ffffffff8116811461013857600080fdfea2646970667358221220f92fb2dbec96d2ac3e18e3f656288df43a7f5cf4b63f60a0a026e4fbeed116aa64736f6c63430008160033608060405234801561001057600080fd5b506040516114d63803806114d683398101604081905261002f9161010a565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e816100ba565b506001600160a01b03166000908152600260205260409020805460ff1916600190811790915580546001600160801b03191668056bc75e2d6310000017905560058054602f60801b6001600160801b039190911617905561013a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561011c57600080fd5b81516001600160a01b038116811461013357600080fd5b9392505050565b61138d806101496000396000f3fe6080604052600436106101405760003560e01c80638ca2fb08116100b6578063d350ad251161006f578063d350ad2514610441578063da26663a14610461578063dbbb415514610522578063e0ad121a14610542578063f2fde38b146105cb578063fd9be522146105eb57600080fd5b80638ca2fb08146103595780638da5cb5b1461039957806392807f58146103b7578063c1723a1d146103e9578063c1840327146103fc578063cd68b79b1461041a57600080fd5b80635d6d7ccb116101085780635d6d7ccb146102405780635e280f1114610260578063715018a6146102985780637bc3c9ab146102ad5780637dc438a4146102ea57806388a4124c1461030a57600080fd5b806311f2c343146101455780632f7cb0b41461017c5780633161b7f61461019e57806336a5beba146101be57806352a7251014610220575b600080fd5b34801561015157600080fd5b5061016961016036600461100d565b60009392505050565b6040519081526020015b60405180910390f35b34801561018857600080fd5b5061019c610197366004611057565b61060b565b005b3480156101aa57600080fd5b5061019c6101b9366004611079565b610632565b3480156101ca57600080fd5b506040805180820182526000808252602091820152815180830183526004546001600160401b03811680835263ffffffff600160401b909204821692840192835284519081529151169181019190915201610173565b34801561022c57600080fd5b5061019c61023b366004611104565b610773565b34801561024c57600080fd5b5061019c61025b366004611057565b6107a6565b34801561026c57600080fd5b50600654610280906001600160a01b031681565b6040516001600160a01b039091168152602001610173565b3480156102a457600080fd5b5061019c610819565b3480156102b957600080fd5b506102cd6102c8366004611152565b61082d565b604080519283526001600160801b03909116602083015201610173565b3480156102f657600080fd5b5061019c610305366004611170565b6108c8565b34801561031657600080fd5b5061032a61032536600461100d565b610989565b604080519485526001600160801b03938416602086015291831691840191909152166060820152608001610173565b34801561036557600080fd5b50610389610374366004611188565b60026020526000908152604090205460ff1681565b6040519015158152602001610173565b3480156103a557600080fd5b506000546001600160a01b0316610280565b3480156103c357600080fd5b506005546001600160801b03165b6040516001600160801b039091168152602001610173565b61032a6103f736600461100d565b6109ab565b34801561040857600080fd5b506001546001600160801b03166103d1565b34801561042657600080fd5b506005546103d190600160801b90046001600160801b031681565b34801561044d57600080fd5b5061019c61045c366004611057565b6109dc565b34801561046d57600080fd5b506104e861047c3660046111a3565b60408051606080820183526000808352602080840182905292840181905263ffffffff94851681526003835283902083519182018452546001600160801b0381168252600160801b81046001600160401b031692820192909252600160c01b9091049092169082015290565b6040805182516001600160801b031681526020808401516001600160401b0316908201529181015163ffffffff1690820152606001610173565b34801561052e57600080fd5b5061019c61053d366004611188565b610a06565b34801561054e57600080fd5b506104e861055d3660046111be565b60408051606080820183526000808352602080840182905292840181905261ffff949094168452600382529282902082519384018352546001600160801b03811684526001600160401b03600160801b82041691840191909152600160c01b900463ffffffff169082015290565b3480156105d757600080fd5b5061019c6105e6366004611188565b610a30565b3480156105f757600080fd5b5061019c6106063660046111d9565b610a6e565b610613610a84565b600580546001600160801b03928316600160801b029216919091179055565b336106456000546001600160a01b031690565b6001600160a01b031614610683573360009081526002602052604090205460ff166106835760405163320ae52960e01b815260040160405180910390fd5b60005b8181101561076e57368383838181106106a1576106a1611203565b60800291909101915061076590506106bc60208301836111a3565b6106ce36849003840160208501611230565b805160208083015160409384015184516060810186526001600160801b0394851681526001600160401b0392831681850190815263ffffffff9283168288019081529783166000908152600390955295909320925183549551965194166001600160c01b031990951694909417600160801b95909116949094029390931763ffffffff60c01b1916600160c01b9190921602179055565b50600101610686565b505050565b61077b610a84565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b336107b96000546001600160a01b031690565b6001600160a01b0316146107f7573360009081526002602052604090205460ff166107f75760405163320ae52960e01b815260040160405180910390fd5b600580546001600160801b0319166001600160801b0392909216919091179055565b610821610a84565b61082b6000610ab1565b565b6000808461ffff16606e148061084857508461ffff1661279f145b8061085857508461ffff16614eaf145b156108755761086c8561ffff168585610b01565b915091506108c0565b8461ffff16606f148061088d57508461ffff16612794145b8061089d57508461ffff16614ea4145b156108b15761086c8561ffff168585610c0e565b61086c8561ffff168585610d5e565b935093915050565b336108db6000546001600160a01b031690565b6001600160a01b031614610919573360009081526002602052604090205460ff166109195760405163320ae52960e01b815260040160405180910390fd5b6109296106bc60208301836111a3565b600061093b60a08301608084016112a9565b9050600061094f60c0840160a085016111a3565b6004805463ffffffff909216600160401b026bffffffffffffffffffffffff199092166001600160401b0390941693909317179091555050565b60008060008061099a878787610dfe565b935093509350935093509350935093565b6000808080806109bf565b60405180910390fd5b6109ca888888610dfe565b94509450945094505093509350935093565b6109e4610a84565b600180546001600160801b0319166001600160801b0392909216919091179055565b610a0e610a84565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b610a38610a84565b6001600160a01b038116610a6257604051631e4fbdf760e01b8152600060048201526024016109b6565b610a6b81610ab1565b50565b610a76610a84565b610a808282610ecc565b5050565b6000546001600160a01b0316331461082b5760405163118cdaa760e01b81523360048201526024016109b6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b63ffffffff8381166000908152600360205260408120600454600554929384938492600160401b900490911690606490610b4b90600160801b90046001600160801b0316896112da565b610b55919061130d565b610b5f91906112da565b8254909150600090610b7e90600160c01b900463ffffffff16886112da565b83546004549192506000916001600160401b03600160801b90920482169184918691610bab91168b611321565b610bb59190611321565b610bbf9190611321565b610bc991906112da565b60015485549192506001600160801b0390811691610be89116836112da565b610bf2919061130d565b935493996001600160801b039094169850929650505050505050565b6000806000610c1c86610f79565b63ffffffff80821660009081526003602052604081208054939450929091610c4c91600160c01b900416886112da565b610c5890610c74611321565b8254909150600090610c7a90600160801b90046001600160401b0316836112da565b63ffffffff808b1660009081526003602052604081208054939450929091610caa91600160c01b9004168b6112da565b8254909150600090600160801b90046001600160401b0316610ccc8b84611321565b610cd691906112da565b60015487549192506000916001600160801b0391821691610cf89116876112da565b610d02919061130d565b60015485549192506000916001600160801b0391821691610d249116856112da565b610d2e919061130d565b90506000610d3c8284611321565b9554959f6001600160801b039096169e50949c50505050505050505050505050565b63ffffffff80841660009081526003602052604081208054919283928391610d8e91600160c01b900416876112da565b8254909150600090600160801b90046001600160401b0316610db08784611321565b610dba91906112da565b60015484549192506001600160801b0390811691610dd99116836112da565b610de3919061130d565b925492986001600160801b0390931697509195505050505050565b600080808080610e1061753089611334565b90508063ffffffff16606e1480610e2e57508063ffffffff1661279f145b80610e4057508063ffffffff16614eaf145b15610e5a57610e50818888610b01565b9095509350610ea9565b8063ffffffff16606f1480610e7657508063ffffffff16612794145b80610e8857508063ffffffff16614ea4145b15610e9857610e50818888610c0e565b610ea3818888610d5e565b90955093505b505060015460055493979296506001600160801b03908116955090921692509050565b6001600160a01b038216610ef3576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b505090508061076e57604051631196f20d60e21b81526001600160a01b0384166004820152602481018390526044016109b6565b600080610f8861753084611334565b90508063ffffffff16606f03610fa15750606592915050565b8063ffffffff1661279403610fba575061278992915050565b8063ffffffff16614ea403610fd35750614e9992915050565b604051633d0b0cf760e21b815263ffffffff821660048201526024016109b6565b803563ffffffff8116811461100857600080fd5b919050565b60008060006060848603121561102257600080fd5b61102b84610ff4565b95602085013595506040909401359392505050565b80356001600160801b038116811461100857600080fd5b60006020828403121561106957600080fd5b61107282611040565b9392505050565b6000806020838503121561108c57600080fd5b82356001600160401b03808211156110a357600080fd5b818501915085601f8301126110b757600080fd5b8135818111156110c657600080fd5b8660208260071b85010111156110db57600080fd5b60209290920196919550909350505050565b80356001600160a01b038116811461100857600080fd5b6000806040838503121561111757600080fd5b611120836110ed565b91506020830135801515811461113557600080fd5b809150509250929050565b803561ffff8116811461100857600080fd5b60008060006060848603121561116757600080fd5b61102b84611140565b600060c0828403121561118257600080fd5b50919050565b60006020828403121561119a57600080fd5b611072826110ed565b6000602082840312156111b557600080fd5b61107282610ff4565b6000602082840312156111d057600080fd5b61107282611140565b600080604083850312156111ec57600080fd5b6111f5836110ed565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b80356001600160401b038116811461100857600080fd5b60006060828403121561124257600080fd5b604051606081018181106001600160401b038211171561127257634e487b7160e01b600052604160045260246000fd5b60405261127e83611040565b815261128c60208401611219565b602082015261129d60408401610ff4565b60408201529392505050565b6000602082840312156112bb57600080fd5b61107282611219565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176112f1576112f16112c4565b92915050565b634e487b7160e01b600052601260045260246000fd5b60008261131c5761131c6112f7565b500490565b808201808211156112f1576112f16112c4565b600063ffffffff8084168061134b5761134b6112f7565b9216919091069291505056fea26469706673582212206b43491dddca0e712925449e0e0cc61e5b3807b0aa8c50159cebeaf7e10427a464736f6c6343000816003360e06040523480156200001157600080fd5b5060405162004ac038038062004ac083398101604081905262000034916200018b565b82828282836001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000077573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009d9190620001d8565b6001600160a01b03821660805263ffffffff811660a05283833380620000dd57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000e88162000122565b5060c0919091526002555050600680546001600160a01b0319166001600160a01b0398909816979097179096555062000207945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200018857600080fd5b50565b60008060008060808587031215620001a257600080fd5b8451620001af8162000172565b6020860151909450620001c28162000172565b6040860151606090960151949790965092505050565b600060208284031215620001eb57600080fd5b815163ffffffff811681146200020057600080fd5b9392505050565b60805160a05160c0516148706200025060003960008181611d100152611e730152600050506000818161069a0152818161079f015281816112b101526117d901526148706000f3fe60806040526004361061014f5760003560e01c806361d027b3116100b6578063d15b0d491161006f578063d15b0d4914610450578063d80e9bd914610470578063f0f442601461049d578063f2fde38b146104bd578063faaebd21146104dd578063fd9be5221461051857600080fd5b806361d027b3146103905780636750cd4c146103b0578063715018a6146103d05780638da5cb5b146103e55780639c33abf714610403578063c14c43491461043057600080fd5b806329460b0b1161010857806329460b0b1461025357806339e3f938146102735780634389e58f146102a057806343ea4fa9146102ce5780634d963200146102ee57806354fd4d501461036357600080fd5b806301ffc9a71461015b5780630e97289b14610190578063188183f4146101c85780631881d94d146101f5578063200175f71461021157806320efd7221461023357600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017b6101763660046136fd565b610538565b60405190151581526020015b60405180910390f35b34801561019c57600080fd5b506006546101b0906001600160a01b031681565b6040516001600160a01b039091168152602001610187565b3480156101d457600080fd5b506101e86101e3366004613769565b61058a565b60405161018791906137a2565b34801561020157600080fd5b50600060405161018791906137c8565b34801561021d57600080fd5b5061023161022c3660046137f0565b610663565b005b34801561023f57600080fd5b5061023161024e366004613875565b61079d565b34801561025f57600080fd5b5061023161026e3660046138c9565b610912565b34801561027f57600080fd5b5061029361028e366004613769565b610aaa565b60405161018791906139c0565b3480156102ac57600080fd5b506102c06102bb3660046139ec565b610be5565b604051610187929190613aeb565b3480156102da57600080fd5b506102936102e9366004613769565b610c7a565b3480156102fa57600080fd5b5061033f610309366004613769565b600460209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201610187565b34801561036f57600080fd5b50604080516003815260006020820152600291810191909152606001610187565b34801561039c57600080fd5b506003546101b0906001600160a01b031681565b3480156103bc57600080fd5b5061017b6103cb366004613b0f565b610f86565b3480156103dc57600080fd5b50610231610f91565b3480156103f157600080fd5b506000546001600160a01b03166101b0565b34801561040f57600080fd5b5061042361041e366004613b2c565b610fa5565b6040516101879190613b77565b34801561043c57600080fd5b5061023161044b366004613b8a565b611037565b34801561045c57600080fd5b5061023161046b366004613bfe565b611170565b34801561047c57600080fd5b5061049061048b3660046139ec565b6111e5565b6040516101879190613c17565b3480156104a957600080fd5b506102316104b8366004613c2e565b611255565b3480156104c957600080fd5b506102316104d8366004613c2e565b611269565b3480156104e957600080fd5b5061050a6104f8366004613c2e565b60056020526000908152604090205481565b604051908152602001610187565b34801561052457600080fd5b50610231610533366004613c4b565b6112a4565b60006001600160e01b031982166325fc096160e21b148061056957506001600160e01b0319821663b6e9ace360e01b145b8061058457506301ffc9a760e01b6001600160e01b03198316145b92915050565b604080518082019091526000808252602082015263ffffffff80831660008181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec602090815260408083206001600160a01b038916845260048352818420948452939091528120805492939092169081900361060e57825463ffffffff16610610565b805b63ffffffff168452815464010000000090046001600160a01b03168061064857835464010000000090046001600160a01b031661064a565b805b6001600160a01b03166020860152509295945050505050565b6003546001600160a01b0316331461068e5760405163885762a760e01b815260040160405180910390fd5b826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071a9190613c77565b6001600160a01b031603610741576040516339a5741160e21b815260040160405180910390fd5b61074c838383611384565b604080516001600160a01b038086168252841660208201529081018290527fe081464b7278501267de69fa85b7b9560b0ae05d5fbfaab9b1986c70356e2efe906060015b60405180910390a1505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146107e65760405163467409c360e01b815260040160405180910390fd5b60005b8181101561090c573683838381811061080457610804613c94565b90506020028101906108169190613caa565b905061082d6108286020830183613b0f565b6113c4565b600161083f6040830160208401613b0f565b63ffffffff160361087f5761087a61085a6020830183613b0f565b866108686040850185613cca565b8101906108759190613da0565b6113f2565b610903565b60026108916040830160208401613b0f565b63ffffffff16036108cc5761087a6108ac6020830183613b0f565b866108ba6040850185613cca565b8101906108c79190613f60565b61147a565b6108dc6040820160208301613b0f565b604051635d4be0fd60e11b815263ffffffff90911660048201526024015b60405180910390fd5b506001016107e9565b50505050565b61091a6114c3565b60005b81811015610a6c573683838381811061093857610938613c94565b905060200281019061094a9190613f94565b905060ff61095b6020830183613faa565b61096c906040810190602001613fc0565b60ff160361098d576040516341d50bed60e11b815260040160405180910390fd5b60ff61099c6020830183613faa565b6109ad906060810190604001613fc0565b60ff16036109ce5760405163211089b360e11b815260040160405180910390fd5b6001600160401b036109e36020830183613faa565b6109f1906020810190613fdb565b6001600160401b031603610a185760405163281b33d760e11b815260040160405180910390fd5b610a36610a286020830183613faa565b610a3190613ff6565b6114f0565b610a636000610a486020840184613b0f565b610a556020850185613faa565b610a5e90613ff6565b611528565b5060010161091d565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b5608282604051610a9e929190614088565b60405180910390a15050565b610ab2613644565b6001600160a01b038316600090815260016020818152604080842063ffffffff87168552825292839020835160c08101855281546001600160401b038116825260ff600160401b8204811683860152600160481b8204811683880152600160501b9091041660608201529281018054855181850281018501909652808652939491936080860193830182828015610b7257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b54575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610bd457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb6575b505050505081525050905092915050565b60408051808201909152600080825260208201526060610c07868686866117c1565b600654604051631f5dad8b60e31b81529294509092506001600160a01b03169063faed6c5890610c3f908490899089906004016141cd565b600060405180830381600087803b158015610c5957600080fd5b505af1158015610c6d573d6000803e3d6000fd5b5050505094509492505050565b610c82613644565b63ffffffff821660008181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602090815260408083206001600160a01b03881684526001835281842094845293909152902080546001600160401b031680610cf75782546001600160401b03168452610d14565b6001600160401b0381811614610d14576001600160401b03811684525b8154600160401b900460ff16610dae578254600160401b900460ff1615610da95782600101805480602002602001604051908101604052809291908181526020018280548015610d8d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d6f575b505050505060808501528254600160401b900460ff1660208501525b610e35565b8154600160401b900460ff90811614610e355781600101805480602002602001604051908101604052809291908181526020018280548015610e1957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dfb575b505050505060808501528154600160401b900460ff1660208501525b8154600160481b900460ff16610ede578254600160481b900460ff1615610ed95782600201805480602002602001604051908101604052809291908181526020018280548015610eae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e90575b505050505060a0850152825460ff600160481b820481166040870152600160501b9091041660608501525b610f74565b8154600160481b900460ff90811614610f745781600201805480602002602001604051908101604052809291908181526020018280548015610f4957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f2b575b505050505060a0850152815460ff600160481b820481166040870152600160501b9091041660608501525b610f7d846114f0565b50505092915050565b600061058482611895565b610f996114c3565b610fa360006118f0565b565b606060001963ffffffff831601610fe657610fc0838561058a565b604051602001610fd091906137a2565b6040516020818303038152906040529050611030565b60011963ffffffff83160161100f57610fff8385610c7a565b604051602001610fd091906139c0565b604051635d4be0fd60e11b815263ffffffff831660048201526024016108fa565b9392505050565b61103f6114c3565b60005b8181101561113e573683838381811061105d5761105d613c94565b606090810292909201925060009161107b9150830160408401613c2e565b6001600160a01b0316036110a257604051631074e82d60e11b815260040160405180910390fd5b6110b26040820160208301613b0f565b63ffffffff166000036110d8576040516349cfac4360e01b815260040160405180910390fd5b6000808052600460209081528201907f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec906111138385613b0f565b63ffffffff16815260208101919091526040016000206111338282614213565b505050600101611042565b507f2b001e1c6683bf79cc52891bd7215b204c787d18134fc7f3d21b4f32a49e47de8282604051610a9e92919061426c565b6111786114c3565b6002548111156111a95760025460405163068109f760e31b81526108fa918391600401918252602082015260400190565b60028190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b7842906020015b60405180910390a150565b604080518082019091526000808252602082015260008061123661120f6060890160408a01613c2e565b61121f60808a0160608b01613b0f565b61122c60c08b018b613cca565b9050878a8a611940565b604080518082019091529182526020820152925050505b949350505050565b61125d6114c3565b61126681611a39565b50565b6112716114c3565b6001600160a01b03811661129b57604051631e4fbdf760e01b8152600060048201526024016108fa565b611266816118f0565b6112ad81611a87565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190613c77565b905061133e818484611ad8565b604080513381526001600160a01b03851660208201529081018390527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a666988390606001610790565b6001600160a01b0382166113ab576040516306b7a93160e41b815260040160405180910390fd5b6113bf6001600160a01b0384168383611afb565b505050565b6113cd81611895565b61126657604051633c30434160e21b815263ffffffff821660048201526024016108fa565b6001600160a01b03808316600090815260046020908152604080832063ffffffff8089168552908352928190208551815493870151909516640100000000026001600160c01b03199093169490931693909317179055517f779cb2dd9d2bb1be1737d05435d744facbfb84a2a4912e21379d39beddcdc80590610790908490869085906142ec565b611485828483611528565b61148f8284610c7a565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f50818284836040516107909392919061432e565b6000546001600160a01b03163314610fa35760405163118cdaa760e01b81523360048201526024016108fa565b602081015160ff1615801561150a5750606081015160ff16155b156112665760405163ce2c375160e01b815260040160405180910390fd5b602081015160ff90811614806115435750602081015160ff16155b15611571576080810151511561156c576040516341d50bed60e11b815260040160405180910390fd5b6115d7565b806020015160ff168160800151511415806115ac57506002611595600160ff614374565b61159f919061438d565b60ff16816020015160ff16115b156115ca576040516341d50bed60e11b815260040160405180910390fd5b6115d78160800151611b4d565b604081015160ff90811614806115f25750604081015160ff16155b156116465760a0810151511561161b5760405163211089b360e11b815260040160405180910390fd5b606081015160ff1615611641576040516338682fa960e01b815260040160405180910390fd5b6116eb565b806040015160ff168160a00151511415806116815750600261166a600160ff614374565b611674919061438d565b60ff16816040015160ff16115b1561169f5760405163211089b360e11b815260040160405180910390fd5b606081015160ff1615806116c05750806040015160ff16816060015160ff16115b156116de576040516338682fa960e01b815260040160405180910390fd5b6116eb8160a00151611b4d565b6001600160a01b038316600090815260016020818152604080842063ffffffff8716855282529283902084518154868401519587015160608801516001600160401b0390931668ffffffffffffffffff1990921691909117600160401b60ff97881602176affff0000000000000000001916600160481b9187169190910260ff60501b191617600160501b95909116949094029390931783556080840151805185949361179d9390850192019061368c565b5060a082015180516117b991600284019160209091019061368c565b505050505050565b604080518082019091526000808252602082015260607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146118205760405163467409c360e01b815260040160405180910390fd5b60008061182e888888611bb4565b909250905060008061186061184960608c0160408d01613c2e565b61185960808d0160608e01613b0f565b858a611c81565b909250905061186f82846143bd565b604080518082019091529081526020810191909152945091925050505b94509492505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604081208054600160401b900460ff16151580611030575054600160501b900460ff16151592915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806119508686611d8f565b9150915060006119618b8b84611da8565b9050600061196f8c8c61058a565b90506119858a826000015163ffffffff16611db5565b80602001516001600160a01b031663709eb6648c8e8d886040518563ffffffff1660e01b81526004016119bb94939291906143d0565b602060405180830381865afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc9190614403565b611a0690836143bd565b9150600080611a178e8e868e611de4565b9092509050611a2682856143bd565b9e909d509b505050505050505050505050565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f906020016111da565b3360009081526005602052604090205480821115611ac25760405163068109f760e31b815260048101839052602481018290526044016108fa565b3360009081526005602052604090209190039055565b6001600160a01b038316611af0576113bf8282611eb5565b6113bf838383611384565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113bf908490611f62565b6000805b82518110156113bf576000838281518110611b6e57611b6e613c94565b60200260200101519050826001600160a01b0316816001600160a01b031611611baa5760405163447516e160e01b815260040160405180910390fd5b9150600101611b51565b60606000806000611bc58686611d8f565b90925090506000611bef611bdf60608a0160408b01613c2e565b6101e360808b0160608c01613b0f565b90506000611c0060c08a018a613cca565b90509050611c1881836000015163ffffffff16611db5565b6020820151611c4890611c3160808c0160608d01613b0f565b611c4160608d0160408e01613c2e565b8488611fc5565b611c5290866143bd565b9450600080611c618b866120be565b9092509050611c7082886143bd565b909b909a5098505050505050505050565b60035460009081906001600160a01b03161561188c576040516001600160a01b038716602482015263ffffffff8616604482015260648101859052831515608482015260009060a40160408051601f19818403018152919052602080820180516001600160e01b0316636a8e2a4360e11b1790526003549192506000918291611d38916001600160a01b0316907f0000000000000000000000000000000000000000000000000000000000000000908490876120e1565b91509150611d4887878484612191565b90955093508415611d83576003546001600160a01b031660009081526005602052604081208054879290611d7d9084906143bd565b90915550505b50505094509492505050565b606080611d9c848461220c565b915091505b9250929050565b600061124d8484846122f9565b80821115611de057604051636333d79f60e11b815260048101839052602481018290526044016108fa565b5050565b60035460009081906001600160a01b03161561188c576040516001600160a01b038716602482015263ffffffff8616604482015260648101859052831515608482015260009060a40160408051601f19818403018152919052602080820180516001600160e01b031663d424422160e01b1790526003549192506000918291611e99916001600160a01b0316907f00000000000000000000000000000000000000000000000000000000000000009086612373565b91509150611ea987878484612191565b9450945050505061188c565b6001600160a01b038216611edc576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611f29576040519150601f19603f3d011682016040523d82523d6000602084013e611f2e565b606091505b50509050806113bf57604051631196f20d60e21b81526001600160a01b0384166004820152602481018390526044016108fa565b6000611f776001600160a01b0384168361241f565b90508051600014158015611f9c575080806020019051810190611f9a919061441c565b155b156113bf57604051635274afe760e01b81526001600160a01b03841660048201526024016108fa565b6040516338bf452160e11b81526000906001600160a01b0387169063717e8a4290611ffa9088908890889088906004016143d0565b6020604051808303816000875af1158015612019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203d9190614403565b90508015612073576001600160a01b0386166000908152600560205260408120805483929061206d9084906143bd565b90915550505b604080516001600160a01b0388168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a195945050505050565b600060606120d660056120d0866144a8565b8561242d565b909590945092505050565b60006060863b80830361210857604080516000808252602082019092529250925050612187565b60008060008761ffff166001600160401b0381111561212957612129613d10565b6040519080825280601f01601f191660200182016040528015612153576020820181803683370190505b509050600080885160208a018c8f8ff191503d925087831115612174578792505b828152826000602083013e909450925050505b9550959350505050565b6000808315806121a2575082516020115b156121b25750600090508061188c565b6000838060200190518101906121c89190614403565b905085156121d857809150612202565b600060025488116121eb576002546121ed565b875b90508082116121fc57816121fe565b805b9350505b5094509492505050565b60608060008061221c868661257b565b91509150805160000361227457604080516000808252602082019092528391612268565b6040805180820190915260008152606060208201528152602001906001900390816122405790505b50935093505050611da1565b604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161228b5790505090506040518060400160405280600260ff16815260200183815250816000815181106122e1576122e1613c94565b60209081029190910101529196919550909350505050565b6000806123068585610c7a565b905060008351600014612337578360008151811061232657612326613c94565b602002602001015160200151612348565b604051806020016040528060008152505b90506000806123568361273a565b9150915061236784888a85856129a0565b98975050505050505050565b60006060853b80830361239a5760408051600080825260208201909252925092505061188c565b60008060008761ffff166001600160401b038111156123bb576123bb613d10565b6040519080825280601f01601f1916602001820160405280156123e5576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115612405578792505b828152826000602083013e90999098509650505050505050565b606061103083836000612b38565b60006060600061243c85612bd5565b9050600061244986612c62565b80516020820120606088015160408901519293509091600061246b8284610c7a565b90506000895160001461249c578960008151811061248b5761248b613c94565b6020026020010151602001516124ad565b604051806020016040528060008152505b905060606124ff8d846040518060a001604052808963ffffffff1681526020018c81526020018a815260200187600001516001600160401b03168152602001886001600160a01b031681525085612c7f565b604051919b5091506125179089908990602001614545565b60405160208183030381529060405298507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464483608001518460a001518360405161256393929190614574565b60405180910390a15050505050505050935093915050565b60608060028310156125a35760405163196499c760e21b8152600060048201526024016108fa565b60006125b260028286886145d2565b6125bb916145fc565b60f01c905060026002198201612723578060005b868310156126c85760006125e860018501858a8c6145d2565b6125f19161462c565b60f81c9050600081900361261b57604051636780cfaf60e01b8152600060048201526024016108fa565b8160ff1660000361262e5780915061266b565b8160ff168160ff161461266b5736600061264a86868c8e6145d2565b9150915061265b8989868585612f1d565b9099509750859450919250829150505b600184019360009061268290600301868b8d6145d2565b61268b916145fc565b60f01c905060008190036126b55760405163196499c760e21b8152600481018690526024016108fa565b8060020161ffff168501945050506125cf565b8287146126eb5760405163196499c760e21b8152600481018490526024016108fa565b600287111561271c5736600061270385858b8d6145d2565b915091506127148888858585612f1d565b909850965050505b5050612731565b61272e82878761303d565b93505b50509250929050565b606080825160000361274b57915091565b6000612756846131c8565b90508060ff166001036128085760408051600180825281830190925290816020015b606081526020019060019003908161277857905050925083836000815181106127a3576127a3613c94565b6020908102919091010152604080516001808252818301909252908160200160208202803683370190505091506127db8460036132a2565b826000815181106127ee576127ee613c94565b602002602001019060ff16908160ff168152505050915091565b8060ff166001600160401b0381111561282357612823613d10565b60405190808252806020026020018201604052801561284c578160200160208202803683370190505b5091508060ff166001600160401b0381111561286a5761286a613d10565b60405190808252806020026020018201604052801561289d57816020015b60608152602001906001900390816128885790505b50925060008060ff5b86518310156129335760019092019160006128c188856132fe565b60029490940193905060006128d689866132a2565b90508260ff1660ff036128eb57809250612924565b8260ff168160ff16146129245760021984860301600061290c8b878461335b565b905061291a8a8a8784613468565b5093909301929150815b5061ffff1692909201916128a6565b818303600061294389858461335b565b905061295188888584613468565b60005b8660ff168160ff16101561299457878160ff168151811061297757612977613c94565b6020908102919091010180516000190160ff169052600101612954565b50505050505050915091565b600080866040015187602001516129b7919061465a565b905060005b8160ff168160ff161015612b2d576000886020015160ff168260ff1610612a115760a089015160208a01516129f19084614374565b60ff1681518110612a0457612a04613c94565b6020026020010151612a33565b88608001518260ff1681518110612a2a57612a2a613c94565b60200260200101515b60408051602081019091526000808252919250905b8651811015612aa0578360ff16878281518110612a6757612a67613c94565b602002602001015160ff1603612a9857878181518110612a8957612a89613c94565b60200260200101519150612aa0565b600101612a48565b508951604051630c2eceab60e21b81526001600160a01b038416916330bb3aac91612ad3918d918d908790600401614673565b602060405180830381865afa158015612af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b149190614403565b612b1e90866143bd565b945050508060010190506129bc565b505095945050505050565b606081471015612b5d5760405163cd78605960e01b81523060048201526024016108fa565b600080856001600160a01b03168486604051612b7991906146b2565b60006040518083038185875af1925050503d8060008114612bb6576040519150601f19603f3d011682016040523d82523d6000602084013e612bbb565b606091505b5091509150612bcb86838361357e565b9695505050505050565b805160208083015160408085015160608087015160808801519351600160f81b9681019690965260c09690961b6001600160c01b031916602186015260e093841b6001600160e01b031990811660298701526001600160a01b03909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b60608160a001518260c00151604051602001612c4c9291906146c4565b60006060600080612c8f8561273a565b91509150600087604001518860200151612ca9919061465a565b90508060ff166001600160401b03811115612cc657612cc6613d10565b604051908082528060200260200182016040528015612cef578160200160208202803683370190505b50935060005b8160ff168160ff161015610c6d576000896020015160ff168260ff1610612d4a5760a08a015160208b0151612d2a9084614374565b60ff1681518110612d3d57612d3d613c94565b6020026020010151612d6c565b89608001518260ff1681518110612d6357612d63613c94565b60200260200101515b60408051602081019091526000808252919250905b8551811015612dd9578360ff16868281518110612da057612da0613c94565b602002602001015160ff1603612dd157868181518110612dc257612dc2613c94565b60200260200101519150612dd9565b600101612d81565b506040516395d376d760e01b81526001600160a01b038316906395d376d790612e08908d9085906004016146ea565b6020604051808303816000875af1158015612e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4b9190614403565b878460ff1681518110612e6057612e60613c94565b6020026020010181815250506000878460ff1681518110612e8357612e83613c94565b60200260200101511115612f1357868360ff1681518110612ea657612ea6613c94565b60200260200101518c6000846001600160a01b03166001600160a01b031681526020019081526020016000206000828254612ee191906143bd565b92505081905550868360ff1681518110612efd57612efd613c94565b602002602001015188612f1091906143bd565b97505b5050600101612cf5565b60608060001960ff861601612f9a57865115612f5c57868484604051602001612f489392919061475c565b604051602081830303815290604052612f93565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613032565b60011960ff86160161301457855115612fd657858484604051602001612fc29392919061475c565b60405160208183030381529060405261300d565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613032565b604051636780cfaf60e01b815260ff861660048201526024016108fa565b509495939450505050565b606060001961ffff8516016130dd576022821461306d576040516301b8ca5560e31b815260040160405180910390fd5b600061308e6130806022600286886145d2565b61308991614784565b6135da565b604051600160f81b60208201819052601160f01b602183015260238201526001600160801b0319608083901b166024820152909150603401604051602081830303815290604052915050611030565b60011961ffff8516016131a9576042821115806130fa5750606282115b15613118576040516360493e2b60e11b815260040160405180910390fd5b600061312b6130806022600286886145d2565b905060006131406130806042602287896145d2565b905060006041198501613156866042818a6145d2565b61315f91614784565b60405160086020938403029190911c9250613190916001916011918391889183916031916002918b918b91016147a2565b6040516020818303038152906040529350505050611030565b604051630417051360e41b815261ffff851660048201526024016108fa565b600080805b83518210156132775760019091019060006131e885846132fe565b905060028301925060028161ffff1610156132195760405163013adb8360e21b8152600481018490526024016108fa565b600061322586856132a2565b90508060ff1660ff0361324b576040516334f4f66f60e21b815260040160405180910390fd5b600160ff82161b83166132685760019485019460ff82161b831792505b5061ffff1691909101906131cd565b8351821461329b5760405163013adb8360e21b8152600481018390526024016108fa565b5050919050565b60006132af8260016143bd565b835110156132f55760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016108fa565b50016001015190565b600061330b8260026143bd565b835110156133525760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b60448201526064016108fa565b50016002015190565b60608161336981601f6143bd565b10156133a85760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016108fa565b6133b282846143bd565b845110156133f65760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016108fa565b606082158015613415576040519150600082526020820160405261345f565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561344e578051835260209283019201613436565b5050858452601f01601f1916604052505b50949350505050565b8160ff1660ff0361348c576040516334f4f66f60e21b815260040160405180910390fd5b600061349983600161465a565b905060005b84518110156117b95760008582815181106134bb576134bb613c94565b602002602001015190508060ff168360ff1603613530578682815181106134e4576134e4613c94565b6020026020010151846040516020016134fe929190614545565b60405160208183030381529060405287838151811061351f5761351f613c94565b6020026020010181905250506117b9565b8060ff16600003613575578286838151811061354e5761354e613c94565b602002602001019060ff16908160ff16815250508387838151811061351f5761351f613c94565b5060010161349e565b6060826135935761358e8261361b565b611030565b81511580156135aa57506001600160a01b0384163b155b156135d357604051639996b31560e01b81526001600160a01b03851660048201526024016108fa565b5080611030565b60006fffffffffffffffffffffffffffffffff821115613617576040516306dfcc6560e41b815260806004820152602481018390526044016108fa565b5090565b80511561362b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060c0016040528060006001600160401b03168152602001600060ff168152602001600060ff168152602001600060ff16815260200160608152602001606081525090565b8280548282559060005260206000209081019282156136e1579160200282015b828111156136e157825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906136ac565b506136179291505b8082111561361757600081556001016136e9565b60006020828403121561370f57600080fd5b81356001600160e01b03198116811461103057600080fd5b6001600160a01b038116811461126657600080fd5b803561374781613727565b919050565b63ffffffff8116811461126657600080fd5b80356137478161374c565b6000806040838503121561377c57600080fd5b823561378781613727565b915060208301356137978161374c565b809150509250929050565b815163ffffffff1681526020808301516001600160a01b03169082015260408101610584565b60208101600383106137ea57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060006060848603121561380557600080fd5b833561381081613727565b9250602084013561382081613727565b929592945050506040919091013590565b60008083601f84011261384357600080fd5b5081356001600160401b0381111561385a57600080fd5b6020830191508360208260051b8501011115611da157600080fd5b60008060006040848603121561388a57600080fd5b833561389581613727565b925060208401356001600160401b038111156138b057600080fd5b6138bc86828701613831565b9497909650939450505050565b600080602083850312156138dc57600080fd5b82356001600160401b038111156138f257600080fd5b6138fe85828601613831565b90969095509350505050565b60008151808452602080850194506020840160005b838110156139445781516001600160a01b03168752958201959082019060010161391f565b509495945050505050565b6001600160401b03815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c0608085015261399e60c085018261390a565b905060a083015184820360a08601526139b7828261390a565b95945050505050565b602081526000611030602083018461394f565b801515811461126657600080fd5b8035613747816139d3565b60008060008060608587031215613a0257600080fd5b84356001600160401b0380821115613a1957600080fd5b9086019060e08289031215613a2d57600080fd5b90945060208601359080821115613a4357600080fd5b818701915087601f830112613a5757600080fd5b813581811115613a6657600080fd5b886020828501011115613a7857600080fd5b602083019550809450505050613a90604086016139e1565b905092959194509250565b60005b83811015613ab6578181015183820152602001613a9e565b50506000910152565b60008151808452613ad7816020860160208601613a9b565b601f01601f19169290920160200192915050565b825181526020808401519082015260606040820152600061124d6060830184613abf565b600060208284031215613b2157600080fd5b81356110308161374c565b600080600060608486031215613b4157600080fd5b8335613b4c8161374c565b92506020840135613b5c81613727565b91506040840135613b6c8161374c565b809150509250925092565b6020815260006110306020830184613abf565b60008060208385031215613b9d57600080fd5b82356001600160401b0380821115613bb457600080fd5b818501915085601f830112613bc857600080fd5b813581811115613bd757600080fd5b866020606083028501011115613bec57600080fd5b60209290920196919550909350505050565b600060208284031215613c1057600080fd5b5035919050565b815181526020808301519082015260408101610584565b600060208284031215613c4057600080fd5b813561103081613727565b60008060408385031215613c5e57600080fd5b8235613c6981613727565b946020939093013593505050565b600060208284031215613c8957600080fd5b815161103081613727565b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112613cc057600080fd5b9190910192915050565b6000808335601e19843603018112613ce157600080fd5b8301803591506001600160401b03821115613cfb57600080fd5b602001915036819003821315611da157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715613d4857613d48613d10565b60405290565b60405160e081016001600160401b0381118282101715613d4857613d48613d10565b604051601f8201601f191681016001600160401b0381118282101715613d9857613d98613d10565b604052919050565b600060408284031215613db257600080fd5b604051604081018181106001600160401b0382111715613dd457613dd4613d10565b6040528235613de28161374c565b81526020830135613df281613727565b60208201529392505050565b80356001600160401b038116811461374757600080fd5b803560ff8116811461374757600080fd5b600082601f830112613e3757600080fd5b813560206001600160401b03821115613e5257613e52613d10565b8160051b613e61828201613d70565b9283528481018201928281019087851115613e7b57600080fd5b83870192505b84831015613ea3578235613e9481613727565b82529183019190830190613e81565b979650505050505050565b600060c08284031215613ec057600080fd5b613ec8613d26565b9050613ed382613dfe565b8152613ee160208301613e15565b6020820152613ef260408301613e15565b6040820152613f0360608301613e15565b606082015260808201356001600160401b0380821115613f2257600080fd5b613f2e85838601613e26565b608084015260a0840135915080821115613f4757600080fd5b50613f5484828501613e26565b60a08301525092915050565b600060208284031215613f7257600080fd5b81356001600160401b03811115613f8857600080fd5b61124d84828501613eae565b60008235603e19833603018112613cc057600080fd5b6000823560be19833603018112613cc057600080fd5b600060208284031215613fd257600080fd5b61103082613e15565b600060208284031215613fed57600080fd5b61103082613dfe565b60006105843683613eae565b6000808335601e1984360301811261401957600080fd5b83016020810192503590506001600160401b0381111561403857600080fd5b8060051b3603821315611da157600080fd5b8183526000602080850194508260005b8581101561394457813561406d81613727565b6001600160a01b03168752958201959082019060010161405a565b60208082528181018390526000906040808401600586901b8501820187855b888110156141bf57603f19808985030185528235603e198c36030181126140cd57600080fd5b8b0180356140da8161374c565b63ffffffff168552808801353682900360be190181126140f957600080fd5b858901889052016001600160401b0361411182613dfe565b1687860152614121888201613e15565b606060ff808316828901526141378a8501613e15565b92506080818416818a015261414d838601613e15565b935060a09250818416838a015261416681860186614002565b60c08b8101529450915061418190506101008901848361404a565b92505061419081840184614002565b93509050838783030160e08801526141a982848361404a565b978a0197965050509287019250506001016140a7565b509098975050505050505050565b6040815260006141e06040830186613abf565b8281036020840152838152838560208301376000602085830101526020601f19601f860116820101915050949350505050565b813561421e8161374c565b63ffffffff8116905081548163ffffffff198216178355602084013561424381613727565b6001600160c01b03199190911690911760209190911b640100000000600160c01b031617905550565b6020808252818101839052600090604080840186845b878110156142df5781356142958161374c565b63ffffffff908116845282860135906142ad8261374c565b1683860152818401356142bf81613727565b6001600160a01b0316838501526060928301929190910190600101614282565b5090979650505050505050565b6001600160a01b038416815263ffffffff831660208201526080810161124d6040830184805163ffffffff1682526020908101516001600160a01b0316910152565b6001600160a01b038416815263ffffffff831660208201526060604082018190526000906139b79083018461394f565b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156105845761058461435e565b600060ff8316806143ae57634e487b7160e01b600052601260045260246000fd5b8060ff84160491505092915050565b808201808211156105845761058461435e565b63ffffffff8516815260018060a01b0384166020820152826040820152608060608201526000612bcb6080830184613abf565b60006020828403121561441557600080fd5b5051919050565b60006020828403121561442e57600080fd5b8151611030816139d3565b600082601f83011261444a57600080fd5b81356001600160401b0381111561446357614463613d10565b614476601f8201601f1916602001613d70565b81815284602083860101111561448b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082360312156144ba57600080fd5b6144c2613d4e565b6144cb83613dfe565b81526144d96020840161375e565b60208201526144ea6040840161373c565b60408201526144fb6060840161375e565b60608201526080830135608082015260a083013560a082015260c08301356001600160401b0381111561452d57600080fd5b61453936828601614439565b60c08301525092915050565b60008351614557818460208801613a9b565b83519083019061456b818360208801613a9b565b01949350505050565b606081526000614587606083018661390a565b6020838203602085015261459b828761390a565b84810360408601528551808252602080880194509091019060005b818110156141bf578451835293830193918301916001016145b6565b600080858511156145e257600080fd5b838611156145ef57600080fd5b5050820193919092039150565b6001600160f01b031981358181169160028510156146245780818660020360031b1b83161692505b505092915050565b6001600160f81b031981358181169160018510156146245760019490940360031b84901b1690921692915050565b60ff81811683821601908111156105845761058461435e565b63ffffffff851681526001600160401b03841660208201526001600160a01b0383166040820152608060608201819052600090612bcb90830184613abf565b60008251613cc0818460208701613a9b565b828152600082516146dc816020850160208701613a9b565b919091016020019392505050565b6040815263ffffffff83511660408201526000602084015160a0606084015261471660e0840182613abf565b604086015160808581019190915260608701516001600160401b031660a08601528601516001600160a01b031660c0850152838103602085015290506139b78185613abf565b6000845161476e818460208901613a9b565b8201838582376000930192835250909392505050565b8035602083101561058457600019602084900360031b1b1692915050565b60f88a811b6001600160f81b0319908116835260f08b811b6001600160f01b031990811660018601528b841b8316600386015260808b901b6001600160801b031916600486015289841b831660148601529088901b1660158401529085901b1660178201526000614822601883018560801b6001600160801b0319169052565b5060288101919091526048019897505050505050505056fea2646970667358221220dd551f42927c798d00202c14dd31e2d00805c8165c9173b12faf3962d0d272e564736f6c6343000816003360c06040523480156200001157600080fd5b50604051620024413803806200244183398101604081905262000034916200013e565b8080816001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b919062000170565b3380620000c257604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000cd81620000ee565b506001600160a01b0390911660805263ffffffff1660a05250620001989050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200015157600080fd5b81516001600160a01b03811681146200016957600080fd5b9392505050565b6000602082840312156200018357600080fd5b815163ffffffff811681146200016957600080fd5b60805160a05161227c620001c5600039600061031e01526000818161041b0152610484015261227c6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806343ea4fa9116100a25780638da5cb5b116100715780638da5cb5b146102665780639c33abf714610281578063c40ff835146102a1578063e084d952146102b4578063f2fde38b146102c757600080fd5b806343ea4fa91461021857806354fd4d501461022b5780636750cd4c1461024b578063715018a61461025e57600080fd5b806320efd722116100de57806320efd7221461016f57806329460b0b1461018257806339e3f938146101955780633c782a52146101b557600080fd5b806301ffc9a7146101105780630223536e146101385780630894edf11461014d5780631881d94d14610160575b600080fd5b61012361011e3660046116ed565b6102da565b60405190151581526020015b60405180910390f35b61014b61014636600461177b565b610305565b005b61014b61015b3660046117d7565b610317565b600160405161012f9190611822565b61014b61017d3660046118a5565b610482565b61014b6101903660046118f7565b6105a4565b6101a86101a336600461194c565b61073c565b60405161012f9190611a35565b6101f96101c3366004611a48565b600260209081526000938452604080852082529284528284209052825290205460ff81169061010090046001600160401b031682565b6040805192151583526001600160401b0390911660208301520161012f565b6101a861022636600461194c565b610877565b60408051600381526000602082015260029181019190915260600161012f565b610123610259366004611a7d565b610b83565b61014b610b8e565b6000546040516001600160a01b03909116815260200161012f565b61029461028f366004611a98565b610ba2565b60405161012f9190611ad2565b61014b6102af366004611b21565b610c0b565b6101236102c2366004611d10565b610c1b565b61014b6102d5366004611d5d565b610c30565b60006001600160e01b03198216630ab7be9f60e01b14806102ff57506102ff82610c6e565b92915050565b61031184848484610ca3565b50505050565b61034283837f0000000000000000000000000000000000000000000000000000000000000000610d89565b600061034e8484610e0c565b9050600061035c8585610e1e565b9050600061036a8383610877565b905061038e818787604051610380929190611d78565b604051809103902086610e41565b600060405180606001604052808463ffffffff1681526020016103b18989610f91565b81526020016103c08989610faa565b6001600160401b039081169091526040805163a825d74760e01b8152835163ffffffff166004820152602084015160248201529083015190911660448201526001600160a01b038681166064830152608482018890529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b5050505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146104cb5760405163467409c360e01b815260040160405180910390fd5b60005b8181101561031157368383838181106104e9576104e9611d88565b90506020028101906104fb9190611d9e565b905061051261050d6020830183611a7d565b610fcd565b60026105246040830160208401611a7d565b63ffffffff16036105645761055f61053f6020830183611a7d565b8661054d6040850185611dbe565b81019061055a9190611e04565b610ffb565b61059b565b6105746040820160208301611a7d565b604051635d4be0fd60e11b815263ffffffff90911660048201526024015b60405180910390fd5b506001016104ce565b6105ac611051565b60005b818110156106fe57368383838181106105ca576105ca611d88565b90506020028101906105dc9190611e38565b905060ff6105ed6020830183611e4e565b6105fe906040810190602001611e64565b60ff160361061f576040516341d50bed60e11b815260040160405180910390fd5b60ff61062e6020830183611e4e565b61063f906060810190604001611e64565b60ff16036106605760405163211089b360e11b815260040160405180910390fd5b6001600160401b036106756020830183611e4e565b610683906020810190611e7f565b6001600160401b0316036106aa5760405163281b33d760e11b815260040160405180910390fd5b6106c86106ba6020830183611e4e565b6106c390611e9a565b61107e565b6106f560006106da6020840184611a7d565b6106e76020850185611e4e565b6106f090611e9a565b6110b6565b506001016105af565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b5608282604051610730929190611f2a565b60405180910390a15050565b61074461162b565b6001600160a01b038316600090815260016020818152604080842063ffffffff87168552825292839020835160c08101855281546001600160401b038116825260ff600160401b8204811683860152600160481b8204811683880152600160501b909104166060820152928101805485518185028101850190965280865293949193608086019383018282801561080457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107e6575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561086657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610848575b505050505081525050905092915050565b61087f61162b565b63ffffffff821660008181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602090815260408083206001600160a01b03881684526001835281842094845293909152902080546001600160401b0316806108f45782546001600160401b03168452610911565b6001600160401b0381811614610911576001600160401b03811684525b8154600160401b900460ff166109ab578254600160401b900460ff16156109a6578260010180548060200260200160405190810160405280929190818152602001828054801561098a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161096c575b505050505060808501528254600160401b900460ff1660208501525b610a32565b8154600160401b900460ff90811614610a325781600101805480602002602001604051908101604052809291908181526020018280548015610a1657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109f8575b505050505060808501528154600160401b900460ff1660208501525b8154600160481b900460ff16610adb578254600160481b900460ff1615610ad65782600201805480602002602001604051908101604052809291908181526020018280548015610aab57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a8d575b505050505060a0850152825460ff600160481b820481166040870152600160501b9091041660608501525b610b71565b8154600160481b900460ff90811614610b715781600201805480602002602001604051908101604052809291908181526020018280548015610b4657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b28575b505050505060a0850152815460ff600160481b820481166040870152600160501b9091041660608501525b610b7a8461107e565b50505092915050565b60006102ff8261134f565b610b96611051565b610ba060006113aa565b565b606060011963ffffffff831601610be357610bbd8385610877565b604051602001610bcd9190611a35565b6040516020818303038152906040529050610c04565b604051635d4be0fd60e11b815263ffffffff83166004820152602401610592565b9392505050565b610c16838383610d89565b505050565b6000610c288484846113fa565b949350505050565b610c38611051565b6001600160a01b038116610c6257604051631e4fbdf760e01b815260006004820152602401610592565b610c6b816113aa565b50565b60006001600160e01b031982166325fc096160e21b14806102ff57506301ffc9a760e01b6001600160e01b03198316146102ff565b604080518082018252600181526001600160401b03831660208201529051600290600090610cd49088908890611d78565b604080519182900390912082526020808301939093529081016000908120868252835281812033808352908452908290208451815495909401516001600160401b03166101000268ffffffffffffffff00199415159490941668ffffffffffffffffff19909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab5691610d7b91879087908690889061206c565b60405180910390a150505050565b60518214610daa5760405163c9bf37b760e01b815260040160405180910390fd5b6001610db68484611503565b60ff1614610dd757604051633a9ae7b960e01b815260040160405180910390fd5b8063ffffffff16610de88484611525565b63ffffffff1614610c165760405163216964bf60e11b815260040160405180910390fd5b6000610c04610e1b8484611535565b90565b6000610e2e600d600984866120c6565b610e37916120f0565b60e01c9392505050565b610e4c8383836113fa565b610e695760405163130c463560e21b815260040160405180910390fd5b602083015160ff1615610efe5760005b836020015160ff168160ff161015610efc57600083815260026020908152604080832085845290915281206080860151805191929160ff8516908110610ec157610ec1611d88565b6020908102919091018101516001600160a01b03168252810191909152604001600020805468ffffffffffffffffff19169055600101610e79565b505b604083015160ff1615610c165760005b836040015160ff168160ff161015610311576000838152600260209081526040808320858452909152812060a0860151805191929160ff8516908110610f5657610f56611d88565b6020908102919091018101516001600160a01b03168252810191909152604001600020805468ffffffffffffffffff19169055600101610f0e565b6000610fa1602d600d84866120c6565b610c0491612120565b6000610fba6009600184866120c6565b610fc39161213e565b60c01c9392505050565b610fd68161134f565b610c6b57604051633c30434160e21b815263ffffffff82166004820152602401610592565b6110068284836110b6565b6110108284610877565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f50818284836040516110449392919061216c565b60405180910390a1505050565b6000546001600160a01b03163314610ba05760405163118cdaa760e01b8152336004820152602401610592565b602081015160ff161580156110985750606081015160ff16155b15610c6b5760405163ce2c375160e01b815260040160405180910390fd5b602081015160ff90811614806110d15750602081015160ff16155b156110ff57608081015151156110fa576040516341d50bed60e11b815260040160405180910390fd5b611165565b806020015160ff1681608001515114158061113a57506002611123600160ff6121b2565b61112d91906121cb565b60ff16816020015160ff16115b15611158576040516341d50bed60e11b815260040160405180910390fd5b6111658160800151611545565b604081015160ff90811614806111805750604081015160ff16155b156111d45760a081015151156111a95760405163211089b360e11b815260040160405180910390fd5b606081015160ff16156111cf576040516338682fa960e01b815260040160405180910390fd5b611279565b806040015160ff168160a001515114158061120f575060026111f8600160ff6121b2565b61120291906121cb565b60ff16816040015160ff16115b1561122d5760405163211089b360e11b815260040160405180910390fd5b606081015160ff16158061124e5750806040015160ff16816060015160ff16115b1561126c576040516338682fa960e01b815260040160405180910390fd5b6112798160a00151611545565b6001600160a01b038316600090815260016020818152604080842063ffffffff8716855282529283902084518154868401519587015160608801516001600160401b0390931668ffffffffffffffffff1990921691909117600160401b60ff97881602176affff0000000000000000001916600160481b9187169190910260ff60501b191617600160501b95909116949094029390931783556080840151805185949361132b93908501920190611673565b5060a08201518051611347916002840191602090910190611673565b505050505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604081208054600160401b900460ff16151580610c04575054600160501b900460ff16151592915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602083015160009060ff161561147d5760005b846020015160ff168160ff1610156114655761144f85608001518260ff168151811061143b5761143b611d88565b6020026020010151858588600001516115ac565b61145d576000915050610c04565b60010161140d565b50836040015160ff1660000361147d57506001610c04565b606084015160005b856040015160ff168160ff1610156114f7576114c78660a001518260ff16815181106114b3576114b3611d88565b6020026020010151868689600001516115ac565b156114ef57816114d6816121fb565b9250508160ff166000036114ef57600192505050610c04565b600101611485565b50600095945050505050565b600061151260018284866120c6565b61151b91612218565b60f81c9392505050565b6000610e2e6031602d84866120c6565b6000610fa16051603184866120c6565b6000805b8251811015610c1657600083828151811061156657611566611d88565b60200260200101519050826001600160a01b0316816001600160a01b0316116115a25760405163447516e160e01b815260040160405180910390fd5b9150600101611549565b600083815260026020908152604080832085845282528083206001600160a01b0388168452825280832081518083019092525460ff81161580158084526101009092046001600160401b03169383019390935290916116215750826001600160401b031681602001516001600160401b031610155b9695505050505050565b6040518060c0016040528060006001600160401b03168152602001600060ff168152602001600060ff168152602001600060ff16815260200160608152602001606081525090565b8280548282559060005260206000209081019282156116c8579160200282015b828111156116c857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611693565b506116d49291506116d8565b5090565b5b808211156116d457600081556001016116d9565b6000602082840312156116ff57600080fd5b81356001600160e01b031981168114610c0457600080fd5b60008083601f84011261172957600080fd5b5081356001600160401b0381111561174057600080fd5b60208301915083602082850101111561175857600080fd5b9250929050565b80356001600160401b038116811461177657600080fd5b919050565b6000806000806060858703121561179157600080fd5b84356001600160401b038111156117a757600080fd5b6117b387828801611717565b909550935050602085013591506117cc6040860161175f565b905092959194509250565b6000806000604084860312156117ec57600080fd5b83356001600160401b0381111561180257600080fd5b61180e86828701611717565b909790965060209590950135949350505050565b602081016003831061184457634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b038116811461177657600080fd5b60008083601f84011261187357600080fd5b5081356001600160401b0381111561188a57600080fd5b6020830191508360208260051b850101111561175857600080fd5b6000806000604084860312156118ba57600080fd5b6118c38461184a565b925060208401356001600160401b038111156118de57600080fd5b6118ea86828701611861565b9497909650939450505050565b6000806020838503121561190a57600080fd5b82356001600160401b0381111561192057600080fd5b61192c85828601611861565b90969095509350505050565b803563ffffffff8116811461177657600080fd5b6000806040838503121561195f57600080fd5b6119688361184a565b915061197660208401611938565b90509250929050565b60008151808452602080850194506020840160005b838110156119b95781516001600160a01b031687529582019590820190600101611994565b509495945050505050565b6001600160401b03815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c06080850152611a1360c085018261197f565b905060a083015184820360a0860152611a2c828261197f565b95945050505050565b602081526000610c0460208301846119c4565b600080600060608486031215611a5d57600080fd5b8335925060208401359150611a746040850161184a565b90509250925092565b600060208284031215611a8f57600080fd5b610c0482611938565b600080600060608486031215611aad57600080fd5b611ab684611938565b9250611ac46020850161184a565b9150611a7460408501611938565b60006020808352835180602085015260005b81811015611b0057858101830151858201604001528201611ae4565b506000604082860101526040601f19601f8301168501019250505092915050565b600080600060408486031215611b3657600080fd5b83356001600160401b03811115611b4c57600080fd5b611b5886828701611717565b9094509250611a74905060208501611938565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715611ba357611ba3611b6b565b60405290565b803560ff8116811461177657600080fd5b600082601f830112611bcb57600080fd5b813560206001600160401b0380831115611be757611be7611b6b565b8260051b604051601f19603f83011681018181108482111715611c0c57611c0c611b6b565b6040529384526020818701810194908101925087851115611c2c57600080fd5b6020870191505b84821015611c5357611c448261184a565b83529183019190830190611c33565b979650505050505050565b600060c08284031215611c7057600080fd5b611c78611b81565b9050611c838261175f565b8152611c9160208301611ba9565b6020820152611ca260408301611ba9565b6040820152611cb360608301611ba9565b606082015260808201356001600160401b0380821115611cd257600080fd5b611cde85838601611bba565b608084015260a0840135915080821115611cf757600080fd5b50611d0484828501611bba565b60a08301525092915050565b600080600060608486031215611d2557600080fd5b83356001600160401b03811115611d3b57600080fd5b611d4786828701611c5e565b9660208601359650604090950135949350505050565b600060208284031215611d6f57600080fd5b610c048261184a565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112611db457600080fd5b9190910192915050565b6000808335601e19843603018112611dd557600080fd5b8301803591506001600160401b03821115611def57600080fd5b60200191503681900382131561175857600080fd5b600060208284031215611e1657600080fd5b81356001600160401b03811115611e2c57600080fd5b610c2884828501611c5e565b60008235603e19833603018112611db457600080fd5b6000823560be19833603018112611db457600080fd5b600060208284031215611e7657600080fd5b610c0482611ba9565b600060208284031215611e9157600080fd5b610c048261175f565b60006102ff3683611c5e565b6000808335601e19843603018112611ebd57600080fd5b83016020810192503590506001600160401b03811115611edc57600080fd5b8060051b360382131561175857600080fd5b8183526000602080850194508260005b858110156119b9576001600160a01b03611f178361184a565b1687529582019590820190600101611efe565b60208082528181018390526000906040808401600586901b8501820187855b8881101561205e57603f19808985030185528235603e198c3603018112611f6f57600080fd5b8b0163ffffffff611f7f82611938565b1685528781013560be19823603018112611f9857600080fd5b858901889052016001600160401b03611fb08261175f565b1687860152611fc0888201611ba9565b606060ff80831682890152611fd68a8501611ba9565b92506080818416818a0152611fec838601611ba9565b935060a09250818416838a015261200581860186611ea6565b60c08b81015294509150612020905061010089018483611eee565b92505061202f81840184611ea6565b93509050838783030160e0880152612048828483611eee565b978a019796505050928701925050600101611f49565b509098975050505050505050565b6001600160a01b03861681526080602082018190528101849052838560a0830137600060a08583010152600060a0601f19601f87011683010190506001600160401b03841660408301528260608301529695505050505050565b600080858511156120d657600080fd5b838611156120e357600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156121185780818660040360031b1b83161692505b505092915050565b803560208310156102ff57600019602084900360031b1b1692915050565b6001600160c01b031981358181169160088510156121185760089490940360031b84901b1690921692915050565b6001600160a01b038416815263ffffffff83166020820152606060408201819052600090611a2c908301846119c4565b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156102ff576102ff61219c565b600060ff8316806121ec57634e487b7160e01b600052601260045260246000fd5b8060ff84160491505092915050565b600060ff82168061220e5761220e61219c565b6000190192915050565b6001600160f81b031981358181169160018510156121185760019490940360031b84901b169092169291505056fea2646970667358221220bcd33a33b3d1174a61599dfbea9275e4dff30cfc975a6aec138007f3a3304f0264736f6c6343000816003360806040523480156200001157600080fd5b5060405162002c7038038062002c7083398101604081905262000034916200046f565b6001805460ff61ffff60e81b01191661017760ed1b179055600280546001600160a01b0319166001600160a01b038581169190911790915584908490612ee090859085908216156200008f576200008d60008362000226565b505b60005b8551811015620000f457620000ea7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000d657620000d662000523565b60200260200101516200022660201b60201c565b5060010162000092565b5060005b815181101562000146576200013c7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000d657620000d662000523565b50600101620000f8565b505060016004908155600680546001600160a01b0319166001600160a01b038d169081179091556040805163416ecebf60e01b8152905191965063416ecebf95508083019450602093509091908290030181865afa158015620001ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d3919062000539565b6006805463ffffffff92909216600160a01b0263ffffffff60a01b199092169190911790555050600780546001600160a01b039094166001600160a01b03199094169390931790925550620005a5915050565b60007f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca831480156200027957506000838152602081815260408083206001600160a01b038616845290915290205460ff16155b15620002c65760018054601590620002a190600160a81b90046001600160401b031662000568565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b620002d28383620002de565b50600190505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1662000383576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200033a3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002d8565b506000620002d8565b80516001600160a01b0381168114620003a457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620003d157600080fd5b815160206001600160401b0380831115620003f057620003f0620003a9565b8260051b604051601f19603f83011681018181108482111715620004185762000418620003a9565b60405293845260208187018101949081019250878511156200043957600080fd5b6020870191505b84821015620004645762000454826200038c565b8352918301919083019062000440565b979650505050505050565b60008060008060008060c087890312156200048957600080fd5b62000494876200038c565b9550620004a4602088016200038c565b60408801519095506001600160401b0380821115620004c257600080fd5b620004d08a838b01620003bf565b9550620004e060608a016200038c565b9450620004f060808a016200038c565b935060a08901519150808211156200050757600080fd5b506200051689828a01620003bf565b9150509295509295509295565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200054c57600080fd5b815163ffffffff811681146200056157600080fd5b9392505050565b60006001600160401b038281166002600160401b031981016200059b57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b6126bb80620005b56000396000f3fe6080604052600436106101e25760003560e01c8063709eb66411610102578063a217fddf11610095578063c7b2370b11610064578063c7b2370b14610649578063cd88b90314610669578063d2ae210414610689578063d547741f146106c857600080fd5b8063a217fddf146105cf578063c2803b2c146105e4578063c358de0a14610604578063c416aa511461062457600080fd5b8063741bef1a116100d1578063741bef1a146104cd5780638624ba07146104ed57806391d14854146105005780639e9449651461052057600080fd5b8063709eb66414610434578063717e8a4214610454578063724e78da14610474578063726075371461049457600080fd5b80632f2ff15d1161017a5780633d85ac33116101495780633d85ac33146103b1578063475b6d9e146103d15780635c975abb146103e45780635e280f11146103fc57600080fd5b80632f2ff15d1461033e5780633146646a1461035e57806336568abe1461037e5780633927c0751461039e57600080fd5b806316c38b3c116101b657806316c38b3c14610293578063248a9ca3146102b357806326e67a37146102f15780632de113761461031e57600080fd5b8062bf2e80146101e757806301e336671461022157806301ffc9a7146102435780631095b6d714610273575b600080fd5b3480156101f357600080fd5b5060015461020990600160e81b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561022d57600080fd5b5061024161023c366004611a9c565b6106e8565b005b34801561024f57600080fd5b5061026361025e366004611ad8565b610711565b6040519015158152602001610218565b34801561027f57600080fd5b5061024161028e366004611a9c565b610748565b34801561029f57600080fd5b506102416102ae366004611b10565b61085b565b3480156102bf57600080fd5b506102e36102ce366004611b2d565b60009081526020819052604090206001015490565b604051908152602001610218565b3480156102fd57600080fd5b5061031161030c366004611b5a565b610880565b6040516102189190611b75565b34801561032a57600080fd5b50610263610339366004611bbc565b610907565b34801561034a57600080fd5b50610241610359366004611bd7565b61099e565b34801561036a57600080fd5b50610241610379366004611c4b565b6109c3565b34801561038a57600080fd5b50610241610399366004611bd7565b610a53565b6102416103ac366004611cf2565b610a6c565b3480156103bd57600080fd5b506102416103cc366004611e33565b610b27565b6102416103df366004611f4e565b610c9e565b3480156103f057600080fd5b5060015460ff16610263565b34801561040857600080fd5b5060065461041c906001600160a01b031681565b6040516001600160a01b039091168152602001610218565b34801561044057600080fd5b506102e361044f366004611fcc565b610ce0565b34801561046057600080fd5b506102e361046f366004611fcc565b610de7565b34801561048057600080fd5b5061024161048f366004611bbc565b610f13565b3480156104a057600080fd5b506006546104b890600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610218565b3480156104d957600080fd5b5060025461041c906001600160a01b031681565b6102416104fb36600461203a565b610f79565b34801561050c57600080fd5b5061026361051b366004611bd7565b611084565b34801561052c57600080fd5b5061058c61053b366004611b5a565b600560205260009081526040902080546001909101546001600160401b038083169261ffff600160401b820416926001600160801b03600160501b90920482169291811691600160801b9091041685565b604080516001600160401b03968716815261ffff90951660208601526001600160801b03938416908501529116606083015291909116608082015260a001610218565b3480156105db57600080fd5b506102e3600081565b3480156105f057600080fd5b5060075461041c906001600160a01b031681565b34801561061057600080fd5b5061024161061f3660046120b2565b6110ad565b34801561063057600080fd5b5060015461041c9061010090046001600160a01b031681565b34801561065557600080fd5b50610241610664366004611bbc565b611115565b34801561067557600080fd5b506102416106843660046120cd565b611183565b34801561069557600080fd5b506001546106b090600160a81b90046001600160401b031681565b6040516001600160401b039091168152602001610218565b3480156106d457600080fd5b506102416106e3366004611bd7565b6111bb565b600080516020612666833981519152610700816111e0565b61070b8484846111ed565b50505050565b60006001600160e01b03198216637965db0b60e01b148061074257506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020612666833981519152610760816111e0565b61078a7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de85611084565b6107a757604051635ee08b9760e01b815260040160405180910390fd5b604051637ecdf29160e11b81526001600160a01b0384811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b1580156107f157600080fd5b505af1158015610805573d6000803e3d6000fd5b5050604080516001600160a01b038089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b6000610866816111e0565b811561087857610874611215565b5050565b610874611269565b63ffffffff81166000908152600360209081526040918290208054835181840281018401909452808452606093928301828280156108fb57602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116108cc5790505b50505050509050919050565b60006109337f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e483611084565b1561094057506000919050565b600154600160a81b90046001600160401b0316158061098457506109847f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca83611084565b1561099157506001919050565b506000919050565b919050565b6000828152602081905260409020600101546109b9816111e0565b61070b83836112a2565b6000805160206126668339815191526109db816111e0565b6109e3611338565b600754604051631cca20df60e31b81526001600160a01b039091169063e65106f890610a179087908790879060040161217b565b600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505061070b6001600455565b60405163dec9f03160e01b815260040160405180910390fd5b600080516020612666833981519152610a84816111e0565b610a8c611338565b610aac88610a9a8686611362565b610aa48787611385565b8a8a8a61139e565b50600754604051631cca20df60e31b81526001600160a01b039091169063e65106f890610ae19087908790879060040161217b565b600060405180830381600087803b158015610afb57600080fd5b505af1158015610b0f573d6000803e3d6000fd5b50505050610b1d6001600455565b5050505050505050565b600080516020612666833981519152610b3f816111e0565b60005b8251811015610c62576000838281518110610b5f57610b5f61219f565b6020908102919091018101516040805160a08082018352838501516001600160401b03908116835260608086015161ffff9081168589019081526080808901516001600160801b03908116888a01908152968a01518116948801948552888a01518616918801918252985163ffffffff1660009081526005909a529690982094518554985194518816600160501b026fffffffffffffffffffffffffffffffff60501b1995909216600160401b0269ffffffffffffffffffff1990991690841617979097179290921695909517825551600191820180549351909516600160801b026001600160c01b031990931693169290921717909155919091019050610b42565b507fb99f6de5e22c60c178b03bfacf2daeb4b6089f5b37e0fe2c48a5d5141191fc5382604051610c9291906121b5565b60405180910390a15050565b600080516020612666833981519152610cb6816111e0565b610cbe611338565b610ccc87878787878761139e565b50610cd76001600455565b50505050505050565b600084610cec81610907565b610d0957604051634ab5ebcd60e01b815260040160405180910390fd5b610d11611505565b6040805160a0810182526002546001600160a01b03908116825263ffffffff8a1660208084018290528a831684860152606084018a905260015461ffff600160e81b8204166080860152600092835260059091529084902093516321a7700b60e11b815292936101009091049091169163434ee01691610d9a918591908a908a90600401612252565b602060405180830381865afa158015610db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddb9190612306565b98975050505050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de610e13816111e0565b85610e1d81610907565b610e3a57604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160a0810182526002546001600160a01b03908116825263ffffffff8b1660208084018290528b831684860152606084018b905260015461ffff600160e81b820416608086015260009283526005909152908490209351632b377bb160e11b815292936101009091049091169163566ef76291610ec3918591908b908b90600401612252565b6020604051808303816000875af1158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190612306565b9998505050505050505050565b600080516020612666833981519152610f2b816111e0565b600280546001600160a01b0319166001600160a01b0384169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d90602001610c92565b600080516020612666833981519152610f91816111e0565b610f99611338565b600654600090610fc7906020850190600160a01b900463ffffffff16610fbf8287611bbc565b89898961139e565b90506000610fd58234612335565b6006549091506001600160a01b0316630c0c389e60e08601358360208801610ffd818a611bbc565b60808a013561100f60a08c018c612348565b61101c60c08e018e612348565b6040518a63ffffffff1660e01b815260040161103e97969594939291906123c7565b6000604051808303818589803b15801561105757600080fd5b5088f115801561106b573d6000803e3d6000fd5b505050505050505061107d6001600455565b5050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206126668339815191526110c5816111e0565b6001805461ffff60e81b1916600160e81b61ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001610c92565b60008051602061266683398151915261112d816111e0565b60018054610100600160a81b0319166101006001600160a01b038516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001610c92565b60008051602061266683398151915261119b816111e0565b63ffffffff8416600090815260036020526040902061107d9084846119c7565b6000828152602081905260409020600101546111d6816111e0565b61070b838361152b565b6111ea81336115b5565b50565b6001600160a01b03831661120a5761120582826115f3565b505050565b6112058383836116a0565b61121d611505565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b6112716116db565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361124c565b60007f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca831480156112da57506112d88383611084565b155b1561132457600180546015906112ff90600160a81b90046001600160401b031661241d565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b61132e83836116fe565b5060019392505050565b60026004540361135b57604051633ee5aeb560e01b815260040160405180910390fd5b6002600455565b60006113726031602d8486612443565b61137b9161246d565b60e01c9392505050565b60006113976113948484611790565b90565b9392505050565b600080836001600160401b038111156113b9576113b9611d85565b6040519080825280602002602001820160405280156113e2578160200160208202803683370190505b50905060005b848110156114b85760008686838181106114045761140461219f565b90506040020180360381019061141a919061249d565b9050600081600001516001600160a01b031682602001518790604051600060405180830381858888f193505050503d8060008114611474576040519150601f19603f3d011682016040523d82523d6000602084013e611479565b606091505b50509050808484815181106114905761149061219f565b9115156020928302919091018201528201516114ac90866124f3565b945050506001016113e8565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c34688888888888866040516114f296959493929190612544565b60405180910390a1509695505050505050565b60015460ff16156115295760405163d93c066560e01b815260040160405180910390fd5b565b60007f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca8314801561156157506115618383611084565b156115ab576001805460159061158690600160a81b90046001600160401b03166125d8565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b61132e83836117a9565b6115bf8282611084565b6108745760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044015b60405180910390fd5b6001600160a01b03821661161a576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611667576040519150601f19603f3d011682016040523d82523d6000602084013e61166c565b606091505b505090508061120557604051631196f20d60e21b81526001600160a01b0384166004820152602481018390526044016115ea565b6001600160a01b0382166116c7576040516306b7a93160e41b815260040160405180910390fd5b6112056001600160a01b0384168383611814565b60015460ff1661152957604051638dfc202b60e01b815260040160405180910390fd5b600061170a8383611084565b611788576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556117403390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610742565b506000610742565b60006117a0605160318486612443565b611397916125fb565b60006117b58383611084565b15611788576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610742565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092019092526020810180516001600160e01b031663a9059cbb60e01b17905261120591859190600090611872908416836118c0565b905080516000141580156118975750808060200190518101906118959190612619565b155b1561120557604051635274afe760e01b81526001600160a01b03841660048201526024016115ea565b60606113978383600084600080856001600160a01b031684866040516118e69190612636565b60006040518083038185875af1925050503d8060008114611923576040519150601f19603f3d011682016040523d82523d6000602084013e611928565b606091505b5091509150611938868383611942565b9695505050505050565b606082611957576119528261199e565b611397565b815115801561196e57506001600160a01b0384163b155b1561199757604051639996b31560e01b81526001600160a01b03851660048201526024016115ea565b5080611397565b8051156119ae5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b82805482825590600052602060002090601f01602090048101928215611a605791602002820160005b83821115611a3157833560ff1683826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026119f0565b8015611a5e5782816101000a81549060ff0219169055600101602081600001049283019260010302611a31565b505b50611a6c929150611a70565b5090565b5b80821115611a6c5760008155600101611a71565b80356001600160a01b038116811461099957600080fd5b600080600060608486031215611ab157600080fd5b611aba84611a85565b9250611ac860208501611a85565b9150604084013590509250925092565b600060208284031215611aea57600080fd5b81356001600160e01b03198116811461139757600080fd5b80151581146111ea57600080fd5b600060208284031215611b2257600080fd5b813561139781611b02565b600060208284031215611b3f57600080fd5b5035919050565b803563ffffffff8116811461099957600080fd5b600060208284031215611b6c57600080fd5b61139782611b46565b6020808252825182820181905260009190848201906040850190845b81811015611bb057835160ff1683529284019291840191600101611b91565b50909695505050505050565b600060208284031215611bce57600080fd5b61139782611a85565b60008060408385031215611bea57600080fd5b82359150611bfa60208401611a85565b90509250929050565b60008083601f840112611c1557600080fd5b5081356001600160401b03811115611c2c57600080fd5b602083019150836020828501011115611c4457600080fd5b9250929050565b600080600060408486031215611c6057600080fd5b83356001600160401b03811115611c7657600080fd5b611c8286828701611c03565b909790965060209590950135949350505050565b600060608284031215611ca857600080fd5b50919050565b60008083601f840112611cc057600080fd5b5081356001600160401b03811115611cd757600080fd5b6020830191508360208260061b8501011115611c4457600080fd5b600080600080600080600060e0888a031215611d0d57600080fd5b611d178989611c96565b965060608801356001600160401b0380821115611d3357600080fd5b611d3f8b838c01611cae565b909850965060808a0135955060a08a0135915080821115611d5f57600080fd5b50611d6c8a828b01611c03565b989b979a5095989497959660c090950135949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715611dbd57611dbd611d85565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611deb57611deb611d85565b604052919050565b80356001600160401b038116811461099957600080fd5b803561ffff8116811461099957600080fd5b80356001600160801b038116811461099957600080fd5b60006020808385031215611e4657600080fd5b82356001600160401b0380821115611e5d57600080fd5b818501915085601f830112611e7157600080fd5b813581811115611e8357611e83611d85565b611e91848260051b01611dc3565b818152848101925060c0918202840185019188831115611eb057600080fd5b938501935b82851015611f425780858a031215611ecd5760008081fd5b611ed5611d9b565b611ede86611b46565b8152611eeb878701611df3565b878201526040611efc818801611df3565b908201526060611f0d878201611e0a565b908201526080611f1e878201611e1c565b9082015260a0611f2f878201611e1c565b9082015284529384019392850192611eb5565b50979650505050505050565b60008060008060008060e08789031215611f6757600080fd5b611f718888611c96565b9550611f7f60608801611b46565b9450611f8d60808801611a85565b935060a08701356001600160401b03811115611fa857600080fd5b611fb489828a01611cae565b979a969950949794969560c090950135949350505050565b600080600080600060808688031215611fe457600080fd5b611fed86611b46565b9450611ffb60208701611a85565b93506040860135925060608601356001600160401b0381111561201d57600080fd5b61202988828901611c03565b969995985093965092949392505050565b6000806000806060858703121561205057600080fd5b84356001600160401b038082111561206757600080fd5b61207388838901611cae565b909650945060208701359350604087013591508082111561209357600080fd5b50850161010081880312156120a757600080fd5b939692955090935050565b6000602082840312156120c457600080fd5b61139782611e0a565b6000806000604084860312156120e257600080fd5b6120eb84611b46565b925060208401356001600160401b038082111561210757600080fd5b818601915086601f83011261211b57600080fd5b81358181111561212a57600080fd5b8760208260051b850101111561213f57600080fd5b6020830194508093505050509250925092565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061218f604083018587612152565b9050826020830152949350505050565b634e487b7160e01b600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b82811015612245578151805163ffffffff168552868101516001600160401b039081168887015286820151168686015260608082015161ffff16908601526080808201516001600160801b039081169187019190915260a091820151169085015260c090930192908501906001016121d2565b5091979650505050505050565b84516001600160a01b03908116825260208087015163ffffffff1690830152604080870151909116818301526060808701519083015260808087015161ffff9081168285015286546001600160401b0380821660a08701529381901c90911660c085015260501c6001600160801b0390811660e08501526001870154908116610100850152901c1661012082015261016061014082018190526000906122fb8382018587612152565b979650505050505050565b60006020828403121561231857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156107425761074261231f565b6000808335601e1984360301811261235f57600080fd5b8301803591506001600160401b0382111561237957600080fd5b602001915036819003821315611c4457600080fd5b63ffffffff61239c82611b46565b168252602081013560208301526001600160401b036123bd60408301611df3565b1660408301525050565b6123d1818961238e565b60018060a01b038716606082015285608082015260e060a082015260006123fc60e083018688612152565b82810360c084015261240f818587612152565b9a9950505050505050505050565b60006001600160401b038083168181036124395761243961231f565b6001019392505050565b6000808585111561245357600080fd5b8386111561246057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156124955780818660040360031b1b83161692505b505092915050565b6000604082840312156124af57600080fd5b604051604081018181106001600160401b03821117156124d1576124d1611d85565b6040526124dd83611a85565b8152602083013560208201528091505092915050565b808201808211156107425761074261231f565b60008151808452602080850194506020840160005b8381101561253957815115158752958201959082019060010161251b565b509495945050505050565b600060e08201612554838a61238e565b63ffffffff881660608401526001600160a01b03878116608085015260e060a0850152908590528590610100840160005b878110156125b6578261259785611a85565b1682526020848101359083015260409384019390910190600101612585565b5084810360c08601526125c98187612506565b9b9a5050505050505050505050565b60006001600160401b038216806125f1576125f161231f565b6000190192915050565b8035602083101561074257600019602084900360031b1b1692915050565b60006020828403121561262b57600080fd5b815161139781611b02565b6000825160005b81811015612657576020818601810151858301520161263d565b50600092019182525091905056fea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220cdab67c3cecc7ccfc519c2a3fac5d5b26ba27b264db158f8205a7fa7a0c0f35564736f6c6343000816003360a060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610052565b50670de0b6b3a76400006080526100a2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60805161119a6100bd60003960006107cb015261119a6000f3fe6080604052600436106100595760003560e01c806301e3366714610065578063434ee01614610087578063566ef762146100ba578063715018a6146100da5780638da5cb5b146100ef578063f2fde38b1461011757600080fd5b3661006057005b600080fd5b34801561007157600080fd5b50610085610080366004610dc9565b610137565b005b34801561009357600080fd5b506100a76100a2366004610e1d565b61014f565b6040519081526020015b60405180910390f35b3480156100c657600080fd5b506100a76100d5366004610e1d565b610328565b3480156100e657600080fd5b506100856103fb565b3480156100fb57600080fd5b506000546040516001600160a01b0390911681526020016100b1565b34801561012357600080fd5b50610085610132366004610eaf565b61040f565b61013f61044d565b61014a83838361047a565b505050565b600061015e6020850185610eca565b67ffffffffffffffff166000036101a65761017f6040860160208701610ef4565b60405163c3baa0b760e01b815263ffffffff90911660048201526024015b60405180910390fd5b6000806101f96101c56101bf60408a0160208b01610ef4565b50600090565b6101d26020890189610eca565b6101e260a08a0160808b01610eca565b6101f260808b0160608c01610f2f565b898961049d565b9092509050600080808061021060208c018c610eaf565b6001600160a01b03166388a4124c61022e60408e0160208f01610ef4565b6040516001600160e01b031960e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa158015610281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a59190610f4c565b929650909450925090506102ef846102c360408d0160208e01610fa1565b8d60800160208101906102d69190610fa1565b8d60400160208101906102e99190610f2f565b8561075b565b965061030f8684848e608001602081019061030a9190610fa1565b610832565b6103199088610fdb565b9b9a5050505050505050505050565b60006103376020850185610eca565b67ffffffffffffffff166000036103585761017f6040860160208701610ef4565b6000806103716101c56101bf60408a0160208b01610ef4565b9092509050600080808061038860208c018c610eaf565b6001600160a01b031663c1723a1d6103a660408e0160208f01610ef4565b6040516001600160e01b031960e084901b16815263ffffffff91909116600482015260608e01356024820152604481018890526064016080604051808303816000875af1158015610281573d6000803e3d6000fd5b61040361044d565b61040d600061088a565b565b61041761044d565b6001600160a01b03811661044157604051631e4fbdf760e01b81526000600482015260240161019d565b61044a8161088a565b50565b6000546001600160a01b0316331461040d5760405163118cdaa760e01b815233600482015260240161019d565b6001600160a01b0383166104925761014a82826108da565b61014a838383610987565b6000808281036104bf5760405162575ea160e01b815260040160405180910390fd5b5067ffffffffffffffff861660008089815b868410156106a15760003681806104e98c8c8a6109c2565b9a509195509350915087905060001960ff85160161057c5760008061050e8585610a18565b9150915087801561052857506000816001600160801b0316115b1561054b5760405163052e551560e01b815260ff8716600482015260240161019d565b61055e6001600160801b0382168d610fdb565b9b506105736001600160801b03831688610fdb565b96505050610698565b60011960ff8516016105b25760006105948484610a7d565b5090506105aa6001600160801b0382168c610fdb565b9a5050610698565b60021960ff8516016106655785156105e25760405163052e551560e01b815260ff8516600482015260240161019d565b6000806105ef8585610abb565b9250925050816001600160801b031660000361061e5760405163a169d0e160e01b815260040160405180910390fd5b6106316001600160801b0382168d610fdb565b9b508f67ffffffffffffffff16826106499190610fee565b61065c906001600160801b03168c610fdb565b9a505050610698565b60031960ff85160161067a5760019650610698565b60405163052e551560e01b815260ff8516600482015260240161019d565b505050506104d1565b8387146106c457604051634c83bb7560e11b81526004810185905260240161019d565b886001600160801b03168611156106ff576040516242670160e11b8152600481018790526001600160801b038a16602482015260440161019d565b8060000361072057604051630e5eb8f360e41b815260040160405180910390fd5b61072a8186610fdb565b9450821561074c57606461073f866066611015565b610749919061102c565b94505b50505050965096945050505050565b60008061ffff86161561076e5785610770565b845b9050600061271061078561ffff84168a611015565b61078f919061102c565b90506001600160801b03841615806107ae57506001600160801b038516155b156107bc5791506108299050565b600088856001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000886001600160801b03166107fe9190611015565b610808919061102c565b6108129190610fdb565b90508181116108215781610823565b805b93505050505b95945050505050565b60008415610882576127108261ffff16846001600160801b0316866001600160801b0316886108619190611015565b61086b919061102c565b6108759190611015565b61087f919061102c565b90505b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216610901576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461094e576040519150601f19603f3d011682016040523d82523d6000602084013e610953565b606091505b505090508061014a57604051631196f20d60e21b81526001600160a01b03841660048201526024810183905260440161019d565b6001600160a01b0382166109ae576040516306b7a93160e41b815260040160405180910390fd5b61014a6001600160a01b0384168383610b2f565b6000368160018401816109d6888884610b81565b6002929092019190506109ea888884610baa565b94506001820161ffff82168301610a0381838b8d61104e565b979b909a50969850505061ffff160193505050565b60008060108314801590610a2d575060208314155b15610a4b57604051634796aee160e01b815260040160405180910390fd5b610a5784846000610bcf565b915060208314610a68576000610a74565b610a7484846010610bcf565b90509250929050565b60008060308314610aa1576040516361d0c2c760e11b815260040160405180910390fd5b610aad84846000610bcf565b9150610a7484846010610bf6565b6000808060128414801590610ad1575060228414155b15610aef57604051638b4aa70b60e01b815260040160405180910390fd5b610afb85856000610b81565b9250610b0985856002610bcf565b915060228414610b1a576000610b26565b610b2685856012610bcf565b90509250925092565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261014a908490610c11565b600060028201610b938184868861104e565b610b9c91611078565b60f01c9150505b9392505050565b6000838383818110610bbe57610bbe6110a8565b919091013560f81c95945050505050565b600060108201610be18184868861104e565b610bea916110be565b60801c95945050505050565b600060208201610c088184868861104e565b610829916110f5565b6000610c266001600160a01b03841683610c74565b90508051600014158015610c4b575080806020019051810190610c499190611113565b155b1561014a57604051635274afe760e01b81526001600160a01b038416600482015260240161019d565b6060610c8283836000610c8b565b90505b92915050565b606081471015610cb05760405163cd78605960e01b815230600482015260240161019d565b600080856001600160a01b03168486604051610ccc9190611135565b60006040518083038185875af1925050503d8060008114610d09576040519150601f19603f3d011682016040523d82523d6000602084013e610d0e565b606091505b5091509150610d1e868383610d28565b9695505050505050565b606082610d3d57610d3882610d84565b610ba3565b8151158015610d5457506001600160a01b0384163b155b15610d7d57604051639996b31560e01b81526001600160a01b038516600482015260240161019d565b5080610ba3565b805115610d945780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610dc457600080fd5b919050565b600080600060608486031215610dde57600080fd5b610de784610dad565b9250610df560208501610dad565b9150604084013590509250925092565b600060a08284031215610e1757600080fd5b50919050565b6000806000806101608587031215610e3457600080fd5b610e3e8686610e05565b9350610e4d8660a08701610e05565b925061014085013567ffffffffffffffff80821115610e6b57600080fd5b818701915087601f830112610e7f57600080fd5b813581811115610e8e57600080fd5b886020828501011115610ea057600080fd5b95989497505060200194505050565b600060208284031215610ec157600080fd5b610c8282610dad565b600060208284031215610edc57600080fd5b813567ffffffffffffffff81168114610ba357600080fd5b600060208284031215610f0657600080fd5b813563ffffffff81168114610ba357600080fd5b6001600160801b038116811461044a57600080fd5b600060208284031215610f4157600080fd5b8135610ba381610f1a565b60008060008060808587031215610f6257600080fd5b845193506020850151610f7481610f1a565b6040860151909350610f8581610f1a565b6060860151909250610f9681610f1a565b939692955090935050565b600060208284031215610fb357600080fd5b813561ffff81168114610ba357600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610c8557610c85610fc5565b6001600160801b0381811683821601908082111561100e5761100e610fc5565b5092915050565b8082028115828204841417610c8557610c85610fc5565b60008261104957634e487b7160e01b600052601260045260246000fd5b500490565b6000808585111561105e57600080fd5b8386111561106b57600080fd5b5050820193919092039150565b6001600160f01b031981358181169160028510156110a05780818660020360031b1b83161692505b505092915050565b634e487b7160e01b600052603260045260246000fd5b6fffffffffffffffffffffffffffffffff1981358181169160108510156110a05760109490940360031b84901b1690921692915050565b80356020831015610c8557600019602084900360031b1b1692915050565b60006020828403121561112557600080fd5b81518015158114610ba357600080fd5b6000825160005b81811015611156576020818601810151858301520161113c565b50600092019182525091905056fea2646970667358221220c33a57857187fb58b6a4f6f72293681ac2e0502da004b914102df0942e0c64f064736f6c6343000816003360a06040523480156200001157600080fd5b50604051620038e7380380620038e78339810160408190526200003491620004de565b6001805460ff61ffff60e81b01191661017760ed1b179055600280546001600160a01b0319166001600160a01b03861617905582828686612ee060008660005b8551811015620000d657620000cc7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000b857620000b8620005b1565b60200260200101516200027d60201b60201c565b5060010162000074565b5060005b815181101562000128576200011e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000b857620000b8620005b1565b50600101620000da565b505050505050806001600160401b03166000036200015957604051635f86e17760e01b815260040160405180910390fd5b806001600160401b0316825110156200019f5781516040516378e2c15760e11b81526001600160401b039182166004820152908216602482015260440160405180910390fd5b6000805b835181101562000231576000848281518110620001c457620001c4620005b1565b60200260200101519050826001600160a01b0316816001600160a01b03161162000201576040516305fa937f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600460205260409020805460ff1916600190811790915590925001620001a3565b50509051600580546001600160401b0393841668010000000000000000026001600160801b0319909116939092169290921717905550505063ffffffff90921660805250620006049050565b60007f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca83148015620002d057506000838152602081815260408083206001600160a01b038616845290915290205460ff16155b156200031d5760018054601590620002f890600160a81b90046001600160401b0316620005c7565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b62000329838362000335565b50600190505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620003da576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620003913390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200032f565b5060006200032f565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200041157600080fd5b919050565b600082601f8301126200042857600080fd5b815160206001600160401b0380831115620004475762000447620003e3565b8260051b604051601f19603f830116810181811084821117156200046f576200046f620003e3565b60405293845260208187018101949081019250878511156200049057600080fd5b6020870191505b84821015620004bb57620004ab82620003f9565b8352918301919083019062000497565b979650505050505050565b80516001600160401b03811681146200041157600080fd5b60008060008060008060c08789031215620004f857600080fd5b865163ffffffff811681146200050d57600080fd5b60208801519096506001600160401b03808211156200052b57600080fd5b620005398a838b0162000416565b96506200054960408a01620003f9565b955060608901519150808211156200056057600080fd5b6200056e8a838b0162000416565b94506200057e60808a01620004c6565b935060a08901519150808211156200059557600080fd5b50620005a489828a0162000416565b9150509295509295509295565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b038281166002600160401b03198101620005fa57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b6080516132b96200062e6000396000818161074c015281816112280152611b1001526132b96000f3fe60806040526004361061022f5760003560e01c80638585c9451161012e578063c7a823e0116100ab578063d547741f1161006f578063d547741f146107aa578063dafe0ccc146107ca578063f010cb23146107ea578063f3b4ebd01461080a578063fd62e7501461082a57600080fd5b8063c7a823e0146106cc578063c7b2370b146106fa578063cd88b9031461071a578063cf34c7681461073a578063d2ae21041461078357600080fd5b8063aef18bf7116100f2578063aef18bf714610617578063b143044b14610647578063c358de0a14610667578063c416aa5114610687578063c5e193cd146106ac57600080fd5b80638585c9451461052a57806391d148541461054a57806395d376d71461056a5780639e9449651461057d578063a217fddf1461060257600080fd5b80632f2ff15d116101bc5780635553fb8e116101805780635553fb8e1461046a5780635c975abb1461048a578063724e78da146104a2578063736c0d5b146104c2578063741bef1a146104f257600080fd5b80632f2ff15d146103ca57806330bb3aac146103ea57806331cb61051461040a57806336568abe1461042a57806352d3b8711461044a57600080fd5b806316c38b3c1161020357806316c38b3c146102e05780631703a01814610300578063248a9ca31461033f57806326e67a371461037d5780632de11376146103aa57600080fd5b8062bf2e801461023457806301e336671461026e57806301ffc9a7146102905780631095b6d7146102c0575b600080fd5b34801561024057600080fd5b5060015461025690600160e81b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612695565b61084a565b005b34801561029c57600080fd5b506102b06102ab3660046126d6565b610873565b6040519015158152602001610265565b3480156102cc57600080fd5b5061028e6102db366004612695565b6108aa565b3480156102ec57600080fd5b5061028e6102fb36600461270e565b6109ac565b34801561030c57600080fd5b5060055461032790600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610265565b34801561034b57600080fd5b5061036f61035a36600461272b565b60009081526020819052604090206001015490565b604051908152602001610265565b34801561038957600080fd5b5061039d610398366004612758565b6109d1565b6040516102659190612773565b3480156103b657600080fd5b506102b06103c53660046127ba565b610a58565b3480156103d657600080fd5b5061028e6103e53660046127d7565b610add565b3480156103f657600080fd5b5061036f610405366004612866565b610bb2565b34801561041657600080fd5b5061028e6104253660046128dd565b610cca565b34801561043657600080fd5b5061028e6104453660046127d7565b610cf4565b34801561045657600080fd5b5061028e61046536600461290b565b610d0d565b34801561047657600080fd5b5061036f610485366004612991565b610e86565b34801561049657600080fd5b5060015460ff166102b0565b3480156104ae57600080fd5b5061028e6104bd3660046127ba565b610f9e565b3480156104ce57600080fd5b506102b06104dd3660046127ba565b60046020526000908152604090205460ff1681565b3480156104fe57600080fd5b50600254610512906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561053657600080fd5b5061028e6105453660046129e7565b61100c565b34801561055657600080fd5b506102b06105653660046127d7565b611038565b61036f610578366004612a1a565b611061565b34801561058957600080fd5b506105d1610598366004612758565b6006602052600090815260409020546001600160401b03811690600160401b810461ffff1690600160501b90046001600160801b031683565b604080516001600160401b03909416845261ffff90921660208401526001600160801b031690820152606001610265565b34801561060e57600080fd5b5061036f600081565b34801561062357600080fd5b506102b061063236600461272b565b60076020526000908152604090205460ff1681565b34801561065357600080fd5b5061028e610662366004612ac6565b6111d7565b34801561067357600080fd5b5061028e610682366004612b07565b61148c565b34801561069357600080fd5b506001546105129061010090046001600160a01b031681565b3480156106b857600080fd5b5061036f6106c7366004612991565b6114f4565b3480156106d857600080fd5b506106ec6106e7366004612b22565b611661565b604051610265929190612b76565b34801561070657600080fd5b5061028e6107153660046127ba565b61183f565b34801561072657600080fd5b5061028e610735366004612baa565b6118ad565b34801561074657600080fd5b5061076e7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610265565b34801561078f57600080fd5b5060015461032790600160a81b90046001600160401b031681565b3480156107b657600080fd5b5061028e6107c53660046127d7565b6118ec565b3480156107d657600080fd5b5061028e6107e5366004612695565b6119a0565b3480156107f657600080fd5b5061036f610805366004612bef565b611a55565b34801561081657600080fd5b5061028e610825366004612c59565b611a91565b34801561083657600080fd5b50600554610327906001600160401b031681565b60008051602061324483398151915261086281611c3f565b61086d848484611c49565b50505050565b60006001600160e01b03198216637965db0b60e01b14806108a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805160206132448339815191526108c281611c3f565b6108da60008051602061322483398151915285611038565b6108f757604051635ee08b9760e01b815260040160405180910390fd5b604051637ecdf29160e11b81526001600160a01b0384811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b15801561094157600080fd5b505af1158015610955573d6000803e3d6000fd5b5050604080516001600160a01b038089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb925060600190505b60405180910390a150505050565b60006109b781611c3f565b81156109c9576109c5611c71565b5050565b6109c5611cc5565b63ffffffff8116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610a4c57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610a1d5790505b50505050509050919050565b6000610a847f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e483611038565b15610a9157506000919050565b600154600160a81b90046001600160401b03161580610ac35750610ac360008051602061326483398151915283611038565b15610ad057506001919050565b506000919050565b919050565b81600080516020613264833981519152811480610b1957507f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e481145b80610b31575060008051602061322483398151915281145b15610b5b57303314610b5657604051637d5d391d60e11b815260040160405180910390fd5b610ba8565b6000805160206132448339815191528103610b8757610b56600080516020613244833981519152611c3f565b604051634a7ee1b960e11b8152600481018290526024015b60405180910390fd5b61086d8383611cfe565b600083610bbe81610a58565b610bdb57604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160c0810182526002546001600160a01b03908116825263ffffffff8a1660208084018290526001600160401b03808c16858701528a84166060860152600554600160401b900416608085015260015461ffff600160e81b82041660a086015260009283526006909152908490209351637bfa20a960e01b8152929361010090910490911691637bfa20a991610c7d918591908a908a90600401612d1d565b602060405180830381865afa158015610c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbe9190612d77565b98975050505050505050565b303314610cea57604051637d5d391d60e11b815260040160405180910390fd5b6109c58282611d82565b60405163dec9f03160e01b815260040160405180910390fd5b600080516020613244833981519152610d2581611c3f565b60005b82811015610e475736848483818110610d4357610d43612d90565b90506080020190506040518060600160405280826020016020810190610d6991906129e7565b6001600160401b03168152602001610d876060840160408501612b07565b61ffff168152602001610da06080840160608501612dbd565b6001600160801b0316905260066000610dbc6020850185612758565b63ffffffff1681526020808201929092526040908101600020835181549385015194909201516001600160801b0316600160501b026fffffffffffffffffffffffffffffffff60501b1961ffff909516600160401b0269ffffffffffffffffffff199094166001600160401b0390931692909217929092179290921691909117905550600101610d28565b507f7dd21e42791b013d1929e86f0c59085e4fca24251f0f1aa81917b3b1611766e08383604051610e79929190612dd8565b60405180910390a1505050565b600081610e9281610a58565b610eaf57604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160c0810182526002546001600160a01b03908116825261ffff808a1660208085018290526001600160401b03808b16868801528985166060870152600554600160401b9004166080860152600154600160e81b810490931660a0860152600091825260068152858220865191820187529181529451637bfa20a960e01b8152939461010090920490921692637bfa20a992610f52928692600401612ebc565b602060405180830381865afa158015610f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f939190612d77565b979650505050505050565b600080516020613244833981519152610fb681611c3f565b600280546001600160a01b0319166001600160a01b0384169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b30331461102c57604051637d5d391d60e11b815260040160405180910390fd5b61103581611edd565b50565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600060008051602061322483398151915261107b81611c3f565b61108b60a08601608087016127ba565b61109481610a58565b6110b157604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160c081019091526002546001600160a01b031681526000906020808201906110df908a018a612758565b63ffffffff1681526020016110fa60808a0160608b016129e7565b6001600160401b0316815260200161111860a08a0160808b016127ba565b6001600160a01b039081168252600554600160401b90046001600160401b0316602080840191909152600154600160e81b810461ffff16604090940193909352929350610100909104169063df2b057e90839060069060009061117d908d018d612758565b63ffffffff1663ffffffff16815260200190815260200160002089896040518563ffffffff1660e01b81526004016111b89493929190612d1d565b6020604051808303816000875af1158015610f6f573d6000803e3d6000fd5b6000805160206132448339815191526111ef81611c3f565b60005b8281101561086d573684848381811061120d5761120d612d90565b905060200281019061121f9190612f15565b905063ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166112556020830183612758565b63ffffffff16146112665750611484565b428160600135116112775750611484565b60006112b06112896020840184612758565b61129960408501602086016127ba565b6112a66040860186612f35565b8660600135611a55565b905060006112c5826106e76080860186612f35565b50905080611308576040518481527fd6d90193101048cc1b6edcdc2348f5acf7a4a4a97d3e7b668b74cb7602ab3ebc9060200160405180910390a1505050611484565b600061132861131a6040860186612f35565b61132391612f7b565b611fab565b905080156113a35760008381526007602052604090205460ff1615611389577f9bb9bddbdf537a2104255307230b323d7982f4512ee8e5bd15df62ddca50ab978484604051611378929190612ff0565b60405180910390a150505050611484565b6000838152600760205260409020805460ff191660011790555b6000806113b660408701602088016127ba565b6001600160a01b03166113cc6040880188612f35565b6040516113da92919061308b565b6000604051808303816000865af19150503d8060008114611417576040519150601f19603f3d011682016040523d82523d6000602084013e61141c565b606091505b50915091508161147d578215611443576000858152600760205260409020805460ff191690555b7fdc8cdd96296241bbefda4a8e18ad2e0985a8da6495b34d409cfc4c886ee3b0cf878260405161147492919061309b565b60405180910390a15b5050505050505b6001016111f2565b6000805160206132448339815191526114a481611c3f565b6001805461ffff60e81b1916600160e81b61ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001611000565b600060008051602061322483398151915261150e81611c3f565b8261151881610a58565b61153557604051634ab5ebcd60e01b815260040160405180910390fd5b6040805160c0810182526002546001600160a01b03908116825261ffff808b1660208085018290526001600160401b03808c16868801528a85166060870152600554600160401b9004166080860152600154600160e81b810490931660a0860152600091825260068152858220865191820187529181529451636f9582bf60e11b815293946101009092049092169263df2b057e926115d8928692600401612ebc565b6020604051808303816000875af11580156115f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161b9190612d77565b93507f87e46b0a6199bc734632187269a103c05714ee0adae5b28f30723955724f37ef8460405161164e91815260200190565b60405180910390a1505050949350505050565b600554600090819061168490600160401b90046001600160401b031660416130ca565b83146116965750600090506001611837565b60006116ef866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b90506000805b600554600160401b90046001600160401b031681101561182b57366000888861171f8560416130ca565b9061172b8660016130e1565b6117369060416130ca565b92611743939291906130f4565b9150915060008061178a8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fe492505050565b50909250905060008160038111156117a4576117a4612b60565b146117bd57600060019850985050505050505050611837565b856001600160a01b0316826001600160a01b0316116117ea57600060029850985050505050505050611837565b6001600160a01b03821660009081526004602052604090205460ff1661181e57600060039850985050505050505050611837565b50935050506001016116f5565b50600160009350935050505b935093915050565b60008051602061324483398151915261185781611c3f565b60018054610100600160a81b0319166101006001600160a01b038516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001611000565b6000805160206132448339815191526118c581611c3f565b63ffffffff841660009081526003602052604090206118e59084846125c2565b5050505050565b8160008051602061326483398151915281148061192857507f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e481145b80611940575060008051602061322483398151915281145b1561196a5730331461196557604051637d5d391d60e11b815260040160405180910390fd5b611996565b6000805160206132448339815191528103610b8757611965600080516020613244833981519152611c3f565b61086d8383612031565b6000805160206132448339815191526119b881611c3f565b6119d060008051602061322483398151915285611038565b6119ed57604051635ee08b9760e01b815260040160405180910390fd5b6040516303d8c5ef60e11b81526001600160a01b038481166004830152602482018490528516906307b18bde90604401600060405180830381600087803b158015611a3757600080fd5b505af1158015611a4b573d6000803e3d6000fd5b5050505050505050565b60008585838686604051602001611a7095949392919061311e565b60405160208183030381529060405280519060200120905095945050505050565b42816060013511611ab557604051630bbaf26360e01b815260040160405180910390fd5b30611ac660408301602084016127ba565b6001600160a01b031614611b0957611ae460408201602083016127ba565b604051631ce0bfcd60e01b81526001600160a01b039091166004820152602401610b9f565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611b3d6020830183612758565b63ffffffff1614611b7757611b556020820182612758565b60405163134bf0e160e11b815263ffffffff9091166004820152602401610b9f565b6000611b896112896020840184612758565b90506000611b9e826106e76080860186612f35565b50905080611bbf57604051630af656f760e11b815260040160405180910390fd5b60008281526007602052604090205460ff1615611bf257604051634eb522d360e11b815260048101839052602401610b9f565b60008281526007602052604090819020805460ff1916600117905561086d9060008051602061324483398151915290611c2d90860186612f35565b810190611c3a91906127ba565b611cfe565b61103581336120a9565b6001600160a01b038316611c6657611c6182826120e2565b505050565b611c6183838361218f565b611c796121ca565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b611ccd6121f0565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611ca8565b600060008051602061326483398151915283148015611d245750611d228383611038565b155b15611d6e5760018054601590611d4990600160a81b90046001600160401b0316613164565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b611d788383612213565b5060019392505050565b6001600160a01b03821660009081526004602052604090205481151560ff909116151503611dd6576040516302c6469560e51b81526001600160a01b03831660048201528115156024820152604401610b9f565b6001600160a01b0382166000908152600460205260408120805460ff191683151517905581611e1c57600554611e17906001906001600160401b031661318a565b611e33565b600554611e33906001600160401b031660016131b1565b6005549091506001600160401b03600160401b9091048116908216811115611e81576040516378e2c15760e11b81526001600160401b03808416600483015282166024820152604401610b9f565b6005805467ffffffffffffffff19166001600160401b038416179055604080516001600160a01b038616815284151560208201527f863d338cad74814b108a06288ad5e0e80d56495e0332238b1d2cdcfa0ca8e5ce910161099e565b806001600160401b0316600003611f0757604051635f86e17760e01b815260040160405180910390fd5b6005546001600160401b03908116908216811015611f4b576040516378e2c15760e11b81526001600160401b03808316600483015283166024820152604401610b9f565b600580546fffffffffffffffff00000000000000001916600160401b6001600160401b038516908102919091179091556040519081527fb600f3cf7f38a4b49bb0c75f722ef69f7e3e39ef3bb4aa8207fd86e724a2324990602001611000565b60006001600160e01b03198216630111a9b760e11b148015906108a457506001600160e01b0319821663704316e560e01b141592915050565b6000806000835160410361201e5760208401516040850151606086015160001a612010888285856122a5565b95509550955050505061202a565b50508151600091506002905b9250925092565b60006000805160206132648339815191528314801561205557506120558383611038565b1561209f576001805460159061207a90600160a81b90046001600160401b03166131d1565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b611d788383612374565b6120b38282611038565b6109c55760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b9f565b6001600160a01b038216612109576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612156576040519150601f19603f3d011682016040523d82523d6000602084013e61215b565b606091505b5050905080611c6157604051631196f20d60e21b81526001600160a01b038416600482015260248101839052604401610b9f565b6001600160a01b0382166121b6576040516306b7a93160e41b815260040160405180910390fd5b611c616001600160a01b03841683836123df565b60015460ff16156121ee5760405163d93c066560e01b815260040160405180910390fd5b565b60015460ff166121ee57604051638dfc202b60e01b815260040160405180910390fd5b600061221f8383611038565b61229d576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556122553390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016108a4565b5060006108a4565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156122e0575060009150600390508261236a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612334573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166123605750600092506001915082905061236a565b9250600091508190505b9450945094915050565b60006123808383611038565b1561229d576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016108a4565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092019092526020810180516001600160e01b031663a9059cbb60e01b179052611c619185919060009061243d9084168361248b565b9050805160001415801561246257508080602001905181019061246091906131f4565b155b15611c6157604051635274afe760e01b81526001600160a01b0384166004820152602401610b9f565b6060612499838360006124a0565b9392505050565b6060814710156124c55760405163cd78605960e01b8152306004820152602401610b9f565b600080856001600160a01b031684866040516124e19190613211565b60006040518083038185875af1925050503d806000811461251e576040519150601f19603f3d011682016040523d82523d6000602084013e612523565b606091505b509150915061253386838361253d565b9695505050505050565b6060826125525761254d82612599565b612499565b815115801561256957506001600160a01b0384163b155b1561259257604051639996b31560e01b81526001600160a01b0385166004820152602401610b9f565b5080612499565b8051156125a95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b82805482825590600052602060002090601f0160209004810192821561265b5791602002820160005b8382111561262c57833560ff1683826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026125eb565b80156126595782816101000a81549060ff021916905560010160208160000104928301926001030261262c565b505b5061266792915061266b565b5090565b5b80821115612667576000815560010161266c565b6001600160a01b038116811461103557600080fd5b6000806000606084860312156126aa57600080fd5b83356126b581612680565b925060208401356126c581612680565b929592945050506040919091013590565b6000602082840312156126e857600080fd5b81356001600160e01b03198116811461249957600080fd5b801515811461103557600080fd5b60006020828403121561272057600080fd5b813561249981612700565b60006020828403121561273d57600080fd5b5035919050565b803563ffffffff81168114610ad857600080fd5b60006020828403121561276a57600080fd5b61249982612744565b6020808252825182820181905260009190848201906040850190845b818110156127ae57835160ff168352928401929184019160010161278f565b50909695505050505050565b6000602082840312156127cc57600080fd5b813561249981612680565b600080604083850312156127ea57600080fd5b8235915060208301356127fc81612680565b809150509250929050565b80356001600160401b0381168114610ad857600080fd5b60008083601f84011261283057600080fd5b5081356001600160401b0381111561284757600080fd5b60208301915083602082850101111561285f57600080fd5b9250929050565b60008060008060006080868803121561287e57600080fd5b61288786612744565b945061289560208701612807565b935060408601356128a581612680565b925060608601356001600160401b038111156128c057600080fd5b6128cc8882890161281e565b969995985093965092949392505050565b600080604083850312156128f057600080fd5b82356128fb81612680565b915060208301356127fc81612700565b6000806020838503121561291e57600080fd5b82356001600160401b038082111561293557600080fd5b818501915085601f83011261294957600080fd5b81358181111561295857600080fd5b8660208260071b850101111561296d57600080fd5b60209290920196919550909350505050565b803561ffff81168114610ad857600080fd5b600080600080608085870312156129a757600080fd5b6129b08561297f565b93506129be6020860161297f565b92506129cc60408601612807565b915060608501356129dc81612680565b939692955090935050565b6000602082840312156129f957600080fd5b61249982612807565b600060a08284031215612a1457600080fd5b50919050565b600080600060408486031215612a2f57600080fd5b83356001600160401b0380821115612a4657600080fd5b612a5287838801612a02565b94506020860135915080821115612a6857600080fd5b50612a758682870161281e565b9497909650939450505050565b60008083601f840112612a9457600080fd5b5081356001600160401b03811115612aab57600080fd5b6020830191508360208260051b850101111561285f57600080fd5b60008060208385031215612ad957600080fd5b82356001600160401b03811115612aef57600080fd5b612afb85828601612a82565b90969095509350505050565b600060208284031215612b1957600080fd5b6124998261297f565b600080600060408486031215612b3757600080fd5b8335925060208401356001600160401b03811115612b5457600080fd5b612a758682870161281e565b634e487b7160e01b600052602160045260246000fd5b82151581526040810160048310612b9d57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b600080600060408486031215612bbf57600080fd5b612bc884612744565b925060208401356001600160401b03811115612be357600080fd5b612a7586828701612a82565b600080600080600060808688031215612c0757600080fd5b612c1086612744565b94506020860135612c2081612680565b935060408601356001600160401b03811115612c3b57600080fd5b612c478882890161281e565b96999598509660600135949350505050565b600060208284031215612c6b57600080fd5b81356001600160401b03811115612c8157600080fd5b612c8d84828501612a02565b949350505050565b60018060a01b0380825116835263ffffffff602083015116602084015260408201516001600160401b03808216604086015282606085015116606086015280608085015116608086015250505061ffff60a08201511660a08301525050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610140612d2c8388612c95565b612d6360c0840187546001600160401b0381168252604081811c61ffff16602084015260509190911c6001600160801b0316910152565b80610120840152610f938184018587612cf4565b600060208284031215612d8957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b80356001600160801b0381168114610ad857600080fd5b600060208284031215612dcf57600080fd5b61249982612da6565b6020808252818101839052600090604080840186845b87811015612e5f5763ffffffff612e0483612744565b1683526001600160401b03612e1a868401612807565b168584015261ffff612e2d85840161297f565b168484015260606001600160801b03612e47828501612da6565b16908401526080928301929190910190600101612dee565b5090979650505050505050565b60005b83811015612e87578181015183820152602001612e6f565b50506000910152565b60008151808452612ea8816020860160208601612e6c565b601f01601f19169290920160200192915050565b6000610140612ecb8387612c95565b612f0260c0840186546001600160401b0381168252604081811c61ffff16602084015260509190911c6001600160801b0316910152565b8061012084015261253381840185612e90565b60008235609e19833603018112612f2b57600080fd5b9190910192915050565b6000808335601e19843603018112612f4c57600080fd5b8301803591506001600160401b03821115612f6657600080fd5b60200191503681900382131561285f57600080fd5b6001600160e01b03198135818116916004851015612fa35780818660040360031b1b83161692505b505092915050565b6000808335601e19843603018112612fc257600080fd5b83016020810192503590506001600160401b03811115612fe157600080fd5b80360382131561285f57600080fd5b6040815263ffffffff61300284612744565b1660408201526000602084013561301881612680565b6001600160a01b031660608301526130336040850185612fab565b60a0608085015261304860e085018284612cf4565b915050606085013560a08401526130626080860186612fab565b848303603f190160c0860152613079838284612cf4565b93505050508260208301529392505050565b8183823760009101908152919050565b828152604060208201526000612c8d6040830184612e90565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108a4576108a46130b4565b808201808211156108a4576108a46130b4565b6000808585111561310457600080fd5b8386111561311157600080fd5b5050820193919092039150565b63ffffffff60e01b8660e01b1681526bffffffffffffffffffffffff198560601b1660048201528360188201528183603883013760009101603801908152949350505050565b60006001600160401b03808316818103613180576131806130b4565b6001019392505050565b6001600160401b038281168282160390808211156131aa576131aa6130b4565b5092915050565b6001600160401b038181168382160190808211156131aa576131aa6130b4565b60006001600160401b038216806131ea576131ea6130b4565b6000190192915050565b60006020828403121561320657600080fd5b815161249981612700565b60008251612f2b818460208701612e6c56fe724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19dea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177574845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bcaa26469706673582212208de81dedbeada5a2aca0716fa78ca6772a44e2b612cf3cf5c45c045dc6d436f464736f6c6343000816003360a060405234801561001057600080fd5b50604051610e2e380380610e2e83398101604081905261002f916100b7565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e81610067565b506080526100d0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100c957600080fd5b5051919050565b608051610d436100eb60003960006105fa0152610d436000f3fe6080604052600436106100595760003560e01c806301e3366714610065578063715018a6146100875780637bfa20a91461009c5780638da5cb5b146100cf578063df2b057e146100f7578063f2fde38b1461010a57600080fd5b3661006057005b600080fd5b34801561007157600080fd5b506100856100803660046109c7565b61012a565b005b34801561009357600080fd5b50610085610142565b3480156100a857600080fd5b506100bc6100b7366004610a03565b610156565b6040519081526020015b60405180910390f35b3480156100db57600080fd5b506000546040516001600160a01b0390911681526020016100c6565b6100bc610105366004610a03565b6102e6565b34801561011657600080fd5b50610085610125366004610aa5565b6103cf565b61013261040d565b61013d83838361043a565b505050565b61014a61040d565b610154600061045d565b565b60006101656020850185610ac0565b67ffffffffffffffff166000036101ad576101866040860160208701610aea565b60405163680489c560e11b815263ffffffff90911660048201526024015b60405180910390fd5b6101b783836104ad565b5060006101dc6101cd60a0880160808901610ac0565b67ffffffffffffffff1661051f565b90506000806101ee6020890189610aa5565b6001600160a01b03166388a4124c61020c60408b0160208c01610aea565b8561021a60208c018c610ac0565b6040516001600160e01b031960e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff166044820152606401608060405180830381865afa158015610273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102979190610b25565b9350505091506102da828860200160208101906102b49190610b7a565b6102c460c08c0160a08d01610b7a565b6102d460608c0160408d01610b9e565b8561058b565b98975050505050505050565b60006102f56020850185610ac0565b67ffffffffffffffff16600003610316576101866040860160208701610aea565b61032083836104ad565b5060006103366101cd60a0880160808901610ac0565b90506000806103486020890189610aa5565b6001600160a01b031663c1723a1d61036660408b0160208c01610aea565b8561037460208c018c610ac0565b6040516001600160e01b031960e086901b16815263ffffffff939093166004840152602483019190915267ffffffffffffffff1660448201526064016080604051808303816000875af1158015610273573d6000803e3d6000fd5b6103d761040d565b6001600160a01b03811661040157604051631e4fbdf760e01b8152600060048201526024016101a4565b61040a8161045d565b50565b6000546001600160a01b031633146101545760405163118cdaa760e01b81523360048201526024016101a4565b6001600160a01b0383166104525761013d8282610661565b61013d83838361070e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082156104f0576000806104c4868685610749565b604051637085244b60e01b815260ff8516600482015290965092945085935050602490910190506101a4565b8083146105135760405163013adb8360e21b8152600481018290526024016101a4565b60009150505b92915050565b60008061052d604184610bd1565b905061053a602082610bfe565b156105625761054a602082610bfe565b6105549082610c12565b61055f906020610c25565b90505b8061056f60e06044610c25565b6105799190610c25565b610584906040610c25565b9392505050565b60008061ffff86161561059e57856105a0565b845b905060006127106105b561ffff84168a610bd1565b6105bf9190610c38565b90506001600160801b03841615806105de57506001600160801b038516155b156105ec5791506106589050565b6000846001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000876001600160801b031661062d9190610bd1565b6106379190610c38565b610641908a610c25565b90508181116106505781610652565b805b93505050505b95945050505050565b6001600160a01b038216610688576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d5576040519150601f19603f3d011682016040523d82523d6000602084013e6106da565b606091505b505090508061013d57604051631196f20d60e21b81526001600160a01b0384166004820152602481018390526044016101a4565b6001600160a01b038216610735576040516306b7a93160e41b815260040160405180910390fd5b61013d6001600160a01b03841683836107a3565b60003681600184018161075d8888846107f5565b6002830192909150610775908990899060030161081c565b94506002820161ffff8216830161078e81838b8d610c4c565b979b909a50969850505061ffff160193505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261013d908490610841565b60006002820161080781848688610c4c565b61081091610c76565b60f01c95945050505050565b600083838381811061083057610830610ca6565b919091013560f81c95945050505050565b60006108566001600160a01b038416836108a4565b9050805160001415801561087b5750808060200190518101906108799190610cbc565b155b1561013d57604051635274afe760e01b81526001600160a01b03841660048201526024016101a4565b60606105848383600084600080856001600160a01b031684866040516108ca9190610cde565b60006040518083038185875af1925050503d8060008114610907576040519150601f19603f3d011682016040523d82523d6000602084013e61090c565b606091505b509150915061091c868383610926565b9695505050505050565b60608261093b5761093682610982565b610584565b815115801561095257506001600160a01b0384163b155b1561097b57604051639996b31560e01b81526001600160a01b03851660048201526024016101a4565b5080610584565b8051156109925780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b03811681146109c257600080fd5b919050565b6000806000606084860312156109dc57600080fd5b6109e5846109ab565b92506109f3602085016109ab565b9150604084013590509250925092565b600080600080848603610140811215610a1b57600080fd5b60c0811215610a2957600080fd5b859450606060bf1982011215610a3e57600080fd5b5060c08501925061012085013567ffffffffffffffff80821115610a6157600080fd5b818701915087601f830112610a7557600080fd5b813581811115610a8457600080fd5b886020828501011115610a9657600080fd5b95989497505060200194505050565b600060208284031215610ab757600080fd5b610584826109ab565b600060208284031215610ad257600080fd5b813567ffffffffffffffff8116811461058457600080fd5b600060208284031215610afc57600080fd5b813563ffffffff8116811461058457600080fd5b6001600160801b038116811461040a57600080fd5b60008060008060808587031215610b3b57600080fd5b845193506020850151610b4d81610b10565b6040860151909350610b5e81610b10565b6060860151909250610b6f81610b10565b939692955090935050565b600060208284031215610b8c57600080fd5b813561ffff8116811461058457600080fd5b600060208284031215610bb057600080fd5b813561058481610b10565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761051957610519610bbb565b634e487b7160e01b600052601260045260246000fd5b600082610c0d57610c0d610be8565b500690565b8181038181111561051957610519610bbb565b8082018082111561051957610519610bbb565b600082610c4757610c47610be8565b500490565b60008085851115610c5c57600080fd5b83861115610c6957600080fd5b5050820193919092039150565b6001600160f01b03198135818116916002851015610c9e5780818660020360031b1b83161692505b505092915050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610cce57600080fd5b8151801515811461058457600080fd5b6000825160005b81811015610cff5760208186018101518583015201610ce5565b50600092019182525091905056fea2646970667358221220ece0c9195c21ba3a99689766b3b6463469c4c44a565c31a5474e9854540b148264736f6c6343000816003360e06040523480156200001157600080fd5b5060405162001a4438038062001a44833981016040819052620000349162000179565b33806200005b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000668162000110565b50600180546001600160a01b0319166001600160a01b038481169190911790915581166080819052600060a0526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa158015620000cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f59190620001b8565b63ffffffff1660c052505060636003556064600455620001e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200017657600080fd5b50565b600080604083850312156200018d57600080fd5b82516200019a8162000160565b6020840151909250620001ad8162000160565b809150509250929050565b600060208284031215620001cb57600080fd5b815163ffffffff81168114620001e057600080fd5b9392505050565b60805160a05160c05161181162000233600039600061038c015260006102fb0152600081816102c7015281816105d6015281816106df015281816108e50152610aa101526118116000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063996f79c01161006f578063996f79c014610447578063aec336e61461045d578063d80e9bd91461047d578063dabca063146104aa578063f2fde38b146104ca578063fd9be522146104ea57610156565b8063715018a614610365578063726075371461037a57806372d71322146103c35780638da5cb5b146103e55780638f58aa7a14610403578063909532381461042357610156565b80634389e58f116101085780634389e58f1461025a57806354fd4d50146102895780635e280f11146102b557806361d027b3146102e95780636251b6371461031d5780636750cd4c1461034457610156565b806301ffc9a71461016f5780630e97289b146101a457806312cc947f146101dc5780631881d94d146101fe5780631c7c294e1461021a578063334993ff1461023a57610156565b3661015657005b604051632657b6c360e01b815260040160405180910390fd5b34801561017b57600080fd5b5061018f61018a366004610fd6565b61050a565b60405190151581526020015b60405180910390f35b3480156101b057600080fd5b506001546101c4906001600160a01b031681565b6040516001600160a01b03909116815260200161019b565b3480156101e857600080fd5b506101fc6101f7366004611041565b610541565b005b34801561020a57600080fd5b50600260405161019b9190611082565b34801561022657600080fd5b506002546101c4906001600160a01b031681565b34801561024657600080fd5b506101fc6102553660046110aa565b6106b3565b34801561026657600080fd5b5061027a6102753660046111bc565b6106c6565b60405161019b93929190611283565b34801561029557600080fd5b50604080516000808252602082015260029181019190915260600161019b565b3480156102c157600080fd5b506101c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f557600080fd5b506101c47f000000000000000000000000000000000000000000000000000000000000000081565b34801561032957600080fd5b50610332600181565b60405160ff909116815260200161019b565b34801561035057600080fd5b5061018f61035f3660046112d2565b50600190565b34801561037157600080fd5b506101fc610810565b34801561038657600080fd5b506103ae7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161019b565b3480156103cf57600080fd5b506103d8610824565b60405161019b91906112ed565b3480156103f157600080fd5b506000546001600160a01b03166101c4565b34801561040f57600080fd5b506101fc61041e366004611320565b6108b2565b34801561042f57600080fd5b5061043960035481565b60405190815260200161019b565b34801561045357600080fd5b5061043960045481565b34801561046957600080fd5b506101fc61047836600461134c565b6109a7565b34801561048957600080fd5b5061049d610498366004611369565b6109d1565b60405161019b91906113e4565b3480156104b657600080fd5b506101fc6104c53660046113fb565b610a13565b3480156104d657600080fd5b506101fc6104e536600461134c565b610a2b565b3480156104f657600080fd5b506101fc610505366004611320565b610a6e565b60006001600160e01b031982166325fc096160e21b148061053b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546001600160a01b03161580159061056657506002546001600160a01b03163314155b1561058457604051631c2c85bb60e21b815260040160405180910390fd5b6000604051806060016040528061059b8585610b2e565b63ffffffff1681526020016105b08585610b51565b81526020016105bf8585610b71565b6001600160401b0316905290506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a825d747826106068686610b94565b6106108787610ba6565b60405161061e929190611437565b6040805191829003822060e086901b6001600160e01b0319168352845163ffffffff166004840152602085015160248401529301516001600160401b031660448201526001600160a01b039091166064820152608481019190915260a401600060405180830381600087803b15801561069657600080fd5b505af11580156106aa573d6000803e3d6000fd5b50505050505050565b6106bb610bc2565b600491909155600355565b60408051808201909152600080825260208201526060807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461072657604051630fd72cd960e31b815260040160405180910390fd5b6107376107328761145e565b610bef565b9150845160001461074857846107d4565b60058054610755906114fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610781906114fb565b80156107ce5780601f106107a3576101008083540402835291602001916107ce565b820191906000526020600020905b8154815290600101906020018083116107b157829003601f168201915b50505050505b90506107e08282610c47565b60405180604001604052806004548152602001856107ff576000610803565b6003545b9052969195509350915050565b610818610bc2565b6108226000610caf565b565b60058054610831906114fb565b80601f016020809104026020016040519081016040528092919081815260200182805461085d906114fb565b80156108aa5780601f1061087f576101008083540402835291602001916108aa565b820191906000526020600020905b81548152906001019060200180831161088d57829003601f168201915b505050505081565b6108ba610bc2565b6001600160a01b0382166108e157604051633d3496e160e01b815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610941573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610965919061152f565b90506001600160a01b03811661098e576040516354c1781b60e01b815260040160405180910390fd5b6109a26001600160a01b0382168484610cff565b505050565b6109af610bc2565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600080825260208201526040518060400160405280600454815260200183610a04576000610a08565b6003545b905295945050505050565b610a1b610bc2565b6005610a278282611594565b5050565b610a33610bc2565b6001600160a01b038116610a6257604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610a6b81610caf565b50565b610a76610bc2565b6001600160a01b038216610a9d57604051633d3496e160e01b815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b21919061152f565b90506109a2818484610d51565b6000610b3e600d60098486611653565b610b479161167d565b60e01c9392505050565b6000610b61602d600d8486611653565b610b6a916116ad565b9392505050565b6000610b81600960018486611653565b610b8a916116cb565b60c01c9392505050565b6000610b6a610ba38484610d74565b90565b366000610bb68360518187611653565b915091505b9250929050565b6000546001600160a01b031633146108225760405163118cdaa760e01b8152336004820152602401610a59565b8051602080830151604080850151606080870151608088015160a089015160c08a015195519398610c3198600198919791966001600160a01b031695016116f9565b6040516020818303038152906040529050919050565b600154604051631f5dad8b60e31b81526001600160a01b039091169063faed6c5890610c799085908590600401611774565b600060405180830381600087803b158015610c9357600080fd5b505af1158015610ca7573d6000803e3d6000fd5b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526109a2908490610d84565b6001600160a01b038316610d69576109a28282610de7565b6109a2838383610e94565b6000610b61605160318486611653565b6000610d996001600160a01b03841683610ecf565b90508051600014158015610dbe575080806020019051810190610dbc91906117a2565b155b156109a257604051635274afe760e01b81526001600160a01b0384166004820152602401610a59565b6001600160a01b038216610e0e576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e5b576040519150601f19603f3d011682016040523d82523d6000602084013e610e60565b606091505b50509050806109a257604051631196f20d60e21b81526001600160a01b038416600482015260248101839052604401610a59565b6001600160a01b038216610ebb576040516306b7a93160e41b815260040160405180910390fd5b6109a26001600160a01b0384168383610cff565b6060610b6a8383600084600080856001600160a01b03168486604051610ef591906117bf565b60006040518083038185875af1925050503d8060008114610f32576040519150601f19603f3d011682016040523d82523d6000602084013e610f37565b606091505b5091509150610f47868383610f51565b9695505050505050565b606082610f6657610f6182610fad565b610b6a565b8151158015610f7d57506001600160a01b0384163b155b15610fa657604051639996b31560e01b81526001600160a01b0385166004820152602401610a59565b5080610b6a565b805115610fbd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215610fe857600080fd5b81356001600160e01b031981168114610b6a57600080fd5b60008083601f84011261101257600080fd5b5081356001600160401b0381111561102957600080fd5b602083019150836020828501011115610bbb57600080fd5b6000806020838503121561105457600080fd5b82356001600160401b0381111561106a57600080fd5b61107685828601611000565b90969095509350505050565b60208101600383106110a457634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156110bd57600080fd5b50508035926020909101359150565b600060e082840312156110de57600080fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561111c5761111c6110e4565b60405290565b600082601f83011261113357600080fd5b81356001600160401b038082111561114d5761114d6110e4565b604051601f8301601f19908116603f01168101908282118183101715611175576111756110e4565b8160405283815286602085880101111561118e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b8015158114610a6b57600080fd5b6000806000606084860312156111d157600080fd5b83356001600160401b03808211156111e857600080fd5b6111f4878388016110cc565b9450602086013591508082111561120a57600080fd5b5061121786828701611122565b9250506040840135611228816111ae565b809150509250925092565b60005b8381101561124e578181015183820152602001611236565b50506000910152565b6000815180845261126f816020860160208601611233565b601f01601f19169290920160200192915050565b83518152602080850151908201526080604082015260006112a76080830185611257565b8281036060840152610f478185611257565b803563ffffffff811681146112cd57600080fd5b919050565b6000602082840312156112e457600080fd5b610b6a826112b9565b602081526000610b6a6020830184611257565b6001600160a01b0381168114610a6b57600080fd5b80356112cd81611300565b6000806040838503121561133357600080fd5b823561133e81611300565b946020939093013593505050565b60006020828403121561135e57600080fd5b8135610b6a81611300565b6000806000806060858703121561137f57600080fd5b84356001600160401b038082111561139657600080fd5b6113a2888389016110cc565b955060208701359150808211156113b857600080fd5b506113c587828801611000565b90945092505060408501356113d9816111ae565b939692955090935050565b81518152602080830151908201526040810161053b565b60006020828403121561140d57600080fd5b81356001600160401b0381111561142357600080fd5b61142f84828501611122565b949350505050565b8183823760009101908152919050565b80356001600160401b03811681146112cd57600080fd5b600060e0823603121561147057600080fd5b6114786110fa565b61148183611447565b815261148f602084016112b9565b60208201526114a060408401611315565b60408201526114b1606084016112b9565b60608201526080830135608082015260a083013560a082015260c08301356001600160401b038111156114e357600080fd5b6114ef36828601611122565b60c08301525092915050565b600181811c9082168061150f57607f821691505b6020821081036110de57634e487b7160e01b600052602260045260246000fd5b60006020828403121561154157600080fd5b8151610b6a81611300565b601f8211156109a2576000816000526020600020601f850160051c810160208610156115755750805b601f850160051c820191505b81811015610ca757828155600101611581565b81516001600160401b038111156115ad576115ad6110e4565b6115c1816115bb84546114fb565b8461154c565b602080601f8311600181146115f657600084156115de5750858301515b600019600386901b1c1916600185901b178555610ca7565b600085815260208120601f198616915b8281101561162557888601518255948401946001909101908401611606565b50858210156116435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808585111561166357600080fd5b8386111561167057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156116a55780818660040360031b1b83161692505b505092915050565b8035602083101561053b57600019602084900360031b1b1692915050565b6001600160c01b031981358181169160088510156116a55760089490940360031b84901b1690921692915050565b60ff60f81b8960f81b1681526001600160401b0360c01b8860c01b166001820152600063ffffffff60e01b808960e01b16600984015287600d840152808760e01b16602d840152508460318301528360518301528251611760816071850160208701611233565b919091016071019998505050505050505050565b6040815260006117876040830185611257565b82810360208401526117998185611257565b95945050505050565b6000602082840312156117b457600080fd5b8151610b6a816111ae565b600082516117d1818460208701611233565b919091019291505056fea2646970667358221220750938ea5e06af211ca34ba4a3236c8229efe9e13270f4e0097f60b3df36934b64736f6c63430008160033608060405234801561001057600080fd5b506107d2806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e5c5e9a314610030575b600080fd5b61004361003e366004610529565b61005a565b6040516100519291906105eb565b60405180910390f35b6060806100678484610072565b915091509250929050565b606080600283101561009f5760405163196499c760e21b8152600060048201526024015b60405180910390fd5b60006100ae6002828688610619565b6100b791610643565b60f01c90506002600219820161021f578060005b868310156101c45760006100e460018501858a8c610619565b6100ed91610673565b60f81c9050600081900361011757604051636780cfaf60e01b815260006004820152602401610096565b8160ff1660000361012a57809150610167565b8160ff168160ff16146101675736600061014686868c8e610619565b915091506101578989868585610236565b9099509750859450919250829150505b600184019360009061017e90600301868b8d610619565b61018791610643565b60f01c905060008190036101b15760405163196499c760e21b815260048101869052602401610096565b8060020161ffff168501945050506100cb565b8287146101e75760405163196499c760e21b815260048101849052602401610096565b6002871115610218573660006101ff85858b8d610619565b915091506102108888858585610236565b909850965050505b505061022d565b61022a828787610356565b93505b50509250929050565b60608060001960ff8616016102b35786511561027557868484604051602001610261939291906106a1565b6040516020818303038152906040526102ac565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b965061034b565b60011960ff86160161032d578551156102ef578584846040516020016102db939291906106a1565b604051602081830303815290604052610326565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b955061034b565b604051636780cfaf60e01b815260ff86166004820152602401610096565b509495939450505050565b606060001961ffff8516016103f65760228214610386576040516301b8ca5560e31b815260040160405180910390fd5b60006103a7610399602260028688610619565b6103a2916106c9565b6104e8565b604051600160f81b60208201819052601160f01b602183015260238201526001600160801b0319608083901b1660248201529091506034016040516020818303038152906040529150506104e1565b60011961ffff8516016104c2576042821115806104135750606282115b15610431576040516360493e2b60e11b815260040160405180910390fd5b6000610444610399602260028688610619565b90506000610459610399604260228789610619565b90506000604119850161046f866042818a610619565b610478916106c9565b60405160086020938403029190911c92506104a9916001916011918391889183916031916002918b918b91016106e8565b60405160208183030381529060405293505050506104e1565b604051630417051360e41b815261ffff85166004820152602401610096565b9392505050565b60006fffffffffffffffffffffffffffffffff821115610525576040516306dfcc6560e41b81526080600482015260248101839052604401610096565b5090565b6000806020838503121561053c57600080fd5b823567ffffffffffffffff8082111561055457600080fd5b818501915085601f83011261056857600080fd5b81358181111561057757600080fd5b86602082850101111561058957600080fd5b60209290920196919550909350505050565b60005b838110156105b657818101518382015260200161059e565b50506000910152565b600081518084526105d781602086016020860161059b565b601f01601f19169290920160200192915050565b6040815260006105fe60408301856105bf565b828103602084015261061081856105bf565b95945050505050565b6000808585111561062957600080fd5b8386111561063657600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561066b5780818660020360031b1b83161692505b505092915050565b6001600160f81b0319813581811691600185101561066b5760019490940360031b84901b1690921692915050565b600084516106b381846020890161059b565b8201838582376000930192835250909392505050565b803560208310156106e257600019602084900360031b1b165b92915050565b60f88a811b6001600160f81b0319908116835260f08b901b6001600160f01b031916600184015289821b81166003840152608089901b6001600160801b03191660048401529087901b1660148201526000610752601583018760f01b6001600160f01b0319169052565b61076b601783018660f81b6001600160f81b0319169052565b610784601883018560801b6001600160801b0319169052565b5060288101919091526048019897505050505050505056fea26469706673582212204efa34ad59ac11af0513f32ec0e71a5a534ca0c0184912b918fc43efbc9d089f64736f6c63430008160033a264697066735822122070e22227a53dcde0b2af718abd957dede3d2ef0ae7cd27d5379adfdfb066309664736f6c63430008160033", - "sourceMap": "2205:20482:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15315:163;;;;;;;;;;-1:-1:-1;15315:163:1;;;;;:::i;:::-;;:::i;:::-;;3633:67;;;;;;;;;;;;;:::i;19014:2608::-;;;;;;;;;;-1:-1:-1;19014:2608:1;;;;;:::i;:::-;;:::i;4283:7075::-;;;;;;;;;;-1:-1:-1;4283:7075:1;;;;;:::i;:::-;;:::i;2452:134:85:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3419:43:1;;;;;;;;;;-1:-1:-1;3419:43:1;;;;-1:-1:-1;;;;;3419:43:1;;;;;;-1:-1:-1;;;;;2865:47:122;;;2847:66;;2835:2;2820:18;3419:43:1;2701:218:122;11696:490:1;;;;;;;;;;-1:-1:-1;11696:490:1;;;;;:::i;:::-;;:::i;3360:151:85:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18539:469:1:-;;;;;;:::i;:::-;;:::i;3221:133:85:-;;;;;;;;;;;;;:::i;2922:141::-;;;;;;;;;;;;;:::i;3602:204:0:-;;;;;;;;;;-1:-1:-1;3602:204:0;;;;;:::i;:::-;;:::i;:::-;;;;8410:6:122;8398:19;;;8380:38;;-1:-1:-1;;;;;8507:15:122;;;8502:2;8487:18;;8480:43;8559:15;;8539:18;;;8532:43;8368:2;8353:18;3602:204:0;8180:401:122;15673:1687:1;;;;;;;;;;-1:-1:-1;15673:1687:1;;;;;:::i;:::-;;:::i;21943:228::-;;;;;;;;;;-1:-1:-1;21943:228:1;;;;;:::i;:::-;;:::i;:::-;;;9719:14:122;;9712:22;9694:41;;9682:2;9667:18;21943:228:1;9554:187:122;2738:178:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2975:249:0:-;;;;;;;;;;-1:-1:-1;2975:249:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;12456:528:1:-;;;;;;;;;;-1:-1:-1;12456:528:1;;;;;:::i;:::-;;:::i;22177:338::-;;;;;;;;;;-1:-1:-1;22177:338:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2592:140:85:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;;;;;;;;;;;:::i;21628:187:1:-;;;;;;;;;;-1:-1:-1;21628:187:1;;;;;:::i;:::-;;:::i;17961:376::-;;;;;;:::i;:::-;;:::i;21821:116::-;;;;;;;;;;-1:-1:-1;21821:116:1;;;;;:::i;:::-;;:::i;3355:57::-;;;;;;;;;;;;3406:6;3355:57;;;;;15878:25:122;;;15866:2;15851:18;3355:57:1;15732:177:122;2157:141:85;;;;;;;;;;;;;:::i;14991:136:1:-;;;;;;;;;;-1:-1:-1;14991:136:1;;;;;:::i;:::-;;:::i;3412:184:0:-;;;;;;;;;;-1:-1:-1;3412:184:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;16424:47:122;;;16406:66;;16503:2;16488:18;;16481:34;;;;16379:18;3412:184:0;16232:289:122;1819:584:79;;;;;;;;;;;;;:::i;3293:56:1:-;;;;;;;;;;;;3336:13;3293:56;;3953:100;;;;;;;;;;-1:-1:-1;3953:100:1;;;;;:::i;:::-;4018:16;:28;;-1:-1:-1;;;;;;4018:28:1;-1:-1:-1;;;;;4018:28:1;;;;;;;;;;3953:100;2304:142:85;;;;;;;;;;;;;:::i;17366:589:1:-;;;;;;:::i;:::-;;:::i;3230:176:0:-;;;;;;;;;;-1:-1:-1;3230:176:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;17807:15:122;;;17789:34;;17859:15;;;;17854:2;17839:18;;17832:43;17709:18;3230:176:0;17562:319:122;1572:26:79;;;;;;;;;;-1:-1:-1;1572:26:79;;;;;;;;14166:464:1;;;;;;;;;;-1:-1:-1;14166:464:1;;;;;:::i;:::-;;:::i;15315:163::-;15392:79;15406:7;-1:-1:-1;;;;;15423:29:1;;15415:38;;15392:13;:79::i;:::-;15315:163;;:::o;3633:67::-;3675:18;:16;:18::i;:::-;3633:67::o;19014:2608::-;19086:13;19102:21;:12;;:19;:21::i;:::-;19166:17;;;19133:19;19166:17;;;:9;:17;;;;;;19086:37;;-1:-1:-1;;;;;;19166:17:1;;;;;19219:26;19246;:12;;:24;:26::i;:::-;19274:21;:12;;:19;:21::i;:::-;19219:77;;-1:-1:-1;;;;;;19219:77:1;;;;;;;-1:-1:-1;;;;;18798:32:122;;;19219:77:1;;;18780:51:122;19219:77:1;18867:23:122;18847:18;;;18840:51;18753:18;;19219:77:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19194:102;;;19306:20;19343:10;19306:48;;19366:12;19398:10;-1:-1:-1;;;;;19386:31:1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19365:54;;;;19433:5;-1:-1:-1;;;;;19433:10:1;19442:1;19433:10;19429:2187;;19497:19;19519:6;-1:-1:-1;;;;;19519:16:1;;19536:21;:12;;:19;:21::i;:::-;19559:26;:12;;:24;:26::i;:::-;19519:70;;-1:-1:-1;;;;;;19519:70:1;;;;;;;;20444:15:122;;;;19519:70:1;;;20426:34:122;-1:-1:-1;;;;;20496:32:122;20476:18;;;20469:60;19587:1:1;20545:18:122;;;20538:43;20370:18;;19519:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19519:70:1;;;;;;;;;;;;:::i;:::-;19497:92;;19622:7;19647:6;19636:31;;;;;;;;;;;;:::i;:::-;:44;;;19681:1;19636:47;;;;;;;;:::i;:::-;;;;;;;19622:62;;19699:25;19727:21;:12;;:19;:21::i;:::-;19699:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19699:49:1;;-1:-1:-1;19794:22:1;;-1:-1:-1;19794:12:1;;-1:-1:-1;19794:12:1;;-1:-1:-1;19794:20:1;:22::i;:::-;19784:33;;;;;;;:::i;:::-;;;;;;;;19762:55;;19852:23;19889:27;19959:29;;;20006:12;20036:11;20065:3;19919:163;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;19919:163:1;;;;;;;;;;;;;;-1:-1:-1;;;;;19919:163:1;-1:-1:-1;;;;;;19919:163:1;;;;;;;;;;;-1:-1:-1;;;;;;;20129:16:1;;;20146:6;20162;19919:163;20187:22;:15;20205:4;20187:22;:::i;:::-;20129:81;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20269:58;;25208:66:122;20269:58:1;;;25196:79:122;25291:12;;;25284:28;;;20114:96:1;;-1:-1:-1;20228:28:1;;25328:12:122;;20269:58:1;;;;;;-1:-1:-1;;20269:58:1;;;;;;;20259:69;;20269:58;20259:69;;;;-1:-1:-1;;;20380:32:1;;20388:1;20380:32;;;25533:25:122;25574:18;;;25567:34;;;20259:69:1;-1:-1:-1;20347:7:1;;;;;;20380;;;;25506:18:122;;20380:32:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20465:25;;;;;;26167:19:122;;;;26202:12;;;26195:28;;;;26279:3;26257:16;;;;-1:-1:-1;;;;;;26253:36:122;26239:12;;;26232:58;20465:25:1;;;;;;;;;26306:12:122;;;;20465:25:1;;;;-1:-1:-1;;;;20568:1:1;;-1:-1:-1;20549:21:1;;-1:-1:-1;;;20549:21:1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20549:21:1;;;;;;;;;;;;;;;;20518:52;;20596:89;;;;;;;;20609:6;20596:89;;;;;;20625:6;-1:-1:-1;;;;;20596:89:1;;;;;20634:14;20596:89;;;;20650:15;20668:4;20650:22;;;;:::i;:::-;20596:89;;;;20674:10;20596:89;;;20584:6;20591:1;20584:9;;;;;;;;:::i;:::-;;;;;;;;;;:101;20699:19;;-1:-1:-1;;;20699:19:1;;-1:-1:-1;;;;;20699:11:1;;;;;:19;;20711:6;;20699:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20768:21;20832:41;;;20891:12;20921:11;20792:154;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;20792:154:1;;;;;;;;;;;;;;-1:-1:-1;;;;;20792:154:1;-1:-1:-1;;;;;;20792:154:1;;;;;;;;;;;-1:-1:-1;;;;;;;20993:16:1;;;21010:6;21026;20792:154;21045:22;:15;21063:4;21045:22;:::i;:::-;20993:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21127:58;;25208:66:122;21127:58:1;;;25196:79:122;25291:12;;;25284:28;;;20978:90:1;;-1:-1:-1;21086:28:1;;25328:12:122;;21127:58:1;;;;;;-1:-1:-1;;21127:58:1;;;;;;;21117:69;;21127:58;21117:69;;;;-1:-1:-1;;;21238:32:1;;21246:1;21238:32;;;25533:25:122;25574:18;;;25567:34;;;21117:69:1;-1:-1:-1;21205:7:1;;;;;;21238;;;;25506:18:122;;21238:32:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21323:25;;;;;;26167:19:122;;;26202:12;;;26195:28;;;-1:-1:-1;;;;;;26279:3:122;26257:16;;;26253:36;26239:12;;;26232:58;21204:66:1;;-1:-1:-1;21204:66:1;;-1:-1:-1;21204:66:1;-1:-1:-1;26306:12:122;;21323:25:1;;;;;;;;;;;;21310:38;;20960:403;;;;;21388:83;;;;;;;;21401:6;21388:83;;;;;;21417:6;-1:-1:-1;;;;;21388:83:1;;;;;21426:8;21388:83;;;;21436:15;21454:4;21436:22;;;;:::i;:::-;21388:83;;;;21460:10;21388:83;;;21376:6;21383:1;21376:9;;;;;;;;:::i;:::-;;;;;;;;;;:95;21485:19;;-1:-1:-1;;;21485:19:1;;-1:-1:-1;;;;;21485:11:1;;;;;:19;;21497:6;;21485:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19445:2070;;;;;;;;19429:2187;;;21535:70;;-1:-1:-1;;;21535:70:1;;-1:-1:-1;;;;;21535:56:1;;;;;:70;;21592:12;;;;21535:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19429:2187;19076:2546;;;;;19014:2608;;:::o;4283:7075::-;4416:12;4399:30;;-1:-1:-1;;;;;4399:30:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4399:30:1;-1:-1:-1;4370:59:1;;;;:13;;:59;;;;;;:::i;:::-;;4476:12;4463:26;;-1:-1:-1;;;;;4463:26:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4463:26:1;-1:-1:-1;4439:50:1;;;;:21;;:50;;;;;;:::i;:::-;;4538:12;4524:27;;-1:-1:-1;;;;;4524:27:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4524:27:1;-1:-1:-1;4499:52:1;;;;:22;;:52;;;;;;:::i;:::-;;4603:12;4589:27;;-1:-1:-1;;;;;4589:27:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4589:27:1;-1:-1:-1;4561:55:1;;;;:25;;:55;;;;;;:::i;:::-;-1:-1:-1;4650:16:1;;;4664:1;4650:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4626:40:1;;;;:21;;-1:-1:-1;4626:40:1;;;;:::i;:::-;-1:-1:-1;4703:10:1;;-1:-1:-1;;;;;;4703:10:1;;4711:1;4703:10;;;15878:25:122;4703:7:1;;;;15851:18:122;;4703:10:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4676:21;:24;;4698:1;;4676:24;;;;:::i;:::-;;;;;;;;;:37;;-1:-1:-1;;;;;;4676:37:1;-1:-1:-1;;;;;4676:37:1;;;;;;;;;;;4770:289;4792:12;4788:16;;:1;:16;;;4770:289;;;4829:10;4842:5;:1;4846;4842:5;:::i;:::-;4829:18;;;;4892:3;4865:13;:21;;4887:1;4865:24;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;4960:3;4973:4;4945:34;;;;;:::i;:::-;29129:10:122;29117:23;;;29099:42;;-1:-1:-1;;;;;29177:32:122;29172:2;29157:18;;29150:60;29087:2;29072:18;4945:34:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4913:13:1;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;:66;;;;;-1:-1:-1;;;;;4913:66:1;;;;;-1:-1:-1;;;;;4913:66:1;;;;;;4997:47;5014:13;:26;;5041:1;5014:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;5014:29:1;4997:16;:47::i;:::-;-1:-1:-1;4806:3:1;;4770:289;;;;5185:4;5163:28;;;;;:::i;:::-;-1:-1:-1;;;;;29385:32:122;;;29367:51;;29355:2;29340:18;5163:28:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5137:23:1;:54;;-1:-1:-1;;;;;;5137:54:1;-1:-1:-1;;;;;5137:54:1;;;;;;;;;;-1:-1:-1;5202:5722:1;5224:12;5220:16;;:1;:16;;;5202:5722;;;5277:26;5261:12;:42;;;;;;;;:::i;:::-;;5257:5657;;5323:20;5354:13;:26;;5381:1;5354:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5354:29:1;5323:61;;5466:4;5493:12;3336:13;3406:6;5422:185;;;;;:::i;:::-;-1:-1:-1;;;;;29864:15:122;;;29846:34;;29916:15;;;;29911:2;29896:18;;29889:43;29963:2;29948:18;;29941:34;30006:2;29991:18;;29984:34;29795:3;29780:19;5422:185:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5403:8:1;:204;;-1:-1:-1;;;;;;5403:204:1;-1:-1:-1;;;;;5403:204:1;;;;;;;;;;5647:31;;5665:12;;5647:31;;;:::i;:::-;-1:-1:-1;;;;;29385:32:122;;;29367:51;;29355:2;29340:18;5647:31:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5625:19:1;:53;;-1:-1:-1;;;;;;5625:53:1;-1:-1:-1;;;;;5625:53:1;;;;;;;;;;5696:13;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;5750:8;:16;5696:72;;-1:-1:-1;;;5696:72:1;;-1:-1:-1;;;;;5750:16:1;;;5696:72;;;29367:51:122;5696:29:1;;;:45;;29340:18:122;;5696:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5786:13;:26;;5813:1;5786:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;5840:19;;5786:75;;-1:-1:-1;;;5786:75:1;;-1:-1:-1;;;;;5840:19:1;;;5786:75;;;29367:51:122;5786:29:1;;;:45;;29340:18:122;;5786:75:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5915:8:1;:16;5879:22;:25;;-1:-1:-1;;;;;5915:16:1;;;;-1:-1:-1;5879:22:1;-1:-1:-1;5879:25:1;;;;;;;;;;:::i;:::-;;;;;;;;;;:53;;-1:-1:-1;;;;;;5879:53:1;-1:-1:-1;;;;;5879:53:1;;;;;;5989:19;;5950:25;:28;;5989:19;;;;;5950:25;:28;;;;;;;;;;:::i;:::-;;;;;;;;;:59;;-1:-1:-1;;;;;5950:59:1;;;;-1:-1:-1;;;;;;5950:59:1;;;;;;;;;;6076:16;;;-1:-1:-1;6076:16:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6076:16:1;6050:42;;6134:4;6114:6;6121:1;6114:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6114:25:1;;;;:9;;;;;;;;;;:25;6193:16;;;6207:1;6193:16;;;;;;;;6162:28;;6193:16;;6207:1;;6193:16;;;;;;;-1:-1:-1;;6256:8:1;:16;6231:14;;;;-1:-1:-1;;;;;;6256:16:1;;6231:14;;-1:-1:-1;6256:16:1;;6231:14;;;;:::i;:::-;-1:-1:-1;;;;;6231:42:1;;;:14;;;;;;;;;:42;6320:19;;6295:14;;6320:19;;;6295:11;;6320:19;;6295:14;;;;;;:::i;:::-;-1:-1:-1;;;;;6295:45:1;;;:14;;;;;;;;;:45;6542:23;;6383:276;;6421:12;;6467:3;;6497:11;;6542:23;;;6600:4;;6631:6;;6383:276;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6363:17:1;:296;;-1:-1:-1;;;;;;6363:296:1;-1:-1:-1;;;;;6363:296:1;;;;;;;;;;6705:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6682:20:1;:43;;-1:-1:-1;;;;;;6682:43:1;-1:-1:-1;;;;;6682:43:1;;;;;;;;;6747:17;;:64;;-1:-1:-1;;;6747:64:1;;6682:20;6747:64;;29367:51:122;;;;6747:17:1;;;;:33;;29340:18:122;;6747:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6882:1;6886;6882:5;;;;:::i;:::-;6958:23;;6849:261;;6913:11;;-1:-1:-1;;;;;6958:23:1;;7008:21;;6958:23;;7082:6;;6849:261;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6834:12:1;:276;;-1:-1:-1;;;;;;6834:276:1;-1:-1:-1;;;;;6834:276:1;;;;;;;;;;7150:19;;7164:4;;7150:19;;;:::i;:::-;15878:25:122;;;15866:2;15851:18;7150:19:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7132:15:1;:37;;-1:-1:-1;;;;;;7132:37:1;-1:-1:-1;;;;;7132:37:1;;;;;;;;;7191:12;;:54;;-1:-1:-1;;;7191:54:1;;;;;29367:51:122;;;;7191:12:1;;;;:28;;29340:18:122;;7191:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6028:1236;;7282:32;-1:-1:-1;;;;;;;;;;;;;;;;;;;7282:32:1;7399:12;7368:44;;-1:-1:-1;;;;;7368:44:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7368:44:1;;-1:-1:-1;;7368:44:1;;;;;;;;;;;-1:-1:-1;7332:80:1;;7461:39;;;-1:-1:-1;;;;;7461:39:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7461:39:1;;-1:-1:-1;;7461:39:1;;;;;;;;;;;-1:-1:-1;7430:28:1;;;:70;7524:7;7519:2678;7541:12;7537:16;;:1;:16;;;7519:2678;;;7591:1;7586:6;;:1;:6;;;7582:20;7594:8;7582:20;7624:13;7640:5;:1;7644;7640:5;:::i;:::-;7699:16;;;7713:1;7699:16;;;;;;;;;7624:21;;;;;;-1:-1:-1;7668:28:1;;7699:16;;;;;;;;;;-1:-1:-1;;7769:16:1;;;7737:29;7769:16;;;;;;;;;7832:12;;7807:14;;7668:47;;-1:-1:-1;7769:16:1;;-1:-1:-1;;;;;7832:12:1;;;;-1:-1:-1;7668:47:1;;7737:29;7807:14;;;;:::i;:::-;-1:-1:-1;;;;;7807:38:1;;;;:14;;;;;;;;;;;:38;7914:33;;;7945:1;7914:33;;;;;;;;;7868:43;;7914:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7868:79;;7969:26;7998:265;;;;;;;;8033:3;-1:-1:-1;;;;;7998:265:1;;;;;8068:11;:18;7998:265;;;;;;8119:12;:19;7998:265;;;;;;8165:1;7998:265;;;;;;8192:11;7998:265;;;;8229:12;7998:265;;;7969:294;;8327:43;;;;;;;;8352:6;8327:43;;;;;;8360:9;8327:43;;;8312:9;8322:1;8312:12;;;;;;;;:::i;:::-;;;;;;;;;;:58;8396:8;:16;:48;;-1:-1:-1;;;8396:48:1;;-1:-1:-1;;;;;8396:16:1;;;;:37;;:48;;8434:9;;8396:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8470:19:1;;:51;;-1:-1:-1;;;8470:51:1;;-1:-1:-1;;;;;8470:19:1;;;;-1:-1:-1;8470:40:1;;-1:-1:-1;8470:51:1;;8511:9;;8470:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8592:49:1;;-1:-1:-1;8680:1:1;;-1:-1:-1;8644:38:1;;-1:-1:-1;8644:38:1;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;8743:49:1;;;;;;;;8758:5;8743:49;;8773:17;;-1:-1:-1;;;;;8773:17:1;8743:49;;;;;;;;8834;;;;;;;;8743;8834;;;;;;;;;8818:13;;8592:90;;-1:-1:-1;8743:49:1;8592:90;;8708:32;;8818:13;;;;:::i;:::-;;;;;;;;;;:65;8909:8;:16;:54;;-1:-1:-1;;;8909:54:1;;-1:-1:-1;;;;;8909:16:1;;;;:42;;:54;;8952:10;;8909:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9086:329:1;;;;;;;;;;;;;9195:4;9086:329;;;;;;;;;;;;;9288:5;9086:329;;;;9335:4;9086:329;;;;9376:16;;-1:-1:-1;;;;;9376:16:1;9086:329;;;;9047:33;;:36;;9086:329;;-1:-1:-1;9047:33:1;-1:-1:-1;9047:36:1;;;;-1:-1:-1;9047:36:1;;;-1:-1:-1;9047:36:1;;;;:::i;:::-;;;;;;:368;;;;9506:210;;;;;;;;9560:6;9506:210;;;;;;9597:4;-1:-1:-1;;;;;9506:210:1;;;;;9642:5;9506:210;;;;;;9689:4;-1:-1:-1;;;;;9506:210:1;;;;9472:12;:28;;;9501:1;9472:31;;;;;;;;;;:::i;:::-;;;;;;:244;;;;9739:19;9761:13;:23;;;;;;;;;;-1:-1:-1;;;;;9761:23:1;-1:-1:-1;;;;;9761:48:1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9883:40;;;9921:1;9883:40;;;;;;;;;9739:72;;-1:-1:-1;9833:47:1;;9883:40;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9883:40:1;;;;;;;;;;;;;;;;9833:90;;9957:159;;;;;;;;10014:6;9957:159;;;;;;10046:48;;;;;;;;10076:11;10072:1;:15;;;;:::i;:::-;-1:-1:-1;;;;;10046:48:1;;;10089:1;10046:48;;;;;;;;;;;9957:159;;9945:9;;:6;;-1:-1:-1;;9945:9:1;;;;:::i;:::-;;;;;;;;;;:171;10138:23;;:40;;-1:-1:-1;;;10138:40:1;;-1:-1:-1;;;;;10138:23:1;;;;:32;;:40;;10171:6;;10138:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7560:2637;;;;;;;7519:2678;7555:3;;7519:2678;;;-1:-1:-1;10215:17:1;;10246:33;;10215:65;;-1:-1:-1;;;10215:65:1;;-1:-1:-1;;;;;10215:17:1;;;;:30;;:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10298:12:1;;10324:28;;;;10298:55;;-1:-1:-1;;;10298:55:1;;-1:-1:-1;;;;;10298:12:1;;;;-1:-1:-1;10298:25:1;;-1:-1:-1;10298:55:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5305:5063;;5257:5657;;;10394:28;10378:12;:44;;;;;;;;:::i;:::-;;10374:540;;10442:31;10530:4;10565:13;:26;;10592:1;10565:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;10476:137;;-1:-1:-1;;;;;10565:29:1;;;;10476:137;;;:::i;:::-;-1:-1:-1;;;;;40460:15:122;;;40442:34;;40512:15;;40507:2;40492:18;;40485:43;40392:2;40377:18;10476:137:1;;;;;;;;;;;;;;;;;;;;;;;10442:171;;10631:13;:26;;10658:1;10631:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;:66;;-1:-1:-1;;;10631:66:1;;-1:-1:-1;;;;;29385:32:122;;;10631:66:1;;;29367:51:122;10631:29:1;;;;:45;;29340:18:122;;10631:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10751:10;10715:13;:22;;10738:1;10715:25;;;;;;;;;;:::i;:::-;;;;;;;;;:47;;;;;-1:-1:-1;;;;;10715:47:1;;;;;-1:-1:-1;;;;;10715:47:1;;;;;;10819:10;10780:13;:25;;10806:1;10780:28;;;;;;;;;;:::i;:::-;;;;;;;;;:50;;;;;-1:-1:-1;;;;;10780:50:1;;;;;-1:-1:-1;;;;;10780:50:1;;;;;;10424:421;10374:540;;;10869:30;;-1:-1:-1;;;10869:30:1;;40741:2:122;10869:30:1;;;40723:21:122;40780:2;40760:18;;;40753:30;-1:-1:-1;;;40799:18:122;;;40792:50;40859:18;;10869:30:1;;;;;;;;10374:540;5238:3;;5202:5722;;;;10960:7;10955:397;10977:12;10973:16;;:1;:16;;;10955:397;;;11010:19;11032:13;:26;;11059:1;11032:29;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;11032:29:1;;-1:-1:-1;11075:267:1;11097:12;11093:16;;:1;:16;;;11075:267;;;11143:1;11138:6;;:1;:6;;;11134:20;11146:8;11134:20;-1:-1:-1;;;;;11172:30:1;;;11203:5;:1;11207;11203:5;:::i;:::-;11210:22;:25;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;11172:64;;;;;;-1:-1:-1;;;;;;11172:64:1;;;41089:4:122;41077:17;;;11172:64:1;;;41059:36:122;-1:-1:-1;;;;;11210:25:1;41111:18:122;;;41104:60;41032:18;;11172:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11254:8;-1:-1:-1;;;;;11254:33:1;;11288:1;11292;11288:5;;;;:::i;:::-;11295:25;:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11254:73;;;;;;-1:-1:-1;;;;;;11254:73:1;;;41412:4:122;41400:17;;;11254:73:1;;;41382:36:122;-1:-1:-1;;;;;11295:28:1;41434:18:122;;;41427:60;41503:18;;;41496:34;41355:18;;11254:73:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11075:267;11111:3;;11075:267;;;-1:-1:-1;;10991:3:1;;10955:397;;;;4283:7075;;:::o;2452:134:85:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:85;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;11696:490:1:-;11827:22;11883:8;11869:23;;-1:-1:-1;;;;;11869:23:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11869:23:1;-1:-1:-1;11861:31:1;-1:-1:-1;11919:9:1;11902:234;11936:20;11948:8;11936:9;:20;:::i;:::-;11930:26;;:3;:26;;;11902:234;;;12044:14;;;11979:12;12044:14;;;:9;:14;;;;;;;;12025:56;;-1:-1:-1;;;;;12044:14:1;;;12025:56;;;41775:34:122;;;;12069:4:1;41825:18:122;;;41818:43;12044:14:1;41877:18:122;;;41870:50;11994:88:1;;12006:17;;41710:18:122;;12025:56:1;;;;;;;;;;;;11994:11;:88::i;:::-;11979:103;-1:-1:-1;11979:103:1;12096:5;12102:15;12108:9;12102:3;:15;:::i;:::-;12096:22;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12096:29:1;;;:22;;;;;;;;;;;:29;-1:-1:-1;11958:5:1;;11902:234;;;;12163:16;12173:5;12163:9;:16::i;:::-;11696:490;;;;;:::o;3360:151:85:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;18539:469:1:-;18783:18;;;18750:19;18783:18;;;:9;:18;;;;;;-1:-1:-1;;;;;18783:18:1;;18750:19;;18857:39;18887:8;18857:29;:39::i;:::-;18812:84;;;;;;18906:8;-1:-1:-1;;;;;18906:18:1;;18933:5;18945:3;18906:95;18951:5;18958:3;18963:5;18970;18977:12;;18991:9;;;;;;;;;;;;18906:95;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18740:268;;;;18539:469;;;;;;;:::o;3221:133:85:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:85;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:85;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;3602:204:0:-;3694:12;3708:11;3721:13;3753:46;3791:7;;3753:37;:46::i;:::-;3746:53;;;;;;3602:204;;;;;:::o;15673:1687:1:-;15800:18;;;15830:1;15800:18;;;:9;:18;;;;;;-1:-1:-1;;;;;15800:18:1;15792:72;;;;-1:-1:-1;;;15792:72:1;;43439:2:122;15792:72:1;;;43421:21:122;43478:2;43458:18;;;43451:30;43517:29;43497:18;;;43490:57;43564:18;;15792:72:1;43237:351:122;15792:72:1;15921:21;;;15875:43;15921:21;;;:12;:21;;;;;;;;:34;;;;;;;;;15994:14;15921:34;15994:12;:14::i;:::-;15965:43;;16018:23;16055:13;16072:1;16055:18;16051:201;;16107:14;:5;:12;:14::i;:::-;16089:32;;16051:201;;;16191:13;16170:18;:34;:71;;16223:18;16170:71;;;16207:13;16170:71;16152:89;;16051:201;16268:19;;16261:1093;;16303:17;;;;:::i;:::-;;;;16368:12;16383:15;:5;:13;:15::i;:::-;16412:24;16439:13;;;:7;:13;;;;;16412:40;;16368:30;;-1:-1:-1;16412:24:1;;:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16466:34:1;;-1:-1:-1;;;16466:34:1;;16412:40;;-1:-1:-1;16466:4:1;;:15;;-1:-1:-1;16466:34:1;;-1:-1:-1;16412:40:1;;-1:-1:-1;16495:4:1;;16466:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16514:32:1;;-1:-1:-1;;;16514:32:1;;:4;;-1:-1:-1;16514:19:1;;-1:-1:-1;16514:32:1;;16534:11;;16514:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16561:20:1;16584:19;;;:13;:19;;;;;16561:42;;:20;;-1:-1:-1;16584:19:1;16561:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16621:71;16643:7;351:1:76;16621:21:1;:71::i;:::-;16617:369;;;16713:14;16729:16;16749:39;16780:7;16749:30;:39::i;:::-;16888:28;;16712:76;;-1:-1:-1;16712:76:1;-1:-1:-1;16712:76:1;;16806:10;;-1:-1:-1;;;;;16888:7:1;;;16712:76;;16806:10;16888:28;16806:10;16888:28;16712:76;16888:7;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16872:44;;;16942:4;16934:37;;;;-1:-1:-1;;;16934:37:1;;44146:2:122;16934:37:1;;;44128:21:122;44185:2;44165:18;;;44158:30;-1:-1:-1;;;44204:18:122;;;44197:50;44264:18;;16934:37:1;43944:344:122;16934:37:1;16694:292;;;;16617:369;17003:69;17025:7;294:1:76;17003:21:1;:69::i;:::-;16999:144;;;17092:36;;-1:-1:-1;;;17092:36:1;;:4;;:14;;:36;;17107:11;;17120:7;;17092:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16999:144;-1:-1:-1;;;;;17160:23:1;;;;;;:96;;;17187:69;17209:7;406:1:76;17187:21:1;:69::i;:::-;17156:188;;;17276:53;;-1:-1:-1;;;17276:53:1;;:4;;:14;;:53;;17291:11;;17304:7;;17313:4;;17319:9;;17276:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17156:188;16289:1065;;;16261:1093;;21943:228;22095:21;;;22028:9;22095:21;;;:12;:21;;;;;;;;:34;;;;;;;;22028:9;22146:14;22095:34;22146:12;:14::i;:::-;:18;22139:25;;;21943:228;;;;;:::o;2738:178:85:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2975:249:0;3090:16;3108:21;;3131:14;3164:53;3199:8;;3209:7;3164:34;:53::i;:::-;3157:60;;;;;;;;2975:249;;;;;;;:::o;12456:528:1:-;12531:12;;12516;12553:425;12577:4;12573:1;:8;12553:425;;;12602:22;12640:5;12646:1;12640:8;;;;;;;;:::i;:::-;;;;;;;12602:47;;12668:9;12663:305;12687:4;12683:1;:8;12663:305;;;12716:20;;;12728:8;12716:20;12754:23;12793:5;12799:1;12793:8;;;;;;;;:::i;:::-;;;;;;;12754:48;;12820:16;12840:10;-1:-1:-1;;;;;12840:19:1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12839:27:1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12820:48;;12886:9;-1:-1:-1;;;;;12886:17:1;;12904:9;12915:37;12940:10;-1:-1:-1;;;;;22619:23:1;;22521:129;12915:37;12886:67;;-1:-1:-1;;;;;;12886:67:1;;;;;;;;45961:23:122;;;;12886:67:1;;;45943:42:122;46001:18;;;45994:34;45916:18;;12886:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12698:270;;12663:305;12693:3;;12663:305;;;-1:-1:-1;;12583:3:1;;12553:425;;22177:338;22348:21;;;22302:43;22348:21;;;:12;:21;;;;;;;;:34;;;;;;;;22266:24;;22396:14;22348:34;22396:12;:14::i;:::-;:18;22392:117;;;22430:12;22445;:5;:10;:12::i;:::-;22485:13;;;;:7;:13;;;;;22471:27;;22430;;-1:-1:-1;22485:13:1;22471:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22416:93;22392:117;22292:223;22177:338;;;;:::o;2592:140:85:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21628:187:1;21714:18;21735;:11;;:16;:18::i;:::-;21714:39;;21785:4;21771:10;:18;21763:45;;;;-1:-1:-1;;;21763:45:1;;46241:2:122;21763:45:1;;;46223:21:122;46280:2;46260:18;;;46253:30;-1:-1:-1;;;46299:18:122;;;46292:44;46353:18;;21763:45:1;46039:338:122;21763:45:1;21704:111;21628:187;;;:::o;17961:376::-;18131:4;:14;18159:21;:12;;:19;:21::i;:::-;18194:26;:12;;:24;:26::i;:::-;18234:8;18256:5;18275:9;18298:22;:12;;:20;:22::i;:::-;18131:199;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17961:376;;;;;:::o;21821:116::-;21921:8;21885:9;:25;21895:8;-1:-1:-1;;;;;21895:12:1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21885:25;;;;;;;;;;;;;-1:-1:-1;21885:25:1;:45;;-1:-1:-1;;;;;;21885:45:1;-1:-1:-1;;;;;21885:45:1;;;;;;;;;;-1:-1:-1;21821:116:1:o;2157:141:85:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14991:136:1;15068:52;15082:7;15091:11;15104:1;15115:3;15068:13;:52::i;3412:184:0:-;3491:14;3507:16;3542:47;3581:7;;3542:38;:47::i;:::-;3535:54;;;;3412:184;;;;;;:::o;1819:584:79:-;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:79;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;47325:51:122;;;-1:-1:-1;;;47392:18:122;;;47385:34;2196:43:79;;;;;;;;;47298:18:122;;;2196:43:79;;;-1:-1:-1;;1671:64:79;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:79;;;;;;;;;;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:79:o;2304:142:85:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:85;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;17366:589:1:-;17464:19;17497:9;:32;17507:21;:12;;:19;:21::i;:::-;17497:32;;;;;;;;;;;;;-1:-1:-1;17497:32:1;;;;-1:-1:-1;;;;;17497:32:1;;-1:-1:-1;;17571:53:1;17615:8;17571:43;:53::i;:::-;17540:84;;;;17635:20;17658:74;;;;;;;;17665:21;:12;;:19;:21::i;:::-;17658:74;;;;;;17688:21;:12;;:19;:21::i;:::-;17658:74;;;;17711:20;:12;;:18;:20::i;:::-;-1:-1:-1;;;;;17658:74:1;;;17635:97;-1:-1:-1;;;;;;17742:18:1;;;17781:3;17769:5;17635:97;17820:26;:12;;:24;:26::i;:::-;17860:19;:12;;:17;:19::i;:::-;17893:22;:12;;:20;:22::i;:::-;17929:9;;;;;;;;;;;;17742:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17454:501;;;;17366:589;;;:::o;3230:176:0:-;3308:11;3321:13;3353:46;3391:7;;3353:37;:46::i;14166:464:1:-;14261:13;14277:21;:12;;:19;:21::i;:::-;14261:37;;14308:18;14329:23;:12;;:21;:23::i;:::-;14408:20;;;14362:43;14408:20;;;:12;:20;;;;;;;;:32;;;;;;;;14308:44;;-1:-1:-1;14495:19:1;:12;;:17;:19::i;:::-;14480:34;-1:-1:-1;14524:21:1;:5;14480:34;14524:15;:21::i;:::-;14555:13;;;;:7;:13;;;;;:28;14571:12;;14555:13;:28;:::i;:::-;-1:-1:-1;14593:19:1;;;;:13;:19;;;;;:30;14615:8;;14593:19;:30;:::i;774:87:0:-;834:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;821:10:0;:33;;-1:-1:-1;;;;;;821:33:0;-1:-1:-1;;;;;821:33:0;;;;;;;;;;774:87::o;2671:150:77:-;2734:6;2773:39;706:2;655;2773:7;;:39;:::i;:::-;2766:47;;;:::i;:::-;2759:55;;;2671:150;-1:-1:-1;;;2671:150:77:o;2976:130::-;3044:7;3070:29;:17;3079:7;;3070:8;:17::i;:::-;1210:15:69;1084:151;2230:148:77;2293:6;2332:37;605:2;557:1;2332:7;;:37;:::i;1788:125::-;1851:14;;1884:22;785:2;1851:14;1884:7;;:22;:::i;3397:132::-;3461:14;;3500:21;:7;785:2;3500:7;;:21;:::i;13421:399:1:-;13519:12;13543:21;13597:13;13580:31;;;;;;;;:::i;:::-;;;;-1:-1:-1;;13580:31:1;;;;;;;;;;13567:63;;13613:16;;13580:31;13567:63;;:::i;:::-;;;;;;;;;;;;;13543:87;;13708:8;13702:15;13695:4;13685:8;13681:19;13678:1;13671:47;13663:55;;13753:4;13741:17;13731:73;;13788:1;13785;13778:12;1724:427:0;1823:12;1837:11;1850:13;1876:10;1888:19;1911:113;1955:8;406:1:76;1911:30:0;:113::i;:::-;1875:149;;;;2042:5;2034:59;;;;-1:-1:-1;;;2034:59:0;;52497:2:122;2034:59:0;;;52479:21:122;52536:2;52516:18;;;52509:30;52575:34;52555:18;;;52548:62;-1:-1:-1;;;52626:18:122;;;52619:39;52675:19;;2034:59:0;52295:405:122;2034:59:0;2110:34;;-1:-1:-1;;;2110:34:0;;:4;;:26;;:34;;2137:6;;2110:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2103:41;;-1:-1:-1;;;;;2103:41:0;;;;-1:-1:-1;2103:41:0;;;-1:-1:-1;1724:427:0;-1:-1:-1;;;;1724:427:0:o;2591:371:76:-;2683:12;;;2757:2;2739:20;;;;;:44;;-1:-1:-1;2781:2:76;2763:20;;;2739:44;2735:90;;;2792:33;;-1:-1:-1;;;2792:33:76;;;;;;;;;;;2735:90;2843:16;:7;;2857:1;2843:13;:16::i;:::-;2835:24;-1:-1:-1;2875:17:76;:7;;2890:1;2875:14;:17::i;:::-;2869:23;-1:-1:-1;2928:2:76;2910:20;;:45;;2954:1;2910:45;;;2933:18;:7;;2948:2;2933:14;:18::i;:::-;2902:53;;2591:371;;;;;:::o;5491:168:116:-;5629:12;-1:-1:-1;;;;;5629:12:116;;;-1:-1:-1;;;5616:10:116;;;;;:25;;;;5608:34;;5491:168::o;2441:371::-;2573:10;;2504:13;;-1:-1:-1;;;;;;;;2573:10:116;;;;;2614:12;2601:25;;2597:50;;2635:12;;-1:-1:-1;;;2635:12:116;;;;;;;;;;;2597:50;-1:-1:-1;;2661:11:116;-1:-1:-1;;;;;2694:22:116;;;;;;;2661:11;2694;;:22;;;;;;;2730:29;;;2773:22;;;;;-1:-1:-1;;;2773:22:116;;;;;;;-1:-1:-1;2694:22:116;2441:371::o;2157:228:0:-;2283:10;2317:61;2348:8;2358:19;2317:30;:61::i;:::-;-1:-1:-1;2305:73:0;2157:228;-1:-1:-1;;;2157:228:0:o;1280:438::-;1380:14;1396:16;1425:10;1437:19;1460:115;1504:8;351:1:76;1460:30:0;:115::i;:::-;1424:151;;;;1593:5;1585:60;;;;-1:-1:-1;;;1585:60:0;;53429:2:122;1585:60:0;;;53411:21:122;53468:2;53448:18;;;53441:30;53507:34;53487:18;;;53480:62;-1:-1:-1;;;53558:18:122;;;53551:40;53608:19;;1585:60:0;53227:406:122;1585:60:0;1676:35;;-1:-1:-1;;;1676:35:0;;:4;;:27;;:35;;1704:6;;1676:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1655:56:0;;;;;;-1:-1:-1;1280:438:0;-1:-1:-1;;;;1280:438:0:o;1251:742:76:-;1366:16;1384:21;1366:16;1506:1;1496:11;;1366:16;1568:22;:8;;1496:11;1568:14;:22::i;:::-;1614:1;1604:11;;;;;1554:36;-1:-1:-1;1675:21:76;:8;;1604:11;1675:13;:21::i;:::-;1662:34;-1:-1:-1;1826:1:76;1817:10;;1881:13;;;;;1917:31;1881:13;1817:10;1917:8;;:31;:::i;:::-;1251:742;;1908:40;;-1:-1:-1;1908:40:76;;-1:-1:-1;;;1962:14:76;;;;-1:-1:-1;;;1251:742:76:o;4238:212:116:-;4303:13;4332:12;4338:5;5832:12;-1:-1:-1;;;5818:10:116;;-1:-1:-1;;;;;5818:10:116;;;5832:12;;5818:26;;5729:122;4332:12;4328:37;;;4353:12;;-1:-1:-1;;;4353:12:116;;;;;;;;;;;4328:37;-1:-1:-1;4418:10:116;;-1:-1:-1;;;;;;;;;;4418:10:116;;;;;:14;4406:27;;;;;:11;;;;:27;;;;;;;4238:212::o;3112:138:77:-;3173:7;3207:35;862:3;785:2;3207:7;;:35;:::i;:::-;3199:44;;;:::i;3256:135::-;3320:14;;3359:24;:7;862:3;3359:7;;:24;:::i;2314:271:76:-;2393:14;;2459:2;2441:20;;2437:67;;2470:34;;-1:-1:-1;;;2470:34:76;;;;;;;;;;;2437:67;2523:17;:7;;2538:1;2523:14;:17::i;:::-;2514:26;-1:-1:-1;2561:17:76;:7;;2575:2;2561:13;:17::i;:::-;2550:28;;2314:271;;;;;:::o;867:407:0:-;952:11;965:13;991:10;1003:19;1026:113;1070:8;294:1:76;1026:30:0;:113::i;:::-;990:149;;;;1157:5;1149:59;;;;-1:-1:-1;;;1149:59:0;;54417:2:122;1149:59:0;;;54399:21:122;54456:2;54436:18;;;54429:30;54495:34;54475:18;;;54468:62;-1:-1:-1;;;54546:18:122;;;54539:39;54595:19;;1149:59:0;54215:405:122;1149:59:0;1233:34;;-1:-1:-1;;;1233:34:0;;:4;;:26;;:34;;1260:6;;1233:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1218:49:0;;;;;;;-1:-1:-1;867:407:0;-1:-1:-1;;;;867:407:0:o;2384:142:77:-;2447:7;2481:37;655:2;605;2481:7;;:37;:::i;2078:146::-;2140:6;2179:36;557:1;493;2179:7;;:36;:::i;:::-;2172:44;;;:::i;:::-;2165:52;;;2078:146;-1:-1:-1;;;2078:146:77:o;1999:309:76:-;2077:11;;2137:2;2119:20;;;;;:44;;-1:-1:-1;2161:2:76;2143:20;;;2119:44;2115:90;;;2172:33;;-1:-1:-1;;;2172:33:76;;;;;;;;;;;2115:90;2221:17;:7;;2236:1;2221:14;:17::i;:::-;2215:23;-1:-1:-1;2274:2:76;2256:20;;:45;;2300:1;2256:45;;;2279:18;:7;;2294:2;2279:14;:18::i;2827:143:77:-;2892:7;2926:36;785:2;706;2926:7;;:36;:::i;2954:305:116:-;3080:12;;-1:-1:-1;;;;;3080:12:116;;;-1:-1:-1;;3080:16:116;;-1:-1:-1;;;3128:10:116;;;;3114:24;;;;3110:48;;3147:11;;-1:-1:-1;;;3147:11:116;;;;;;;;;;;3110:48;-1:-1:-1;;;;;3172:23:116;;;;;:11;;;:23;;;;;:31;;;;3217:25;;-1:-1:-1;;;;;;3217:25:116;;;;2954:305::o;2391:578:0:-;2601:10;;:27;;-1:-1:-1;;;2601:27:0;;2526:10;;2538:19;;2526:10;;-1:-1:-1;;;;;2601:10:0;;:17;;:27;;2619:8;;2601:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2601:27:0;;;;;;;;;;;;:::i;:::-;2569:59;;;2639:14;2663:300;2679:12;:19;2670:6;:28;2663:300;;;2772:45;;-1:-1:-1;;;2772:45:0;;2715:16;;;;;;2772:4;;:23;;:45;;2796:12;;2810:6;;2772:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2772:45:0;;;;;;;;;;;;:::i;:::-;2714:103;;;;;;2849:19;2835:33;;:10;:33;;;2831:89;;-1:-1:-1;2896:4:0;;-1:-1:-1;2902:2:0;-1:-1:-1;2888:17:0;;-1:-1:-1;;;2888:17:0;2831:89;2942:10;-1:-1:-1;2663:300:0;;-1:-1:-1;;2663:300:0;;2559:410;;2391:578;;;;;:::o;229:215:70:-;306:6;371:1;362:10;;407:18;362:10;:6;407;;:18;:::i;:::-;400:26;;;:::i;:::-;393:34;;;229:215;-1:-1:-1;;;;;229:215:70:o;892:220::-;970:7;1036:2;1027:11;;1075:18;1027:11;:6;1075;;:18;:::i;:::-;1067:27;;;:::i;:::-;1059:36;;;892:220;-1:-1:-1;;;;;892:220:70:o;95:128::-;171:5;201:6;;208;201:14;;;;;;;:::i;:::-;;;;;;;;;95:128;-1:-1:-1;;;;;95:128:70:o;1570:210::-;1647:7;1713:2;1704:11;;1744:18;1704:11;:6;1744;;:18;:::i;:::-;1736:27;;;:::i;:::-;1729:34;1570:210;-1:-1:-1;;;;;1570:210:70:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:121:122;99:10;92:5;88:22;81:5;78:33;68:61;;125:1;122;115:12;68:61;14:121;:::o;140:131::-;-1:-1:-1;;;;;215:31:122;;205:42;;195:70;;261:1;258;251:12;276:386;343:6;351;404:2;392:9;383:7;379:23;375:32;372:52;;;420:1;417;410:12;372:52;459:9;446:23;478:30;502:5;478:30;:::i;:::-;527:5;-1:-1:-1;584:2:122;569:18;;556:32;597:33;556:32;597:33;:::i;:::-;649:7;639:17;;;276:386;;;;;:::o;667:347::-;718:8;728:6;782:3;775:4;767:6;763:17;759:27;749:55;;800:1;797;790:12;749:55;-1:-1:-1;823:20:122;;-1:-1:-1;;;;;855:30:122;;852:50;;;898:1;895;888:12;852:50;935:4;927:6;923:17;911:29;;987:3;980:4;971:6;963;959:19;955:30;952:39;949:59;;;1004:1;1001;994:12;1019:409;1089:6;1097;1150:2;1138:9;1129:7;1125:23;1121:32;1118:52;;;1166:1;1163;1156:12;1118:52;1206:9;1193:23;-1:-1:-1;;;;;1231:6:122;1228:30;1225:50;;;1271:1;1268;1261:12;1225:50;1310:58;1360:7;1351:6;1340:9;1336:22;1310:58;:::i;:::-;1387:8;;1284:84;;-1:-1:-1;1019:409:122;-1:-1:-1;;;;1019:409:122:o;1433:114::-;1517:4;1510:5;1506:16;1499:5;1496:27;1486:55;;1537:1;1534;1527:12;1552:408;1633:6;1641;1694:2;1682:9;1673:7;1669:23;1665:32;1662:52;;;1710:1;1707;1700:12;1662:52;1749:9;1736:23;1768:29;1791:5;1768:29;:::i;:::-;1816:5;-1:-1:-1;1873:2:122;1858:18;;1845:32;1908:1;1896:14;;1886:42;;1924:1;1921;1914:12;1965:465;2018:3;2056:5;2050:12;2083:6;2078:3;2071:19;2109:4;2138;2133:3;2129:14;2122:21;;2177:4;2170:5;2166:16;2200:1;2210:195;2224:6;2221:1;2218:13;2210:195;;;2289:13;;-1:-1:-1;;;;;2285:39:122;2273:52;;2345:12;;;;2380:15;;;;2321:1;2239:9;2210:195;;;-1:-1:-1;2421:3:122;;1965:465;-1:-1:-1;;;;;1965:465:122:o;2435:261::-;2614:2;2603:9;2596:21;2577:4;2634:56;2686:2;2675:9;2671:18;2663:6;2634:56;:::i;2924:127::-;2985:10;2980:3;2976:20;2973:1;2966:31;3016:4;3013:1;3006:15;3040:4;3037:1;3030:15;3056:253;3128:2;3122:9;3170:4;3158:17;;-1:-1:-1;;;;;3190:34:122;;3226:22;;;3187:62;3184:88;;;3252:18;;:::i;:::-;3288:2;3281:22;3056:253;:::o;3314:275::-;3385:2;3379:9;3450:2;3431:13;;-1:-1:-1;;3427:27:122;3415:40;;-1:-1:-1;;;;;3470:34:122;;3506:22;;;3467:62;3464:88;;;3532:18;;:::i;:::-;3568:2;3561:22;3314:275;;-1:-1:-1;3314:275:122:o;3594:186::-;3642:4;-1:-1:-1;;;;;3667:6:122;3664:30;3661:56;;;3697:18;;:::i;:::-;-1:-1:-1;3763:2:122;3742:15;-1:-1:-1;;3738:29:122;3769:4;3734:40;;3594:186::o;3785:462::-;3827:5;3880:3;3873:4;3865:6;3861:17;3857:27;3847:55;;3898:1;3895;3888:12;3847:55;3934:6;3921:20;3965:48;3981:31;4009:2;3981:31;:::i;:::-;3965:48;:::i;:::-;4038:2;4029:7;4022:19;4084:3;4077:4;4072:2;4064:6;4060:15;4056:26;4053:35;4050:55;;;4101:1;4098;4091:12;4050:55;4166:2;4159:4;4151:6;4147:17;4140:4;4131:7;4127:18;4114:55;4214:1;4189:16;;;4207:4;4185:27;4178:38;;;;4193:7;3785:462;-1:-1:-1;;;3785:462:122:o;4252:588::-;4334:6;4342;4350;4403:2;4391:9;4382:7;4378:23;4374:32;4371:52;;;4419:1;4416;4409:12;4371:52;4459:9;4446:23;-1:-1:-1;;;;;4484:6:122;4481:30;4478:50;;;4524:1;4521;4514:12;4478:50;4547:49;4588:7;4579:6;4568:9;4564:22;4547:49;:::i;:::-;4537:59;;;4646:2;4635:9;4631:18;4618:32;4659:29;4682:5;4659:29;:::i;:::-;4707:5;-1:-1:-1;4764:2:122;4749:18;;4736:32;4777:31;4736:32;4777:31;:::i;:::-;4827:7;4817:17;;;4252:588;;;;;:::o;4845:250::-;4930:1;4940:113;4954:6;4951:1;4948:13;4940:113;;;5030:11;;;5024:18;5011:11;;;5004:39;4976:2;4969:10;4940:113;;;-1:-1:-1;;5087:1:122;5069:16;;5062:27;4845:250::o;5100:271::-;5142:3;5180:5;5174:12;5207:6;5202:3;5195:19;5223:76;5292:6;5285:4;5280:3;5276:14;5269:4;5262:5;5258:16;5223:76;:::i;:::-;5353:2;5332:15;-1:-1:-1;;5328:29:122;5319:39;;;;5360:4;5315:50;;5100:271;-1:-1:-1;;5100:271:122:o;5376:598::-;5428:3;5459;5491:5;5485:12;5518:6;5513:3;5506:19;5544:4;5573;5568:3;5564:14;5557:21;;5631:4;5621:6;5618:1;5614:14;5607:5;5603:26;5599:37;5670:4;5663:5;5659:16;5693:1;5703:245;5717:6;5714:1;5711:13;5703:245;;;5804:2;5800:7;5792:5;5786:4;5782:16;5778:30;5773:3;5766:43;5830:38;5863:4;5854:6;5848:13;5830:38;:::i;:::-;5926:12;;;;5822:46;-1:-1:-1;5891:15:122;;;;5739:1;5732:9;5703:245;;;-1:-1:-1;5964:4:122;;5376:598;-1:-1:-1;;;;;;;5376:598:122:o;5979:1077::-;6185:4;6214:2;6254;6243:9;6239:18;6284:2;6273:9;6266:21;6307:6;6342;6336:13;6373:6;6365;6358:22;6399:2;6389:12;;6432:2;6421:9;6417:18;6410:25;;6494:2;6484:6;6481:1;6477:14;6466:9;6462:30;6458:39;6532:2;6524:6;6520:15;6553:1;6563:464;6577:6;6574:1;6571:13;6563:464;;;6642:22;;;-1:-1:-1;;6638:36:122;6626:49;;6698:13;;6743:9;;-1:-1:-1;;;;;6739:35:122;6724:51;;6814:11;;6808:18;6846:15;;;6839:27;;;6889:58;6931:15;;;6808:18;6889:58;:::i;:::-;7005:12;;;;6879:68;-1:-1:-1;;6970:15:122;;;;6599:1;6592:9;6563:464;;;-1:-1:-1;7044:6:122;;5979:1077;-1:-1:-1;;;;;;;;5979:1077:122:o;7061:1114::-;7184:6;7192;7200;7208;7216;7224;7232;7285:3;7273:9;7264:7;7260:23;7256:33;7253:53;;;7302:1;7299;7292:12;7253:53;7341:9;7328:23;7360:30;7384:5;7360:30;:::i;:::-;7409:5;-1:-1:-1;7466:2:122;7451:18;;7438:32;7479:33;7438:32;7479:33;:::i;:::-;7531:7;-1:-1:-1;7589:2:122;7574:18;;7561:32;-1:-1:-1;;;;;7642:14:122;;;7639:34;;;7669:1;7666;7659:12;7639:34;7692:49;7733:7;7724:6;7713:9;7709:22;7692:49;:::i;:::-;7682:59;;7788:2;7777:9;7773:18;7760:32;7750:42;;7844:3;7833:9;7829:19;7816:33;7801:48;;7858:33;7883:7;7858:33;:::i;:::-;7910:7;;-1:-1:-1;7970:3:122;7955:19;;7942:33;;7987:16;;;7984:36;;;8016:1;8013;8006:12;7984:36;;8055:60;8107:7;8096:8;8085:9;8081:24;8055:60;:::i;:::-;7061:1114;;;;-1:-1:-1;7061:1114:122;;-1:-1:-1;7061:1114:122;;;;8029:86;;-1:-1:-1;;;7061:1114:122:o;8586:523::-;8671:6;8679;8687;8695;8748:3;8736:9;8727:7;8723:23;8719:33;8716:53;;;8765:1;8762;8755:12;8716:53;8804:9;8791:23;8823:30;8847:5;8823:30;:::i;:::-;8872:5;-1:-1:-1;8924:2:122;8909:18;;8896:32;;-1:-1:-1;8975:2:122;8960:18;;8947:32;;-1:-1:-1;9031:2:122;9016:18;;9003:32;9044:33;9003:32;9044:33;:::i;:::-;8586:523;;;;-1:-1:-1;8586:523:122;;-1:-1:-1;;8586:523:122:o;9114:117::-;9199:6;9192:5;9188:18;9181:5;9178:29;9168:57;;9221:1;9218;9211:12;9236:313;9303:6;9311;9364:2;9352:9;9343:7;9339:23;9335:32;9332:52;;;9380:1;9377;9370:12;9332:52;9419:9;9406:23;9438:30;9462:5;9438:30;:::i;:::-;9487:5;9539:2;9524:18;;;;9511:32;;-1:-1:-1;;;9236:313:122:o;9746:1569::-;9950:4;9979:2;10019;10008:9;10004:18;10049:2;10038:9;10031:21;10072:6;10107;10101:13;10138:6;10130;10123:22;10164:2;10154:12;;10197:2;10186:9;10182:18;10175:25;;10259:2;10249:6;10246:1;10242:14;10231:9;10227:30;10223:39;10297:2;10289:6;10285:15;10318:1;10339;10349:937;10365:6;10360:3;10357:15;10349:937;;;10434:22;;;-1:-1:-1;;10430:36:122;10418:49;;10490:13;;10577:9;;-1:-1:-1;;;;;10573:35:122;10558:51;;10648:11;;10642:18;10680:15;;;10673:27;;;10761:19;;10530:15;;;10793:24;;;10883:21;;;;10928:1;;10851:2;10839:15;;;10942:236;10958:8;10953:3;10950:17;10942:236;;;11039:15;;-1:-1:-1;;;;;;11035:42:122;11021:57;;11147:17;;;;10986:1;10977:11;;;;;11104:14;;;;10942:236;;;-1:-1:-1;11264:12:122;;;;11201:5;-1:-1:-1;;;11229:15:122;;;;10391:1;10382:11;10349:937;;;-1:-1:-1;11303:6:122;;9746:1569;-1:-1:-1;;;;;;;;;9746:1569:122:o;11320:477::-;11399:6;11407;11415;11468:2;11456:9;11447:7;11443:23;11439:32;11436:52;;;11484:1;11481;11474:12;11436:52;11524:9;11511:23;-1:-1:-1;;;;;11549:6:122;11546:30;11543:50;;;11589:1;11586;11579:12;11543:50;11628:58;11678:7;11669:6;11658:9;11654:22;11628:58;:::i;:::-;11705:8;;11602:84;;-1:-1:-1;11787:2:122;11772:18;;;;11759:32;;11320:477;-1:-1:-1;;;;11320:477:122:o;11802:266::-;11890:6;11885:3;11878:19;11942:6;11935:5;11928:4;11923:3;11919:14;11906:43;-1:-1:-1;11994:1:122;11969:16;;;11987:4;11965:27;;;11958:38;;;;12050:2;12029:15;;;-1:-1:-1;;12025:29:122;12016:39;;;12012:50;;11802:266::o;12073:393::-;12294:4;12286:6;12282:17;12271:9;12264:36;12336:2;12331;12320:9;12316:18;12309:30;12245:4;12356:61;12413:2;12402:9;12398:18;12390:6;12382;12356:61;:::i;:::-;12348:69;;12453:6;12448:2;12437:9;12433:18;12426:34;12073:393;;;;;;;:::o;12471:183::-;12531:4;-1:-1:-1;;;;;12556:6:122;12553:30;12550:56;;;12586:18;;:::i;:::-;-1:-1:-1;12631:1:122;12627:14;12643:4;12623:25;;12471:183::o;12659:966::-;12743:6;12774:2;12817;12805:9;12796:7;12792:23;12788:32;12785:52;;;12833:1;12830;12823:12;12785:52;12873:9;12860:23;-1:-1:-1;;;;;12898:6:122;12895:30;12892:50;;;12938:1;12935;12928:12;12892:50;12961:22;;13014:4;13006:13;;13002:27;-1:-1:-1;12992:55:122;;13043:1;13040;13033:12;12992:55;13079:2;13066:16;13102:60;13118:43;13158:2;13118:43;:::i;13102:60::-;13196:15;;;13278:1;13274:10;;;;13266:19;;13262:28;;;13227:12;;;;13302:19;;;13299:39;;;13334:1;13331;13324:12;13299:39;13358:11;;;;13378:217;13394:6;13389:3;13386:15;13378:217;;;13474:3;13461:17;13491:31;13516:5;13491:31;:::i;:::-;13535:18;;13411:12;;;;13573;;;;13378:217;;;13614:5;12659:966;-1:-1:-1;;;;;;;12659:966:122:o;13630:218::-;13777:2;13766:9;13759:21;13740:4;13797:45;13838:2;13827:9;13823:18;13815:6;13797:45;:::i;13853:280::-;14052:2;14041:9;14034:21;14015:4;14072:55;14123:2;14112:9;14108:18;14100:6;14072:55;:::i;14620:832::-;14726:6;14734;14742;14750;14758;14811:3;14799:9;14790:7;14786:23;14782:33;14779:53;;;14828:1;14825;14818:12;14779:53;14868:9;14855:23;-1:-1:-1;;;;;14938:2:122;14930:6;14927:14;14924:34;;;14954:1;14951;14944:12;14924:34;14993:58;15043:7;15034:6;15023:9;15019:22;14993:58;:::i;:::-;15070:8;;-1:-1:-1;14967:84:122;-1:-1:-1;15158:2:122;15143:18;;15130:32;;-1:-1:-1;15174:16:122;;;15171:36;;;15203:1;15200;15193:12;15171:36;;15226:51;15269:7;15258:8;15247:9;15243:24;15226:51;:::i;:::-;15216:61;;;15324:2;15313:9;15309:18;15296:32;15286:42;;15378:2;15367:9;15363:18;15350:32;15391:31;15416:5;15391:31;:::i;:::-;15441:5;15431:15;;;14620:832;;;;;;;;:::o;15457:270::-;15539:6;15592:2;15580:9;15571:7;15567:23;15563:32;15560:52;;;15608:1;15605;15598:12;15560:52;15647:9;15634:23;15666:31;15691:5;15666:31;:::i;15914:313::-;15981:6;15989;16042:2;16030:9;16021:7;16017:23;16013:32;16010:52;;;16058:1;16055;16048:12;16010:52;16097:9;16084:23;16116:30;16140:5;16116:30;:::i;16526:146::-;-1:-1:-1;;;;;16605:5:122;16601:46;16594:5;16591:57;16581:85;;16662:1;16659;16652:12;16677:247;16736:6;16789:2;16777:9;16768:7;16764:23;16760:32;16757:52;;;16805:1;16802;16795:12;16757:52;16844:9;16831:23;16863:31;16888:5;16863:31;:::i;16929:628::-;17017:6;17025;17033;17086:2;17074:9;17065:7;17061:23;17057:32;17054:52;;;17102:1;17099;17092:12;17054:52;17142:9;17129:23;-1:-1:-1;;;;;17212:2:122;17204:6;17201:14;17198:34;;;17228:1;17225;17218:12;17198:34;17267:58;17317:7;17308:6;17297:9;17293:22;17267:58;:::i;:::-;17344:8;;-1:-1:-1;17241:84:122;-1:-1:-1;17432:2:122;17417:18;;17404:32;;-1:-1:-1;17448:16:122;;;17445:36;;;17477:1;17474;17467:12;17445:36;;17500:51;17543:7;17532:8;17521:9;17517:24;17500:51;:::i;:::-;17490:61;;;16929:628;;;;;:::o;17886:717::-;17976:6;17984;17992;18000;18053:2;18041:9;18032:7;18028:23;18024:32;18021:52;;;18069:1;18066;18059:12;18021:52;18109:9;18096:23;-1:-1:-1;;;;;18179:2:122;18171:6;18168:14;18165:34;;;18195:1;18192;18185:12;18165:34;18234:58;18284:7;18275:6;18264:9;18260:22;18234:58;:::i;:::-;18311:8;;-1:-1:-1;18208:84:122;-1:-1:-1;18399:2:122;18384:18;;18371:32;;-1:-1:-1;18415:16:122;;;18412:36;;;18444:1;18441;18434:12;18412:36;;18483:60;18535:7;18524:8;18513:9;18509:24;18483:60;:::i;:::-;17886:717;;;;-1:-1:-1;18562:8:122;-1:-1:-1;;;;17886:717:122:o;18902:164::-;18978:13;;19027;;19020:21;19010:32;;19000:60;;19056:1;19053;19046:12;19071:330;19147:6;19155;19208:2;19196:9;19187:7;19183:23;19179:32;19176:52;;;19224:1;19221;19214:12;19176:52;19256:9;19250:16;19275:31;19300:5;19275:31;:::i;:::-;19325:5;-1:-1:-1;19349:46:122;19391:2;19376:18;;19349:46;:::i;19406:175::-;19484:13;;-1:-1:-1;;;;;19526:30:122;;19516:41;;19506:69;;19571:1;19568;19561:12;19586:134;19663:13;;19685:29;19663:13;19685:29;:::i;19725:460::-;19808:6;19816;19824;19877:2;19865:9;19856:7;19852:23;19848:32;19845:52;;;19893:1;19890;19883:12;19845:52;19916:39;19945:9;19916:39;:::i;:::-;19906:49;;19998:2;19987:9;19983:18;19977:25;20011:29;20034:5;20011:29;:::i;:::-;20109:2;20094:18;;20088:25;20059:5;;-1:-1:-1;20122:31:122;20088:25;20122:31;:::i;20592:441::-;20645:5;20698:3;20691:4;20683:6;20679:17;20675:27;20665:55;;20716:1;20713;20706:12;20665:55;20745:6;20739:13;20776:48;20792:31;20820:2;20792:31;:::i;20776:48::-;20849:2;20840:7;20833:19;20895:3;20888:4;20883:2;20875:6;20871:15;20867:26;20864:35;20861:55;;;20912:1;20909;20902:12;20861:55;20925:77;20999:2;20992:4;20983:7;20979:18;20972:4;20964:6;20960:17;20925:77;:::i;:::-;21020:7;20592:441;-1:-1:-1;;;;20592:441:122:o;21038:335::-;21117:6;21170:2;21158:9;21149:7;21145:23;21141:32;21138:52;;;21186:1;21183;21176:12;21138:52;21219:9;21213:16;-1:-1:-1;;;;;21244:6:122;21241:30;21238:50;;;21284:1;21281;21274:12;21238:50;21307:60;21359:7;21350:6;21339:9;21335:22;21307:60;:::i;21378:740::-;21443:5;21496:3;21489:4;21481:6;21477:17;21473:27;21463:55;;21514:1;21511;21504:12;21463:55;21543:6;21537:13;21569:4;21593:60;21609:43;21649:2;21609:43;:::i;21593:60::-;21675:3;21699:2;21694:3;21687:15;21727:4;21722:3;21718:14;21711:21;;21784:4;21778:2;21775:1;21771:10;21763:6;21759:23;21755:34;21741:48;;21812:3;21804:6;21801:15;21798:35;;;21829:1;21826;21819:12;21798:35;21865:4;21857:6;21853:17;21879:210;21895:6;21890:3;21887:15;21879:210;;;21968:3;21962:10;21985:31;22010:5;21985:31;:::i;:::-;22029:18;;22067:12;;;;21912;;21879:210;;;-1:-1:-1;22107:5:122;21378:740;-1:-1:-1;;;;;;21378:740:122:o;22123:1116::-;22221:6;22274:2;22262:9;22253:7;22249:23;22245:32;22242:52;;;22290:1;22287;22280:12;22242:52;22323:9;22317:16;-1:-1:-1;;;;;22393:2:122;22385:6;22382:14;22379:34;;;22409:1;22406;22399:12;22379:34;22432:22;;;;22488:4;22470:16;;;22466:27;22463:47;;;22506:1;22503;22496:12;22463:47;22532:22;;:::i;:::-;22577:32;22606:2;22577:32;:::i;:::-;22570:5;22563:47;22642:40;22678:2;22674;22670:11;22642:40;:::i;:::-;22637:2;22630:5;22626:14;22619:64;22715:40;22751:2;22747;22743:11;22715:40;:::i;:::-;22710:2;22703:5;22699:14;22692:64;22788:40;22824:2;22820;22816:11;22788:40;:::i;:::-;22783:2;22776:5;22772:14;22765:64;22868:3;22864:2;22860:12;22854:19;22898:2;22888:8;22885:16;22882:36;;;22914:1;22911;22904:12;22882:36;22951:67;23010:7;22999:8;22995:2;22991:17;22951:67;:::i;:::-;22945:3;22938:5;22934:15;22927:92;;23058:3;23054:2;23050:12;23044:19;23088:2;23078:8;23075:16;23072:36;;;23104:1;23101;23094:12;23072:36;23141:67;23200:7;23189:8;23185:2;23181:17;23141:67;:::i;:::-;23135:3;23124:15;;23117:92;-1:-1:-1;23128:5:122;22123:1116;-1:-1:-1;;;;;22123:1116:122:o;23244:127::-;23305:10;23300:3;23296:20;23293:1;23286:31;23336:4;23333:1;23326:15;23360:4;23357:1;23350:15;23376:271;23559:6;23551;23546:3;23533:33;23515:3;23585:16;;23610:13;;;23585:16;23376:271;-1:-1:-1;23376:271:122:o;23652:379::-;23863:2;23852:9;23845:21;23826:4;23883:45;23924:2;23913:9;23909:18;23901:6;23883:45;:::i;:::-;23875:53;;23964:6;23959:2;23948:9;23944:18;23937:34;24019:4;24011:6;24007:17;24002:2;23991:9;23987:18;23980:45;23652:379;;;;;;:::o;24036:127::-;24097:10;24092:3;24088:20;24085:1;24078:31;24128:4;24125:1;24118:15;24152:4;24149:1;24142:15;24168:125;24233:9;;;24254:10;;;24251:36;;;24267:18;;:::i;24298:474::-;24539:10;24527:23;;24509:42;;-1:-1:-1;;;;;24587:32:122;;24582:2;24567:18;;24560:60;24656:3;24651:2;24636:18;;24629:31;;;-1:-1:-1;;24677:46:122;;24703:19;;24695:6;24677:46;:::i;:::-;24669:54;;24759:6;24754:2;24743:9;24739:18;24732:34;24298:474;;;;;;;:::o;24777:184::-;24847:6;24900:2;24888:9;24879:7;24875:23;24871:32;24868:52;;;24916:1;24913;24906:12;24868:52;-1:-1:-1;24939:16:122;;24777:184;-1:-1:-1;24777:184:122:o;25612:369::-;25698:6;25706;25714;25767:2;25755:9;25746:7;25742:23;25738:32;25735:52;;;25783:1;25780;25773:12;25735:52;25815:9;25809:16;25834:29;25857:5;25834:29;:::i;:::-;25927:2;25912:18;;25906:25;25971:2;25956:18;;;25950:25;25882:5;;25906:25;;-1:-1:-1;25950:25:122;25612:369;-1:-1:-1;;;25612:369:122:o;26329:1451::-;26531:4;26560:2;26600;26589:9;26585:18;26630:2;26619:9;26612:21;26653:6;26688;26682:13;26719:6;26711;26704:22;26745:2;26735:12;;26778:2;26767:9;26763:18;26756:25;;26840:2;26830:6;26827:1;26823:14;26812:9;26808:30;26804:39;26878:2;26870:6;26866:15;26899:1;26909:842;26923:6;26920:1;26917:13;26909:842;;;26988:22;;;-1:-1:-1;;26984:36:122;26972:49;;27044:13;;27116:9;;27127:10;27112:26;27097:42;;27186:11;;;27180:18;-1:-1:-1;;;;;27176:44:122;27159:15;;;27152:69;27260:11;;;27254:18;27080:4;27292:15;;;27285:27;;;27080:4;27339:48;27371:15;;;27254:18;27339:48;:::i;:::-;27325:62;;;27410:4;27465:2;27461;27457:11;27451:18;27446:2;27438:6;27434:15;27427:43;;27493:4;27546:2;27542;27538:11;27532:18;27510:40;;27599:6;27591;27587:19;27582:2;27574:6;27570:15;27563:44;;27630:41;27664:6;27648:14;27630:41;:::i;:::-;27729:12;;;;27620:51;-1:-1:-1;;;27694:15:122;;;;26945:1;26938:9;26909:842;;27785:289;27960:2;27949:9;27942:21;27923:4;27980:45;28021:2;28010:9;28006:18;27998:6;27980:45;:::i;:::-;27972:53;;28061:6;28056:2;28045:9;28041:18;28034:34;27785:289;;;;;:::o;28079:244::-;28236:2;28225:9;28218:21;28199:4;28256:61;28313:2;28302:9;28298:18;28290:6;28282;28256:61;:::i;28518:251::-;28588:6;28641:2;28629:9;28620:7;28616:23;28612:32;28609:52;;;28657:1;28654;28647:12;28609:52;28689:9;28683:16;28708:31;28733:5;28708:31;:::i;28774:148::-;28862:4;28841:12;;;28855;;;28837:31;;28880:13;;28877:39;;;28896:18;;:::i;29429:127::-;29490:10;29485:3;29481:20;29478:1;29471:31;29521:4;29518:1;29511:15;29545:4;29542:1;29535:15;30029:827;30361:4;30407:1;30403;30398:3;30394:11;30390:19;30448:2;30440:6;30436:15;30425:9;30418:34;30500:2;30492:6;30488:15;30483:2;30472:9;30468:18;30461:43;30540:3;30535:2;30524:9;30520:18;30513:31;30567:57;30619:3;30608:9;30604:19;30596:6;30567:57;:::i;:::-;30672:2;30664:6;30660:15;30655:2;30644:9;30640:18;30633:43;30725:2;30717:6;30713:15;30707:3;30696:9;30692:19;30685:44;30778:9;30770:6;30766:22;30760:3;30749:9;30745:19;30738:51;30806:44;30843:6;30835;30806:44;:::i;:::-;30798:52;30029:827;-1:-1:-1;;;;;;;;;;30029:827:122:o;31110:1303::-;31542:4;31534:6;31530:17;31519:9;31512:36;31493:4;31567:2;31605:3;31600:2;31589:9;31585:18;31578:31;31632:57;31684:3;31673:9;31669:19;31661:6;31632:57;:::i;:::-;-1:-1:-1;;;;;31763:15:122;;;31758:2;31743:18;;31736:43;31815:22;;;31810:2;31795:18;;31788:50;31887:13;;31909:22;;;-1:-1:-1;31971:17:122;;;31959:2;32011:16;;;;31947:15;;31887:13;32055:177;32069:6;32066:1;32063:13;32055:177;;;32134:13;;32130:22;;32118:35;;32220:1;32208:14;;;;32173:12;;;;32084:9;32055:177;;;-1:-1:-1;;;;;;;31068:30:122;;32287:3;32272:19;;31056:43;32338:9;32333:3;32329:19;32323:3;32312:9;32308:19;32301:48;32366:41;32403:3;32395:6;32366:41;:::i;:::-;32358:49;31110:1303;-1:-1:-1;;;;;;;;;;;;31110:1303:122:o;33107:2038::-;33335:4;33364:2;33404;33393:9;33389:18;33434:2;33423:9;33416:21;33457:6;33492;33486:13;33523:6;33515;33508:22;33549:2;33539:12;;33582:2;33571:9;33567:18;33560:25;;33644:2;33634:6;33631:1;33627:14;33616:9;33612:30;33608:39;33682:2;33674:6;33670:15;33703:1;33713:1403;33727:6;33724:1;33721:13;33713:1403;;;-1:-1:-1;;33822:22:122;;;33818:31;;33806:44;;33873:13;;33918:9;;33929:10;33914:26;33899:42;;33980:11;;33974:18;34012:15;;;34005:27;;;34073:19;;-1:-1:-1;;;;;34069:44:122;34052:15;;;34045:69;34155:21;;;34149:28;34225:4;34266:23;;;34200:2;34249:15;;;34242:48;;;;34331:21;;;34325:28;34416:23;;34376:3;34399:15;;;34392:48;;;;34481:21;;;34475:28;34566:23;;;34526:3;34549:15;;;34542:48;;;;34631:21;;;34625:28;34676:4;34700:15;;;34693:27;34625:28;34747:73;34815:3;34803:16;;34625:28;34747:73;:::i;:::-;34861:21;;34855:28;34925:19;;;34921:28;;34915:3;34903:16;;34896:54;34855:28;34733:87;-1:-1:-1;34973:63:122;34733:87;34855:28;34973:63;:::i;:::-;35094:12;;;;34963:73;-1:-1:-1;;;35059:15:122;;;;-1:-1:-1;33749:1:122;33742:9;33713:1403;;35150:1026;35415:2;35467:21;;;35537:13;;35440:18;;;35559:22;;;35386:4;;35415:2;35600;;35618:18;;;;35659:15;;;35386:4;35702:448;35716:6;35713:1;35710:13;35702:448;;;35775:13;;35850:9;;35811:10;35846:18;;;35834:31;;35904:11;;;35898:18;35954:19;;35950:28;;;35936:12;;;35929:50;36023:21;;36017:28;-1:-1:-1;;;;;36013:54:122;35999:12;;;35992:76;36097:4;36088:14;;;;36125:15;;;;36064:1;35731:9;35702:448;;;-1:-1:-1;36167:3:122;;35150:1026;-1:-1:-1;;;;;;;35150:1026:122:o;36181:251::-;36251:6;36304:2;36292:9;36283:7;36279:23;36275:32;36272:52;;;36320:1;36317;36310:12;36272:52;36352:9;36346:16;36371:31;36396:5;36371:31;:::i;36437:274::-;-1:-1:-1;;;;;36575:10:122;;;36587;;;36571:27;36618:20;;;;36509:34;36657:24;;;36647:58;;36685:18;;:::i;:::-;36647:58;;36437:274;;;;:::o;36716:1093::-;36945:2;36997:21;;;37067:13;;36970:18;;;37089:22;;;36916:4;;36945:2;37130;;37148:18;;;;37189:15;;;36916:4;37232:551;37246:6;37243:1;37240:13;37232:551;;;37305:13;;37380:9;;37341:10;37376:18;;;37364:31;;37434:11;;;37428:18;37484:19;;-1:-1:-1;;;;;37480:60:122;37466:12;;;37459:82;37585:21;;;37579:28;-1:-1:-1;;;;;37575:53:122;37561:12;;;37554:75;37673:21;;37667:28;37663:37;37658:2;37649:12;;37642:59;37730:4;37721:14;;;;37758:15;;;;37268:1;37261:9;37232:551;;37814:1355;38049:2;38101:21;;;38171:13;;38074:18;;;38193:22;;;38020:4;;38049:2;38234;;38252:18;;;;38293:15;;;38020:4;38336:807;38350:6;38347:1;38344:13;38336:807;;;38409:13;;38451:9;;38462:10;38447:26;38435:39;;38513:11;;;38507:18;-1:-1:-1;;;;;38600:21:122;;;38586:12;;;38579:43;38666:11;;;38660:18;38656:27;38642:12;;;38635:49;38707:4;38755:11;;;38749:18;38769:6;38745:31;38731:12;;;38724:53;38800:4;38845:11;;;38839:18;-1:-1:-1;;;;;38948:23:122;;;38934:12;;;38927:45;;;;38995:4;39043:11;;;39037:18;39033:27;39019:12;;;39012:49;39090:4;39081:14;;;;39118:15;;;;38372:1;38365:9;38336:807;;39174:1035;39411:2;39463:21;;;39533:13;;39436:18;;;39555:22;;;39382:4;;39411:2;39596;;39614:18;;;;39655:15;;;39382:4;39698:485;39712:6;39709:1;39706:13;39698:485;;;39771:13;;39813:9;;39824:10;39809:26;39797:39;;39880:11;;;39874:18;-1:-1:-1;;;;;39870:43:122;39856:12;;;39849:65;39958:11;;;39952:18;39972:6;39948:31;39934:12;;;39927:53;40003:4;40051:11;;;40045:18;-1:-1:-1;;;;;40041:59:122;40027:12;;;40020:81;40130:4;40121:14;;;;40158:15;;;;39734:1;39727:9;39698:485;;41931:151;42021:4;42014:12;;;42000;;;41996:31;;42039:14;;42036:40;;;42056:18;;:::i;42087:380::-;42166:1;42162:12;;;;42209;;;42230:61;;42284:4;42276:6;42272:17;42262:27;;42230:61;42337:2;42329:6;42326:14;42306:18;42303:38;42300:161;;42383:10;42378:3;42374:20;42371:1;42364:31;42418:4;42415:1;42408:15;42446:4;42443:1;42436:15;42300:161;;42087:380;;;:::o;42472:760::-;-1:-1:-1;;;;;42823:15:122;;;42805:34;;42875:15;;42870:2;42855:18;;42848:43;42922:2;42907:18;;42900:34;;;42982:6;42970:19;;42965:2;42950:18;;42943:47;43027:3;43021;43006:19;;42999:32;;;42748:4;;43054:62;;43096:19;;43088:6;43080;43054:62;:::i;:::-;43165:9;43157:6;43153:22;43147:3;43136:9;43132:19;43125:51;43193:33;43219:6;43211;43193:33;:::i;43593:136::-;43632:3;43660:5;43650:39;;43669:18;;:::i;:::-;-1:-1:-1;;;43705:18:122;;43593:136::o;44293:379::-;44486:2;44475:9;44468:21;44449:4;44512:45;44553:2;44542:9;44538:18;44530:6;44512:45;:::i;:::-;44605:9;44597:6;44593:22;44588:2;44577:9;44573:18;44566:50;44633:33;44659:6;44651;44633:33;:::i;44677:549::-;44926:3;44915:9;44908:22;44889:4;44953:46;44994:3;44983:9;44979:19;44971:6;44953:46;:::i;:::-;45047:9;45039:6;45035:22;45030:2;45019:9;45015:18;45008:50;45075:33;45101:6;45093;45075:33;:::i;:::-;45139:2;45124:18;;45117:34;;;;-1:-1:-1;;;;;;;45187:32:122;;;;45182:2;45167:18;;;45160:60;45067:41;44677:549;-1:-1:-1;;44677:549:122:o;45517:249::-;45586:6;45639:2;45627:9;45618:7;45614:23;45610:32;45607:52;;;45655:1;45652;45645:12;45607:52;45687:9;45681:16;45706:30;45730:5;45706:30;:::i;46382:764::-;46707:10;46699:6;46695:23;46684:9;46677:42;46658:4;46755:1;46751;46746:3;46742:11;46738:19;46805:2;46797:6;46793:15;46788:2;46777:9;46773:18;46766:43;46845:3;46840:2;46829:9;46825:18;46818:31;46872:46;46913:3;46902:9;46898:19;46890:6;46872:46;:::i;:::-;46954:6;46949:2;46938:9;46934:18;46927:34;47010:2;47002:6;46998:15;46992:3;46981:9;46977:19;46970:44;47063:9;47055:6;47051:22;47045:3;47034:9;47030:19;47023:51;47091:49;47133:6;47125;47117;47091:49;:::i;:::-;47083:57;46382:764;-1:-1:-1;;;;;;;;;;;46382:764:122:o;47430:384::-;-1:-1:-1;;;;;;47615:33:122;;47603:46;;47672:13;;47585:3;;47694:74;47672:13;47757:1;47748:11;;47741:4;47729:17;;47694:74;:::i;:::-;47788:16;;;;47806:1;47784:24;;47430:384;-1:-1:-1;;;47430:384:122:o;47819:287::-;47948:3;47986:6;47980:13;48002:66;48061:6;48056:3;48049:4;48041:6;48037:17;48002:66;:::i;:::-;48084:16;;;;;47819:287;-1:-1:-1;;47819:287:122:o;48111:202::-;48178:6;48231:2;48219:9;48210:7;48206:23;48202:32;48199:52;;;48247:1;48244;48237:12;48199:52;48270:37;48297:9;48270:37;:::i;48318:874::-;48674:10;48665:6;48659:13;48655:30;48644:9;48637:49;48742:4;48734:6;48730:17;48724:24;48717:4;48706:9;48702:20;48695:54;-1:-1:-1;;;;;48809:4:122;48801:6;48797:17;48791:24;48787:49;48780:4;48769:9;48765:20;48758:79;48902:1;48898;48893:3;48889:11;48885:19;48877:6;48873:32;48868:2;48857:9;48853:18;48846:60;48943:6;48937:3;48926:9;48922:19;48915:35;48987:3;48981;48970:9;48966:19;48959:32;48618:4;49014:62;49071:3;49060:9;49056:19;49048:6;49040;49014:62;:::i;:::-;49125:9;49117:6;49113:22;49107:3;49096:9;49092:19;49085:51;49153:33;49179:6;49171;49153:33;:::i;:::-;49145:41;48318:874;-1:-1:-1;;;;;;;;;48318:874:122:o;49197:542::-;49298:2;49293:3;49290:11;49287:446;;;49334:1;49358:5;49355:1;49348:16;49402:4;49399:1;49389:18;49472:2;49460:10;49456:19;49453:1;49449:27;49443:4;49439:38;49508:4;49496:10;49493:20;49490:47;;;-1:-1:-1;49531:4:122;49490:47;49586:2;49581:3;49577:12;49574:1;49570:20;49564:4;49560:31;49550:41;;49641:82;49659:2;49652:5;49649:13;49641:82;;;49704:17;;;49685:1;49674:13;49641:82;;;49645:3;;;49197:542;;;:::o;49915:1214::-;-1:-1:-1;;;;;50032:3:122;50029:27;50026:53;;;50059:18;;:::i;:::-;50088:93;50177:3;50137:38;50169:4;50163:11;50137:38;:::i;:::-;50131:4;50088:93;:::i;:::-;50207:1;50232:2;50227:3;50224:11;50249:1;50244:627;;;;50915:1;50932:3;50929:93;;;-1:-1:-1;50988:19:122;;;50975:33;50929:93;-1:-1:-1;;49872:1:122;49868:11;;;49864:24;49860:29;49850:40;49896:1;49892:11;;;49847:57;51035:78;;50217:906;;50244:627;30945:1;30938:14;;;30982:4;30969:18;;-1:-1:-1;;50280:17:122;;;50392:9;50414:229;50428:7;50425:1;50422:14;50414:229;;;50517:19;;;50504:33;50489:49;;50624:4;50609:20;;;;50577:1;50565:14;;;;50444:12;50414:229;;;50418:3;50671;50662:7;50659:16;50656:159;;;50795:1;50791:6;50785:3;50779;50776:1;50772:11;50768:21;50764:34;50760:39;50747:9;50742:3;50738:19;50725:33;50721:79;50713:6;50706:95;50656:159;;;50858:1;50852:3;50849:1;50845:11;50841:19;50835:4;50828:33;50217:906;;;49915:1214;;;:::o;51134:331::-;51239:9;51250;51292:8;51280:10;51277:24;51274:44;;;51314:1;51311;51304:12;51274:44;51343:6;51333:8;51330:20;51327:40;;;51363:1;51360;51353:12;51327:40;-1:-1:-1;;51389:23:122;;;51434:25;;;;;-1:-1:-1;51134:331:122:o;51470:323::-;-1:-1:-1;;;;;;51590:19:122;;51666:11;;;;51697:1;51689:10;;51686:101;;;51758:1;51754:11;;;;51751:1;51747:19;51743:28;;;51735:37;51731:46;;;;51470:323;-1:-1:-1;;51470:323:122:o;51798:492::-;51973:3;52011:6;52005:13;52027:66;52086:6;52081:3;52074:4;52066:6;52062:17;52027:66;:::i;:::-;52156:13;;52115:16;;;;52178:70;52156:13;52115:16;52225:4;52213:17;;52178:70;:::i;:::-;52264:20;;51798:492;-1:-1:-1;;;;51798:492:122:o;52705:517::-;52792:6;52800;52808;52861:2;52849:9;52840:7;52836:23;52832:32;52829:52;;;52877:1;52874;52867:12;52829:52;52909:9;52903:16;52928:30;52952:5;52928:30;:::i;:::-;53027:2;53012:18;;53006:25;52977:5;;-1:-1:-1;53040:33:122;53006:25;53040:33;:::i;:::-;53144:2;53129:18;;53123:25;53092:7;;-1:-1:-1;53157:33:122;53123:25;53157:33;:::i;53638:312::-;53717:6;53725;53778:2;53766:9;53757:7;53753:23;53749:32;53746:52;;;53794:1;53791;53784:12;53746:52;53826:9;53820:16;53845:31;53870:5;53845:31;:::i;:::-;53940:2;53925:18;;;;53919:25;53895:5;;53919:25;;-1:-1:-1;;;53638:312:122:o;53955:255::-;54075:19;;54114:2;54106:11;;54103:101;;;-1:-1:-1;;54175:2:122;54171:12;;;54168:1;54164:20;54160:33;54149:45;53955:255;;;;:::o;54625:385::-;54704:6;54712;54765:2;54753:9;54744:7;54740:23;54736:32;54733:52;;;54781:1;54778;54771:12;54733:52;54813:9;54807:16;54832:31;54857:5;54832:31;:::i;:::-;54932:2;54917:18;;54911:25;54882:5;;-1:-1:-1;54945:33:122;54911:25;54945:33;:::i;55015:331::-;-1:-1:-1;;;;;;55135:19:122;;55219:11;;;;55250:1;55242:10;;55239:101;;;55311:1;55307:11;;;;55304:1;55300:19;55296:28;;;55288:37;55284:46;;;;55015:331;-1:-1:-1;;55015:331:122:o;55351:558::-;55448:6;55456;55509:2;55497:9;55488:7;55484:23;55480:32;55477:52;;;55525:1;55522;55515:12;55477:52;55558:9;55552:16;-1:-1:-1;;;;;55628:2:122;55620:6;55617:14;55614:34;;;55644:1;55641;55634:12;55614:34;55667:60;55719:7;55710:6;55699:9;55695:22;55667:60;:::i;:::-;55657:70;;55773:2;55762:9;55758:18;55752:25;55736:41;;55802:2;55792:8;55789:16;55786:36;;;55818:1;55815;55808:12;55786:36;;55841:62;55895:7;55884:8;55873:9;55869:24;55841:62;:::i;:::-;55831:72;;;55351:558;;;;;:::o;56208:520::-;56303:6;56311;56319;56372:2;56360:9;56351:7;56347:23;56343:32;56340:52;;;56388:1;56385;56378:12;56340:52;56420:9;56414:16;56439:29;56462:5;56439:29;:::i;:::-;56536:2;56521:18;;56515:25;56487:5;;-1:-1:-1;;;;;;56552:30:122;;56549:50;;;56595:1;56592;56585:12;56549:50;56618:60;56670:7;56661:6;56650:9;56646:22;56618:60;:::i;:::-;56608:70;;;56718:2;56707:9;56703:18;56697:25;56687:35;;56208:520;;;;;:::o;56733:318::-;-1:-1:-1;;;;;;56853:19:122;;56924:11;;;;56955:1;56947:10;;56944:101;;;57016:1;57012:11;;;;57009:1;57005:19;57001:28;;;56993:37;56989:46;;;;56733:318;-1:-1:-1;;56733:318:122:o;57056:345::-;-1:-1:-1;;;;;;57177:19:122;;57272:11;;;;57303:2;57295:11;;57292:103;;;57365:2;57361:12;;;;57358:1;57354:20;57350:29;;;57342:38;57338:47;;;;57056:345;-1:-1:-1;;57056:345:122:o", + "sourceMap": "2205:20482:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15315:163;;;;;;;;;;-1:-1:-1;15315:163:1;;;;;:::i;:::-;;:::i;:::-;;3633:67;;;;;;;;;;;;;:::i;19014:2608::-;;;;;;;;;;-1:-1:-1;19014:2608:1;;;;;:::i;:::-;;:::i;4283:7075::-;;;;;;;;;;-1:-1:-1;4283:7075:1;;;;;:::i;:::-;;:::i;2452:134:85:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3419:43:1;;;;;;;;;;-1:-1:-1;3419:43:1;;;;-1:-1:-1;;;;;3419:43:1;;;;;;-1:-1:-1;;;;;2865:47:122;;;2847:66;;2835:2;2820:18;3419:43:1;2701:218:122;11696:490:1;;;;;;;;;;-1:-1:-1;11696:490:1;;;;;:::i;:::-;;:::i;3360:151:85:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18539:469:1:-;;;;;;:::i;:::-;;:::i;3221:133:85:-;;;;;;;;;;;;;:::i;2922:141::-;;;;;;;;;;;;;:::i;3602:204:0:-;;;;;;;;;;-1:-1:-1;3602:204:0;;;;;:::i;:::-;;:::i;:::-;;;;8410:6:122;8398:19;;;8380:38;;-1:-1:-1;;;;;8507:15:122;;;8502:2;8487:18;;8480:43;8559:15;;8539:18;;;8532:43;8368:2;8353:18;3602:204:0;8180:401:122;15673:1687:1;;;;;;;;;;-1:-1:-1;15673:1687:1;;;;;:::i;:::-;;:::i;21943:228::-;;;;;;;;;;-1:-1:-1;21943:228:1;;;;;:::i;:::-;;:::i;:::-;;;9719:14:122;;9712:22;9694:41;;9682:2;9667:18;21943:228:1;9554:187:122;2738:178:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2975:249:0:-;;;;;;;;;;-1:-1:-1;2975:249:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;12456:528:1:-;;;;;;;;;;-1:-1:-1;12456:528:1;;;;;:::i;:::-;;:::i;22177:338::-;;;;;;;;;;-1:-1:-1;22177:338:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2592:140:85:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;;;;;;;;;;;:::i;21628:187:1:-;;;;;;;;;;-1:-1:-1;21628:187:1;;;;;:::i;:::-;;:::i;17961:376::-;;;;;;:::i;:::-;;:::i;21821:116::-;;;;;;;;;;-1:-1:-1;21821:116:1;;;;;:::i;:::-;;:::i;3355:57::-;;;;;;;;;;;;3406:6;3355:57;;;;;15878:25:122;;;15866:2;15851:18;3355:57:1;15732:177:122;2157:141:85;;;;;;;;;;;;;:::i;14991:136:1:-;;;;;;;;;;-1:-1:-1;14991:136:1;;;;;:::i;:::-;;:::i;3412:184:0:-;;;;;;;;;;-1:-1:-1;3412:184:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;16424:47:122;;;16406:66;;16503:2;16488:18;;16481:34;;;;16379:18;3412:184:0;16232:289:122;1819:584:79;;;;;;;;;;;;;:::i;3293:56:1:-;;;;;;;;;;;;3336:13;3293:56;;3953:100;;;;;;;;;;-1:-1:-1;3953:100:1;;;;;:::i;:::-;4018:16;:28;;-1:-1:-1;;;;;;4018:28:1;-1:-1:-1;;;;;4018:28:1;;;;;;;;;;3953:100;2304:142:85;;;;;;;;;;;;;:::i;17366:589:1:-;;;;;;:::i;:::-;;:::i;3230:176:0:-;;;;;;;;;;-1:-1:-1;3230:176:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;17807:15:122;;;17789:34;;17859:15;;;;17854:2;17839:18;;17832:43;17709:18;3230:176:0;17562:319:122;1572:26:79;;;;;;;;;;-1:-1:-1;1572:26:79;;;;;;;;14166:464:1;;;;;;;;;;-1:-1:-1;14166:464:1;;;;;:::i;:::-;;:::i;15315:163::-;15392:79;15406:7;-1:-1:-1;;;;;15423:29:1;;15415:38;;15392:13;:79::i;:::-;15315:163;;:::o;3633:67::-;3675:18;:16;:18::i;:::-;3633:67::o;19014:2608::-;19086:13;19102:21;:12;;:19;:21::i;:::-;19166:17;;;19133:19;19166:17;;;:9;:17;;;;;;19086:37;;-1:-1:-1;;;;;;19166:17:1;;;;;19219:26;19246;:12;;:24;:26::i;:::-;19274:21;:12;;:19;:21::i;:::-;19219:77;;-1:-1:-1;;;;;;19219:77:1;;;;;;;-1:-1:-1;;;;;18798:32:122;;;19219:77:1;;;18780:51:122;19219:77:1;18867:23:122;18847:18;;;18840:51;18753:18;;19219:77:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19194:102;;;19306:20;19343:10;19306:48;;19366:12;19398:10;-1:-1:-1;;;;;19386:31:1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19365:54;;;;19433:5;-1:-1:-1;;;;;19433:10:1;19442:1;19433:10;19429:2187;;19497:19;19519:6;-1:-1:-1;;;;;19519:16:1;;19536:21;:12;;:19;:21::i;:::-;19559:26;:12;;:24;:26::i;:::-;19519:70;;-1:-1:-1;;;;;;19519:70:1;;;;;;;;20444:15:122;;;;19519:70:1;;;20426:34:122;-1:-1:-1;;;;;20496:32:122;20476:18;;;20469:60;19587:1:1;20545:18:122;;;20538:43;20370:18;;19519:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19519:70:1;;;;;;;;;;;;:::i;:::-;19497:92;;19622:7;19647:6;19636:31;;;;;;;;;;;;:::i;:::-;:44;;;19681:1;19636:47;;;;;;;;:::i;:::-;;;;;;;19622:62;;19699:25;19727:21;:12;;:19;:21::i;:::-;19699:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19699:49:1;;-1:-1:-1;19794:22:1;;-1:-1:-1;19794:12:1;;-1:-1:-1;19794:12:1;;-1:-1:-1;19794:20:1;:22::i;:::-;19784:33;;;;;;;:::i;:::-;;;;;;;;19762:55;;19852:23;19889:27;19959:29;;;20006:12;20036:11;20065:3;19919:163;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;19919:163:1;;;;;;;;;;;;;;-1:-1:-1;;;;;19919:163:1;-1:-1:-1;;;;;;19919:163:1;;;;;;;;;;;-1:-1:-1;;;;;;;20129:16:1;;;20146:6;20162;19919:163;20187:22;:15;20205:4;20187:22;:::i;:::-;20129:81;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20269:58;;25208:66:122;20269:58:1;;;25196:79:122;25291:12;;;25284:28;;;20114:96:1;;-1:-1:-1;20228:28:1;;25328:12:122;;20269:58:1;;;;;;-1:-1:-1;;20269:58:1;;;;;;;20259:69;;20269:58;20259:69;;;;-1:-1:-1;;;20380:32:1;;20388:1;20380:32;;;25533:25:122;25574:18;;;25567:34;;;20259:69:1;-1:-1:-1;20347:7:1;;;;;;20380;;;;25506:18:122;;20380:32:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20465:25;;;;;;26167:19:122;;;;26202:12;;;26195:28;;;;26279:3;26257:16;;;;-1:-1:-1;;;;;;26253:36:122;26239:12;;;26232:58;20465:25:1;;;;;;;;;26306:12:122;;;;20465:25:1;;;;-1:-1:-1;;;;20568:1:1;;-1:-1:-1;20549:21:1;;-1:-1:-1;;;20549:21:1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20549:21:1;;;;;;;;;;;;;;;;20518:52;;20596:89;;;;;;;;20609:6;20596:89;;;;;;20625:6;-1:-1:-1;;;;;20596:89:1;;;;;20634:14;20596:89;;;;20650:15;20668:4;20650:22;;;;:::i;:::-;20596:89;;;;20674:10;20596:89;;;20584:6;20591:1;20584:9;;;;;;;;:::i;:::-;;;;;;;;;;:101;20699:19;;-1:-1:-1;;;20699:19:1;;-1:-1:-1;;;;;20699:11:1;;;;;:19;;20711:6;;20699:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20768:21;20832:41;;;20891:12;20921:11;20792:154;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;20792:154:1;;;;;;;;;;;;;;-1:-1:-1;;;;;20792:154:1;-1:-1:-1;;;;;;20792:154:1;;;;;;;;;;;-1:-1:-1;;;;;;;20993:16:1;;;21010:6;21026;20792:154;21045:22;:15;21063:4;21045:22;:::i;:::-;20993:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21127:58;;25208:66:122;21127:58:1;;;25196:79:122;25291:12;;;25284:28;;;20978:90:1;;-1:-1:-1;21086:28:1;;25328:12:122;;21127:58:1;;;;;;-1:-1:-1;;21127:58:1;;;;;;;21117:69;;21127:58;21117:69;;;;-1:-1:-1;;;21238:32:1;;21246:1;21238:32;;;25533:25:122;25574:18;;;25567:34;;;21117:69:1;-1:-1:-1;21205:7:1;;;;;;21238;;;;25506:18:122;;21238:32:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21323:25;;;;;;26167:19:122;;;26202:12;;;26195:28;;;-1:-1:-1;;;;;;26279:3:122;26257:16;;;26253:36;26239:12;;;26232:58;21204:66:1;;-1:-1:-1;21204:66:1;;-1:-1:-1;21204:66:1;-1:-1:-1;26306:12:122;;21323:25:1;;;;;;;;;;;;21310:38;;20960:403;;;;;21388:83;;;;;;;;21401:6;21388:83;;;;;;21417:6;-1:-1:-1;;;;;21388:83:1;;;;;21426:8;21388:83;;;;21436:15;21454:4;21436:22;;;;:::i;:::-;21388:83;;;;21460:10;21388:83;;;21376:6;21383:1;21376:9;;;;;;;;:::i;:::-;;;;;;;;;;:95;21485:19;;-1:-1:-1;;;21485:19:1;;-1:-1:-1;;;;;21485:11:1;;;;;:19;;21497:6;;21485:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19445:2070;;;;;;;;19429:2187;;;21535:70;;-1:-1:-1;;;21535:70:1;;-1:-1:-1;;;;;21535:56:1;;;;;:70;;21592:12;;;;21535:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19429:2187;19076:2546;;;;;19014:2608;;:::o;4283:7075::-;4416:12;4399:30;;-1:-1:-1;;;;;4399:30:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4399:30:1;-1:-1:-1;4370:59:1;;;;:13;;:59;;;;;;:::i;:::-;;4476:12;4463:26;;-1:-1:-1;;;;;4463:26:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4463:26:1;-1:-1:-1;4439:50:1;;;;:21;;:50;;;;;;:::i;:::-;;4538:12;4524:27;;-1:-1:-1;;;;;4524:27:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4524:27:1;-1:-1:-1;4499:52:1;;;;:22;;:52;;;;;;:::i;:::-;;4603:12;4589:27;;-1:-1:-1;;;;;4589:27:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4589:27:1;-1:-1:-1;4561:55:1;;;;:25;;:55;;;;;;:::i;:::-;-1:-1:-1;4650:16:1;;;4664:1;4650:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4626:40:1;;;;:21;;-1:-1:-1;4626:40:1;;;;:::i;:::-;-1:-1:-1;4703:10:1;;-1:-1:-1;;;;;;4703:10:1;;4711:1;4703:10;;;15878:25:122;4703:7:1;;;;15851:18:122;;4703:10:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4676:21;:24;;4698:1;;4676:24;;;;:::i;:::-;;;;;;;;;:37;;-1:-1:-1;;;;;;4676:37:1;-1:-1:-1;;;;;4676:37:1;;;;;;;;;;;4770:289;4792:12;4788:16;;:1;:16;;;4770:289;;;4829:10;4842:5;:1;4846;4842:5;:::i;:::-;4829:18;;;;4892:3;4865:13;:21;;4887:1;4865:24;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;4960:3;4973:4;4945:34;;;;;:::i;:::-;29129:10:122;29117:23;;;29099:42;;-1:-1:-1;;;;;29177:32:122;29172:2;29157:18;;29150:60;29087:2;29072:18;4945:34:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4913:13:1;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;:66;;;;;-1:-1:-1;;;;;4913:66:1;;;;;-1:-1:-1;;;;;4913:66:1;;;;;;4997:47;5014:13;:26;;5041:1;5014:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;5014:29:1;4997:16;:47::i;:::-;-1:-1:-1;4806:3:1;;4770:289;;;;5185:4;5163:28;;;;;:::i;:::-;-1:-1:-1;;;;;29385:32:122;;;29367:51;;29355:2;29340:18;5163:28:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5137:23:1;:54;;-1:-1:-1;;;;;;5137:54:1;-1:-1:-1;;;;;5137:54:1;;;;;;;;;;-1:-1:-1;5202:5722:1;5224:12;5220:16;;:1;:16;;;5202:5722;;;5277:26;5261:12;:42;;;;;;;;:::i;:::-;;5257:5657;;5323:20;5354:13;:26;;5381:1;5354:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5354:29:1;5323:61;;5466:4;5493:12;3336:13;3406:6;5422:185;;;;;:::i;:::-;-1:-1:-1;;;;;29864:15:122;;;29846:34;;29916:15;;;;29911:2;29896:18;;29889:43;29963:2;29948:18;;29941:34;30006:2;29991:18;;29984:34;29795:3;29780:19;5422:185:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5403:8:1;:204;;-1:-1:-1;;;;;;5403:204:1;-1:-1:-1;;;;;5403:204:1;;;;;;;;;;5647:31;;5665:12;;5647:31;;;:::i;:::-;-1:-1:-1;;;;;29385:32:122;;;29367:51;;29355:2;29340:18;5647:31:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5625:19:1;:53;;-1:-1:-1;;;;;;5625:53:1;-1:-1:-1;;;;;5625:53:1;;;;;;;;;;5696:13;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;5750:8;:16;5696:72;;-1:-1:-1;;;5696:72:1;;-1:-1:-1;;;;;5750:16:1;;;5696:72;;;29367:51:122;5696:29:1;;;:45;;29340:18:122;;5696:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5786:13;:26;;5813:1;5786:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;5840:19;;5786:75;;-1:-1:-1;;;5786:75:1;;-1:-1:-1;;;;;5840:19:1;;;5786:75;;;29367:51:122;5786:29:1;;;:45;;29340:18:122;;5786:75:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5915:8:1;:16;5879:22;:25;;-1:-1:-1;;;;;5915:16:1;;;;-1:-1:-1;5879:22:1;-1:-1:-1;5879:25:1;;;;;;;;;;:::i;:::-;;;;;;;;;;:53;;-1:-1:-1;;;;;;5879:53:1;-1:-1:-1;;;;;5879:53:1;;;;;;5989:19;;5950:25;:28;;5989:19;;;;;5950:25;:28;;;;;;;;;;:::i;:::-;;;;;;;;;:59;;-1:-1:-1;;;;;5950:59:1;;;;-1:-1:-1;;;;;;5950:59:1;;;;;;;;;;6076:16;;;-1:-1:-1;6076:16:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6076:16:1;6050:42;;6134:4;6114:6;6121:1;6114:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6114:25:1;;;;:9;;;;;;;;;;:25;6193:16;;;6207:1;6193:16;;;;;;;;6162:28;;6193:16;;6207:1;;6193:16;;;;;;;-1:-1:-1;;6256:8:1;:16;6231:14;;;;-1:-1:-1;;;;;;6256:16:1;;6231:14;;-1:-1:-1;6256:16:1;;6231:14;;;;:::i;:::-;-1:-1:-1;;;;;6231:42:1;;;:14;;;;;;;;;:42;6320:19;;6295:14;;6320:19;;;6295:11;;6320:19;;6295:14;;;;;;:::i;:::-;-1:-1:-1;;;;;6295:45:1;;;:14;;;;;;;;;:45;6542:23;;6383:276;;6421:12;;6467:3;;6497:11;;6542:23;;;6600:4;;6631:6;;6383:276;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6363:17:1;:296;;-1:-1:-1;;;;;;6363:296:1;-1:-1:-1;;;;;6363:296:1;;;;;;;;;;6705:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6682:20:1;:43;;-1:-1:-1;;;;;;6682:43:1;-1:-1:-1;;;;;6682:43:1;;;;;;;;;6747:17;;:64;;-1:-1:-1;;;6747:64:1;;6682:20;6747:64;;29367:51:122;;;;6747:17:1;;;;:33;;29340:18:122;;6747:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6882:1;6886;6882:5;;;;:::i;:::-;6958:23;;6849:261;;6913:11;;-1:-1:-1;;;;;6958:23:1;;7008:21;;6958:23;;7082:6;;6849:261;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6834:12:1;:276;;-1:-1:-1;;;;;;6834:276:1;-1:-1:-1;;;;;6834:276:1;;;;;;;;;;7150:19;;7164:4;;7150:19;;;:::i;:::-;15878:25:122;;;15866:2;15851:18;7150:19:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7132:15:1;:37;;-1:-1:-1;;;;;;7132:37:1;-1:-1:-1;;;;;7132:37:1;;;;;;;;;7191:12;;:54;;-1:-1:-1;;;7191:54:1;;;;;29367:51:122;;;;7191:12:1;;;;:28;;29340:18:122;;7191:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6028:1236;;7282:32;-1:-1:-1;;;;;;;;;;;;;;;;;;;7282:32:1;7399:12;7368:44;;-1:-1:-1;;;;;7368:44:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7368:44:1;;-1:-1:-1;;7368:44:1;;;;;;;;;;;-1:-1:-1;7332:80:1;;7461:39;;;-1:-1:-1;;;;;7461:39:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7461:39:1;;-1:-1:-1;;7461:39:1;;;;;;;;;;;-1:-1:-1;7430:28:1;;;:70;7524:7;7519:2678;7541:12;7537:16;;:1;:16;;;7519:2678;;;7591:1;7586:6;;:1;:6;;;7582:20;7594:8;7582:20;7624:13;7640:5;:1;7644;7640:5;:::i;:::-;7699:16;;;7713:1;7699:16;;;;;;;;;7624:21;;;;;;-1:-1:-1;7668:28:1;;7699:16;;;;;;;;;;-1:-1:-1;;7769:16:1;;;7737:29;7769:16;;;;;;;;;7832:12;;7807:14;;7668:47;;-1:-1:-1;7769:16:1;;-1:-1:-1;;;;;7832:12:1;;;;-1:-1:-1;7668:47:1;;7737:29;7807:14;;;;:::i;:::-;-1:-1:-1;;;;;7807:38:1;;;;:14;;;;;;;;;;;:38;7914:33;;;7945:1;7914:33;;;;;;;;;7868:43;;7914:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7868:79;;7969:26;7998:265;;;;;;;;8033:3;-1:-1:-1;;;;;7998:265:1;;;;;8068:11;:18;7998:265;;;;;;8119:12;:19;7998:265;;;;;;8165:1;7998:265;;;;;;8192:11;7998:265;;;;8229:12;7998:265;;;7969:294;;8327:43;;;;;;;;8352:6;8327:43;;;;;;8360:9;8327:43;;;8312:9;8322:1;8312:12;;;;;;;;:::i;:::-;;;;;;;;;;:58;8396:8;:16;:48;;-1:-1:-1;;;8396:48:1;;-1:-1:-1;;;;;8396:16:1;;;;:37;;:48;;8434:9;;8396:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8470:19:1;;:51;;-1:-1:-1;;;8470:51:1;;-1:-1:-1;;;;;8470:19:1;;;;-1:-1:-1;8470:40:1;;-1:-1:-1;8470:51:1;;8511:9;;8470:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8592:49:1;;-1:-1:-1;8680:1:1;;-1:-1:-1;8644:38:1;;-1:-1:-1;8644:38:1;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;8743:49:1;;;;;;;;8758:5;8743:49;;8773:17;;-1:-1:-1;;;;;8773:17:1;8743:49;;;;;;;;8834;;;;;;;;8743;8834;;;;;;;;;8818:13;;8592:90;;-1:-1:-1;8743:49:1;8592:90;;8708:32;;8818:13;;;;:::i;:::-;;;;;;;;;;:65;8909:8;:16;:54;;-1:-1:-1;;;8909:54:1;;-1:-1:-1;;;;;8909:16:1;;;;:42;;:54;;8952:10;;8909:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9086:329:1;;;;;;;;;;;;;9195:4;9086:329;;;;;;;;;;;;;9288:5;9086:329;;;;9335:4;9086:329;;;;9376:16;;-1:-1:-1;;;;;9376:16:1;9086:329;;;;9047:33;;:36;;9086:329;;-1:-1:-1;9047:33:1;-1:-1:-1;9047:36:1;;;;-1:-1:-1;9047:36:1;;;-1:-1:-1;9047:36:1;;;;:::i;:::-;;;;;;:368;;;;9506:210;;;;;;;;9560:6;9506:210;;;;;;9597:4;-1:-1:-1;;;;;9506:210:1;;;;;9642:5;9506:210;;;;;;9689:4;-1:-1:-1;;;;;9506:210:1;;;;9472:12;:28;;;9501:1;9472:31;;;;;;;;;;:::i;:::-;;;;;;:244;;;;9739:19;9761:13;:23;;;;;;;;;;-1:-1:-1;;;;;9761:23:1;-1:-1:-1;;;;;9761:48:1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9883:40;;;9921:1;9883:40;;;;;;;;;9739:72;;-1:-1:-1;9833:47:1;;9883:40;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9883:40:1;;;;;;;;;;;;;;;;9833:90;;9957:159;;;;;;;;10014:6;9957:159;;;;;;10046:48;;;;;;;;10076:11;10072:1;:15;;;;:::i;:::-;-1:-1:-1;;;;;10046:48:1;;;10089:1;10046:48;;;;;;;;;;;9957:159;;9945:9;;:6;;-1:-1:-1;;9945:9:1;;;;:::i;:::-;;;;;;;;;;:171;10138:23;;:40;;-1:-1:-1;;;10138:40:1;;-1:-1:-1;;;;;10138:23:1;;;;:32;;:40;;10171:6;;10138:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7560:2637;;;;;;;7519:2678;7555:3;;7519:2678;;;-1:-1:-1;10215:17:1;;10246:33;;10215:65;;-1:-1:-1;;;10215:65:1;;-1:-1:-1;;;;;10215:17:1;;;;:30;;:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10298:12:1;;10324:28;;;;10298:55;;-1:-1:-1;;;10298:55:1;;-1:-1:-1;;;;;10298:12:1;;;;-1:-1:-1;10298:25:1;;-1:-1:-1;10298:55:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5305:5063;;5257:5657;;;10394:28;10378:12;:44;;;;;;;;:::i;:::-;;10374:540;;10442:31;10530:4;10565:13;:26;;10592:1;10565:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;10476:137;;-1:-1:-1;;;;;10565:29:1;;;;10476:137;;;:::i;:::-;-1:-1:-1;;;;;40460:15:122;;;40442:34;;40512:15;;40507:2;40492:18;;40485:43;40392:2;40377:18;10476:137:1;;;;;;;;;;;;;;;;;;;;;;;10442:171;;10631:13;:26;;10658:1;10631:29;;;;;;;;;;:::i;:::-;;;;;;;;;;;:66;;-1:-1:-1;;;10631:66:1;;-1:-1:-1;;;;;29385:32:122;;;10631:66:1;;;29367:51:122;10631:29:1;;;;:45;;29340:18:122;;10631:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10751:10;10715:13;:22;;10738:1;10715:25;;;;;;;;;;:::i;:::-;;;;;;;;;:47;;;;;-1:-1:-1;;;;;10715:47:1;;;;;-1:-1:-1;;;;;10715:47:1;;;;;;10819:10;10780:13;:25;;10806:1;10780:28;;;;;;;;;;:::i;:::-;;;;;;;;;:50;;;;;-1:-1:-1;;;;;10780:50:1;;;;;-1:-1:-1;;;;;10780:50:1;;;;;;10424:421;10374:540;;;10869:30;;-1:-1:-1;;;10869:30:1;;40741:2:122;10869:30:1;;;40723:21:122;40780:2;40760:18;;;40753:30;-1:-1:-1;;;40799:18:122;;;40792:50;40859:18;;10869:30:1;;;;;;;;10374:540;5238:3;;5202:5722;;;;10960:7;10955:397;10977:12;10973:16;;:1;:16;;;10955:397;;;11010:19;11032:13;:26;;11059:1;11032:29;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;11032:29:1;;-1:-1:-1;11075:267:1;11097:12;11093:16;;:1;:16;;;11075:267;;;11143:1;11138:6;;:1;:6;;;11134:20;11146:8;11134:20;-1:-1:-1;;;;;11172:30:1;;;11203:5;:1;11207;11203:5;:::i;:::-;11210:22;:25;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;11172:64;;;;;;-1:-1:-1;;;;;;11172:64:1;;;41089:4:122;41077:17;;;11172:64:1;;;41059:36:122;-1:-1:-1;;;;;11210:25:1;41111:18:122;;;41104:60;41032:18;;11172:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11254:8;-1:-1:-1;;;;;11254:33:1;;11288:1;11292;11288:5;;;;:::i;:::-;11295:25;:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11254:73;;;;;;-1:-1:-1;;;;;;11254:73:1;;;41412:4:122;41400:17;;;11254:73:1;;;41382:36:122;-1:-1:-1;;;;;11295:28:1;41434:18:122;;;41427:60;41503:18;;;41496:34;41355:18;;11254:73:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11075:267;11111:3;;11075:267;;;-1:-1:-1;;10991:3:1;;10955:397;;;;4283:7075;;:::o;2452:134:85:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:85;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;11696:490:1:-;11827:22;11883:8;11869:23;;-1:-1:-1;;;;;11869:23:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11869:23:1;-1:-1:-1;11861:31:1;-1:-1:-1;11919:9:1;11902:234;11936:20;11948:8;11936:9;:20;:::i;:::-;11930:26;;:3;:26;;;11902:234;;;12044:14;;;11979:12;12044:14;;;:9;:14;;;;;;;;12025:56;;-1:-1:-1;;;;;12044:14:1;;;12025:56;;;41775:34:122;;;;12069:4:1;41825:18:122;;;41818:43;12044:14:1;41877:18:122;;;41870:50;11994:88:1;;12006:17;;41710:18:122;;12025:56:1;;;;;;;;;;;;11994:11;:88::i;:::-;11979:103;-1:-1:-1;11979:103:1;12096:5;12102:15;12108:9;12102:3;:15;:::i;:::-;12096:22;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12096:29:1;;;:22;;;;;;;;;;;:29;-1:-1:-1;11958:5:1;;11902:234;;;;12163:16;12173:5;12163:9;:16::i;:::-;11696:490;;;;;:::o;3360:151:85:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;18539:469:1:-;18783:18;;;18750:19;18783:18;;;:9;:18;;;;;;-1:-1:-1;;;;;18783:18:1;;18750:19;;18857:39;18887:8;18857:29;:39::i;:::-;18812:84;;;;;;18906:8;-1:-1:-1;;;;;18906:18:1;;18933:5;18945:3;18906:95;18951:5;18958:3;18963:5;18970;18977:12;;18991:9;;;;;;;;;;;;18906:95;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18740:268;;;;18539:469;;;;;;;:::o;3221:133:85:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:85;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:85;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;3602:204:0:-;3694:12;3708:11;3721:13;3753:46;3791:7;;3753:37;:46::i;:::-;3746:53;;;;;;3602:204;;;;;:::o;15673:1687:1:-;15800:18;;;15830:1;15800:18;;;:9;:18;;;;;;-1:-1:-1;;;;;15800:18:1;15792:72;;;;-1:-1:-1;;;15792:72:1;;43439:2:122;15792:72:1;;;43421:21:122;43478:2;43458:18;;;43451:30;43517:29;43497:18;;;43490:57;43564:18;;15792:72:1;43237:351:122;15792:72:1;15921:21;;;15875:43;15921:21;;;:12;:21;;;;;;;;:34;;;;;;;;;15994:14;15921:34;15994:12;:14::i;:::-;15965:43;;16018:23;16055:13;16072:1;16055:18;16051:201;;16107:14;:5;:12;:14::i;:::-;16089:32;;16051:201;;;16191:13;16170:18;:34;:71;;16223:18;16170:71;;;16207:13;16170:71;16152:89;;16051:201;16268:19;;16261:1093;;16303:17;;;;:::i;:::-;;;;16368:12;16383:15;:5;:13;:15::i;:::-;16412:24;16439:13;;;:7;:13;;;;;16412:40;;16368:30;;-1:-1:-1;16412:24:1;;:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16466:34:1;;-1:-1:-1;;;16466:34:1;;16412:40;;-1:-1:-1;16466:4:1;;:15;;-1:-1:-1;16466:34:1;;-1:-1:-1;16412:40:1;;-1:-1:-1;16495:4:1;;16466:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16514:32:1;;-1:-1:-1;;;16514:32:1;;:4;;-1:-1:-1;16514:19:1;;-1:-1:-1;16514:32:1;;16534:11;;16514:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16561:20:1;16584:19;;;:13;:19;;;;;16561:42;;:20;;-1:-1:-1;16584:19:1;16561:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16621:71;16643:7;351:1:56;16621:21:1;:71::i;:::-;16617:369;;;16713:14;16729:16;16749:39;16780:7;16749:30;:39::i;:::-;16888:28;;16712:76;;-1:-1:-1;16712:76:1;-1:-1:-1;16712:76:1;;16806:10;;-1:-1:-1;;;;;16888:7:1;;;16712:76;;16806:10;16888:28;16806:10;16888:28;16712:76;16888:7;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16872:44;;;16942:4;16934:37;;;;-1:-1:-1;;;16934:37:1;;44146:2:122;16934:37:1;;;44128:21:122;44185:2;44165:18;;;44158:30;-1:-1:-1;;;44204:18:122;;;44197:50;44264:18;;16934:37:1;43944:344:122;16934:37:1;16694:292;;;;16617:369;17003:69;17025:7;294:1:56;17003:21:1;:69::i;:::-;16999:144;;;17092:36;;-1:-1:-1;;;17092:36:1;;:4;;:14;;:36;;17107:11;;17120:7;;17092:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16999:144;-1:-1:-1;;;;;17160:23:1;;;;;;:96;;;17187:69;17209:7;406:1:56;17187:21:1;:69::i;:::-;17156:188;;;17276:53;;-1:-1:-1;;;17276:53:1;;:4;;:14;;:53;;17291:11;;17304:7;;17313:4;;17319:9;;17276:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17156:188;16289:1065;;;16261:1093;;21943:228;22095:21;;;22028:9;22095:21;;;:12;:21;;;;;;;;:34;;;;;;;;22028:9;22146:14;22095:34;22146:12;:14::i;:::-;:18;22139:25;;;21943:228;;;;;:::o;2738:178:85:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2975:249:0;3090:16;3108:21;;3131:14;3164:53;3199:8;;3209:7;3164:34;:53::i;:::-;3157:60;;;;;;;;2975:249;;;;;;;:::o;12456:528:1:-;12531:12;;12516;12553:425;12577:4;12573:1;:8;12553:425;;;12602:22;12640:5;12646:1;12640:8;;;;;;;;:::i;:::-;;;;;;;12602:47;;12668:9;12663:305;12687:4;12683:1;:8;12663:305;;;12716:20;;;12728:8;12716:20;12754:23;12793:5;12799:1;12793:8;;;;;;;;:::i;:::-;;;;;;;12754:48;;12820:16;12840:10;-1:-1:-1;;;;;12840:19:1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12839:27:1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12820:48;;12886:9;-1:-1:-1;;;;;12886:17:1;;12904:9;12915:37;12940:10;-1:-1:-1;;;;;22619:23:1;;22521:129;12915:37;12886:67;;-1:-1:-1;;;;;;12886:67:1;;;;;;;;45961:23:122;;;;12886:67:1;;;45943:42:122;46001:18;;;45994:34;45916:18;;12886:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12698:270;;12663:305;12693:3;;12663:305;;;-1:-1:-1;;12583:3:1;;12553:425;;22177:338;22348:21;;;22302:43;22348:21;;;:12;:21;;;;;;;;:34;;;;;;;;22266:24;;22396:14;22348:34;22396:12;:14::i;:::-;:18;22392:117;;;22430:12;22445;:5;:10;:12::i;:::-;22485:13;;;;:7;:13;;;;;22471:27;;22430;;-1:-1:-1;22485:13:1;22471:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22416:93;22392:117;22292:223;22177:338;;;;:::o;2592:140:85:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21628:187:1;21714:18;21735;:11;;:16;:18::i;:::-;21714:39;;21785:4;21771:10;:18;21763:45;;;;-1:-1:-1;;;21763:45:1;;46241:2:122;21763:45:1;;;46223:21:122;46280:2;46260:18;;;46253:30;-1:-1:-1;;;46299:18:122;;;46292:44;46353:18;;21763:45:1;46039:338:122;21763:45:1;21704:111;21628:187;;;:::o;17961:376::-;18131:4;:14;18159:21;:12;;:19;:21::i;:::-;18194:26;:12;;:24;:26::i;:::-;18234:8;18256:5;18275:9;18298:22;:12;;:20;:22::i;:::-;18131:199;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17961:376;;;;;:::o;21821:116::-;21921:8;21885:9;:25;21895:8;-1:-1:-1;;;;;21895:12:1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21885:25;;;;;;;;;;;;;-1:-1:-1;21885:25:1;:45;;-1:-1:-1;;;;;;21885:45:1;-1:-1:-1;;;;;21885:45:1;;;;;;;;;;-1:-1:-1;21821:116:1:o;2157:141:85:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14991:136:1;15068:52;15082:7;15091:11;15104:1;15115:3;15068:13;:52::i;3412:184:0:-;3491:14;3507:16;3542:47;3581:7;;3542:38;:47::i;:::-;3535:54;;;;3412:184;;;;;;:::o;1819:584:79:-;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:79;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;47325:51:122;;;-1:-1:-1;;;47392:18:122;;;47385:34;2196:43:79;;;;;;;;;47298:18:122;;;2196:43:79;;;-1:-1:-1;;1671:64:79;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:79;;;;;;;;;;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:79:o;2304:142:85:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:85;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;17366:589:1:-;17464:19;17497:9;:32;17507:21;:12;;:19;:21::i;:::-;17497:32;;;;;;;;;;;;;-1:-1:-1;17497:32:1;;;;-1:-1:-1;;;;;17497:32:1;;-1:-1:-1;;17571:53:1;17615:8;17571:43;:53::i;:::-;17540:84;;;;17635:20;17658:74;;;;;;;;17665:21;:12;;:19;:21::i;:::-;17658:74;;;;;;17688:21;:12;;:19;:21::i;:::-;17658:74;;;;17711:20;:12;;:18;:20::i;:::-;-1:-1:-1;;;;;17658:74:1;;;17635:97;-1:-1:-1;;;;;;17742:18:1;;;17781:3;17769:5;17635:97;17820:26;:12;;:24;:26::i;:::-;17860:19;:12;;:17;:19::i;:::-;17893:22;:12;;:20;:22::i;:::-;17929:9;;;;;;;;;;;;17742:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17454:501;;;;17366:589;;;:::o;3230:176:0:-;3308:11;3321:13;3353:46;3391:7;;3353:37;:46::i;14166:464:1:-;14261:13;14277:21;:12;;:19;:21::i;:::-;14261:37;;14308:18;14329:23;:12;;:21;:23::i;:::-;14408:20;;;14362:43;14408:20;;;:12;:20;;;;;;;;:32;;;;;;;;14308:44;;-1:-1:-1;14495:19:1;:12;;:17;:19::i;:::-;14480:34;-1:-1:-1;14524:21:1;:5;14480:34;14524:15;:21::i;:::-;14555:13;;;;:7;:13;;;;;:28;14571:12;;14555:13;:28;:::i;:::-;-1:-1:-1;14593:19:1;;;;:13;:19;;;;;:30;14615:8;;14593:19;:30;:::i;774:87:0:-;834:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;821:10:0;:33;;-1:-1:-1;;;;;;821:33:0;-1:-1:-1;;;;;821:33:0;;;;;;;;;;774:87::o;2671:150:57:-;2734:6;2773:39;706:2;655;2773:7;;:39;:::i;:::-;2766:47;;;:::i;:::-;2759:55;;;2671:150;-1:-1:-1;;;2671:150:57:o;2976:130::-;3044:7;3070:29;:17;3079:7;;3070:8;:17::i;:::-;1210:15:49;1084:151;2230:148:57;2293:6;2332:37;605:2;557:1;2332:7;;:37;:::i;1788:125::-;1851:14;;1884:22;785:2;1851:14;1884:7;;:22;:::i;3397:132::-;3461:14;;3500:21;:7;785:2;3500:7;;:21;:::i;13421:399:1:-;13519:12;13543:21;13597:13;13580:31;;;;;;;;:::i;:::-;;;;-1:-1:-1;;13580:31:1;;;;;;;;;;13567:63;;13613:16;;13580:31;13567:63;;:::i;:::-;;;;;;;;;;;;;13543:87;;13708:8;13702:15;13695:4;13685:8;13681:19;13678:1;13671:47;13663:55;;13753:4;13741:17;13731:73;;13788:1;13785;13778:12;1724:427:0;1823:12;1837:11;1850:13;1876:10;1888:19;1911:113;1955:8;406:1:56;1911:30:0;:113::i;:::-;1875:149;;;;2042:5;2034:59;;;;-1:-1:-1;;;2034:59:0;;52497:2:122;2034:59:0;;;52479:21:122;52536:2;52516:18;;;52509:30;52575:34;52555:18;;;52548:62;-1:-1:-1;;;52626:18:122;;;52619:39;52675:19;;2034:59:0;52295:405:122;2034:59:0;2110:34;;-1:-1:-1;;;2110:34:0;;:4;;:26;;:34;;2137:6;;2110:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2103:41;;-1:-1:-1;;;;;2103:41:0;;;;-1:-1:-1;2103:41:0;;;-1:-1:-1;1724:427:0;-1:-1:-1;;;;1724:427:0:o;2591:371:56:-;2683:12;;;2757:2;2739:20;;;;;:44;;-1:-1:-1;2781:2:56;2763:20;;;2739:44;2735:90;;;2792:33;;-1:-1:-1;;;2792:33:56;;;;;;;;;;;2735:90;2843:16;:7;;2857:1;2843:13;:16::i;:::-;2835:24;-1:-1:-1;2875:17:56;:7;;2890:1;2875:14;:17::i;:::-;2869:23;-1:-1:-1;2928:2:56;2910:20;;:45;;2954:1;2910:45;;;2933:18;:7;;2948:2;2933:14;:18::i;:::-;2902:53;;2591:371;;;;;:::o;5491:168:116:-;5629:12;-1:-1:-1;;;;;5629:12:116;;;-1:-1:-1;;;5616:10:116;;;;;:25;;;;5608:34;;5491:168::o;2441:371::-;2573:10;;2504:13;;-1:-1:-1;;;;;;;;2573:10:116;;;;;2614:12;2601:25;;2597:50;;2635:12;;-1:-1:-1;;;2635:12:116;;;;;;;;;;;2597:50;-1:-1:-1;;2661:11:116;-1:-1:-1;;;;;2694:22:116;;;;;;;2661:11;2694;;:22;;;;;;;2730:29;;;2773:22;;;;;-1:-1:-1;;;2773:22:116;;;;;;;-1:-1:-1;2694:22:116;2441:371::o;2157:228:0:-;2283:10;2317:61;2348:8;2358:19;2317:30;:61::i;:::-;-1:-1:-1;2305:73:0;2157:228;-1:-1:-1;;;2157:228:0:o;1280:438::-;1380:14;1396:16;1425:10;1437:19;1460:115;1504:8;351:1:56;1460:30:0;:115::i;:::-;1424:151;;;;1593:5;1585:60;;;;-1:-1:-1;;;1585:60:0;;53429:2:122;1585:60:0;;;53411:21:122;53468:2;53448:18;;;53441:30;53507:34;53487:18;;;53480:62;-1:-1:-1;;;53558:18:122;;;53551:40;53608:19;;1585:60:0;53227:406:122;1585:60:0;1676:35;;-1:-1:-1;;;1676:35:0;;:4;;:27;;:35;;1704:6;;1676:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1655:56:0;;;;;;-1:-1:-1;1280:438:0;-1:-1:-1;;;;1280:438:0:o;1251:742:56:-;1366:16;1384:21;1366:16;1506:1;1496:11;;1366:16;1568:22;:8;;1496:11;1568:14;:22::i;:::-;1614:1;1604:11;;;;;1554:36;-1:-1:-1;1675:21:56;:8;;1604:11;1675:13;:21::i;:::-;1662:34;-1:-1:-1;1826:1:56;1817:10;;1881:13;;;;;1917:31;1881:13;1817:10;1917:8;;:31;:::i;:::-;1251:742;;1908:40;;-1:-1:-1;1908:40:56;;-1:-1:-1;;;1962:14:56;;;;-1:-1:-1;;;1251:742:56:o;4238:212:116:-;4303:13;4332:12;4338:5;5832:12;-1:-1:-1;;;5818:10:116;;-1:-1:-1;;;;;5818:10:116;;;5832:12;;5818:26;;5729:122;4332:12;4328:37;;;4353:12;;-1:-1:-1;;;4353:12:116;;;;;;;;;;;4328:37;-1:-1:-1;4418:10:116;;-1:-1:-1;;;;;;;;;;4418:10:116;;;;;:14;4406:27;;;;;:11;;;;:27;;;;;;;4238:212::o;3112:138:57:-;3173:7;3207:35;862:3;785:2;3207:7;;:35;:::i;:::-;3199:44;;;:::i;3256:135::-;3320:14;;3359:24;:7;862:3;3359:7;;:24;:::i;2314:271:56:-;2393:14;;2459:2;2441:20;;2437:67;;2470:34;;-1:-1:-1;;;2470:34:56;;;;;;;;;;;2437:67;2523:17;:7;;2538:1;2523:14;:17::i;:::-;2514:26;-1:-1:-1;2561:17:56;:7;;2575:2;2561:13;:17::i;:::-;2550:28;;2314:271;;;;;:::o;867:407:0:-;952:11;965:13;991:10;1003:19;1026:113;1070:8;294:1:56;1026:30:0;:113::i;:::-;990:149;;;;1157:5;1149:59;;;;-1:-1:-1;;;1149:59:0;;54417:2:122;1149:59:0;;;54399:21:122;54456:2;54436:18;;;54429:30;54495:34;54475:18;;;54468:62;-1:-1:-1;;;54546:18:122;;;54539:39;54595:19;;1149:59:0;54215:405:122;1149:59:0;1233:34;;-1:-1:-1;;;1233:34:0;;:4;;:26;;:34;;1260:6;;1233:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1218:49:0;;;;;;;-1:-1:-1;867:407:0;-1:-1:-1;;;;867:407:0:o;2384:142:57:-;2447:7;2481:37;655:2;605;2481:7;;:37;:::i;2078:146::-;2140:6;2179:36;557:1;493;2179:7;;:36;:::i;:::-;2172:44;;;:::i;:::-;2165:52;;;2078:146;-1:-1:-1;;;2078:146:57:o;1999:309:56:-;2077:11;;2137:2;2119:20;;;;;:44;;-1:-1:-1;2161:2:56;2143:20;;;2119:44;2115:90;;;2172:33;;-1:-1:-1;;;2172:33:56;;;;;;;;;;;2115:90;2221:17;:7;;2236:1;2221:14;:17::i;:::-;2215:23;-1:-1:-1;2274:2:56;2256:20;;:45;;2300:1;2256:45;;;2279:18;:7;;2294:2;2279:14;:18::i;2827:143:57:-;2892:7;2926:36;785:2;706;2926:7;;:36;:::i;2954:305:116:-;3080:12;;-1:-1:-1;;;;;3080:12:116;;;-1:-1:-1;;3080:16:116;;-1:-1:-1;;;3128:10:116;;;;3114:24;;;;3110:48;;3147:11;;-1:-1:-1;;;3147:11:116;;;;;;;;;;;3110:48;-1:-1:-1;;;;;3172:23:116;;;;;:11;;;:23;;;;;:31;;;;3217:25;;-1:-1:-1;;;;;;3217:25:116;;;;2954:305::o;2391:578:0:-;2601:10;;:27;;-1:-1:-1;;;2601:27:0;;2526:10;;2538:19;;2526:10;;-1:-1:-1;;;;;2601:10:0;;:17;;:27;;2619:8;;2601:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2601:27:0;;;;;;;;;;;;:::i;:::-;2569:59;;;2639:14;2663:300;2679:12;:19;2670:6;:28;2663:300;;;2772:45;;-1:-1:-1;;;2772:45:0;;2715:16;;;;;;2772:4;;:23;;:45;;2796:12;;2810:6;;2772:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2772:45:0;;;;;;;;;;;;:::i;:::-;2714:103;;;;;;2849:19;2835:33;;:10;:33;;;2831:89;;-1:-1:-1;2896:4:0;;-1:-1:-1;2902:2:0;-1:-1:-1;2888:17:0;;-1:-1:-1;;;2888:17:0;2831:89;2942:10;-1:-1:-1;2663:300:0;;-1:-1:-1;;2663:300:0;;2559:410;;2391:578;;;;;:::o;229:215:50:-;306:6;371:1;362:10;;407:18;362:10;:6;407;;:18;:::i;:::-;400:26;;;:::i;:::-;393:34;;;229:215;-1:-1:-1;;;;;229:215:50:o;892:220::-;970:7;1036:2;1027:11;;1075:18;1027:11;:6;1075;;:18;:::i;:::-;1067:27;;;:::i;:::-;1059:36;;;892:220;-1:-1:-1;;;;;892:220:50:o;95:128::-;171:5;201:6;;208;201:14;;;;;;;:::i;:::-;;;;;;;;;95:128;-1:-1:-1;;;;;95:128:50:o;1570:210::-;1647:7;1713:2;1704:11;;1744:18;1704:11;:6;1744;;:18;:::i;:::-;1736:27;;;:::i;:::-;1729:34;1570:210;-1:-1:-1;;;;;1570:210:50:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:121:122;99:10;92:5;88:22;81:5;78:33;68:61;;125:1;122;115:12;68:61;14:121;:::o;140:131::-;-1:-1:-1;;;;;215:31:122;;205:42;;195:70;;261:1;258;251:12;276:386;343:6;351;404:2;392:9;383:7;379:23;375:32;372:52;;;420:1;417;410:12;372:52;459:9;446:23;478:30;502:5;478:30;:::i;:::-;527:5;-1:-1:-1;584:2:122;569:18;;556:32;597:33;556:32;597:33;:::i;:::-;649:7;639:17;;;276:386;;;;;:::o;667:347::-;718:8;728:6;782:3;775:4;767:6;763:17;759:27;749:55;;800:1;797;790:12;749:55;-1:-1:-1;823:20:122;;-1:-1:-1;;;;;855:30:122;;852:50;;;898:1;895;888:12;852:50;935:4;927:6;923:17;911:29;;987:3;980:4;971:6;963;959:19;955:30;952:39;949:59;;;1004:1;1001;994:12;1019:409;1089:6;1097;1150:2;1138:9;1129:7;1125:23;1121:32;1118:52;;;1166:1;1163;1156:12;1118:52;1206:9;1193:23;-1:-1:-1;;;;;1231:6:122;1228:30;1225:50;;;1271:1;1268;1261:12;1225:50;1310:58;1360:7;1351:6;1340:9;1336:22;1310:58;:::i;:::-;1387:8;;1284:84;;-1:-1:-1;1019:409:122;-1:-1:-1;;;;1019:409:122:o;1433:114::-;1517:4;1510:5;1506:16;1499:5;1496:27;1486:55;;1537:1;1534;1527:12;1552:408;1633:6;1641;1694:2;1682:9;1673:7;1669:23;1665:32;1662:52;;;1710:1;1707;1700:12;1662:52;1749:9;1736:23;1768:29;1791:5;1768:29;:::i;:::-;1816:5;-1:-1:-1;1873:2:122;1858:18;;1845:32;1908:1;1896:14;;1886:42;;1924:1;1921;1914:12;1965:465;2018:3;2056:5;2050:12;2083:6;2078:3;2071:19;2109:4;2138;2133:3;2129:14;2122:21;;2177:4;2170:5;2166:16;2200:1;2210:195;2224:6;2221:1;2218:13;2210:195;;;2289:13;;-1:-1:-1;;;;;2285:39:122;2273:52;;2345:12;;;;2380:15;;;;2321:1;2239:9;2210:195;;;-1:-1:-1;2421:3:122;;1965:465;-1:-1:-1;;;;;1965:465:122:o;2435:261::-;2614:2;2603:9;2596:21;2577:4;2634:56;2686:2;2675:9;2671:18;2663:6;2634:56;:::i;2924:127::-;2985:10;2980:3;2976:20;2973:1;2966:31;3016:4;3013:1;3006:15;3040:4;3037:1;3030:15;3056:253;3128:2;3122:9;3170:4;3158:17;;-1:-1:-1;;;;;3190:34:122;;3226:22;;;3187:62;3184:88;;;3252:18;;:::i;:::-;3288:2;3281:22;3056:253;:::o;3314:275::-;3385:2;3379:9;3450:2;3431:13;;-1:-1:-1;;3427:27:122;3415:40;;-1:-1:-1;;;;;3470:34:122;;3506:22;;;3467:62;3464:88;;;3532:18;;:::i;:::-;3568:2;3561:22;3314:275;;-1:-1:-1;3314:275:122:o;3594:186::-;3642:4;-1:-1:-1;;;;;3667:6:122;3664:30;3661:56;;;3697:18;;:::i;:::-;-1:-1:-1;3763:2:122;3742:15;-1:-1:-1;;3738:29:122;3769:4;3734:40;;3594:186::o;3785:462::-;3827:5;3880:3;3873:4;3865:6;3861:17;3857:27;3847:55;;3898:1;3895;3888:12;3847:55;3934:6;3921:20;3965:48;3981:31;4009:2;3981:31;:::i;:::-;3965:48;:::i;:::-;4038:2;4029:7;4022:19;4084:3;4077:4;4072:2;4064:6;4060:15;4056:26;4053:35;4050:55;;;4101:1;4098;4091:12;4050:55;4166:2;4159:4;4151:6;4147:17;4140:4;4131:7;4127:18;4114:55;4214:1;4189:16;;;4207:4;4185:27;4178:38;;;;4193:7;3785:462;-1:-1:-1;;;3785:462:122:o;4252:588::-;4334:6;4342;4350;4403:2;4391:9;4382:7;4378:23;4374:32;4371:52;;;4419:1;4416;4409:12;4371:52;4459:9;4446:23;-1:-1:-1;;;;;4484:6:122;4481:30;4478:50;;;4524:1;4521;4514:12;4478:50;4547:49;4588:7;4579:6;4568:9;4564:22;4547:49;:::i;:::-;4537:59;;;4646:2;4635:9;4631:18;4618:32;4659:29;4682:5;4659:29;:::i;:::-;4707:5;-1:-1:-1;4764:2:122;4749:18;;4736:32;4777:31;4736:32;4777:31;:::i;:::-;4827:7;4817:17;;;4252:588;;;;;:::o;4845:250::-;4930:1;4940:113;4954:6;4951:1;4948:13;4940:113;;;5030:11;;;5024:18;5011:11;;;5004:39;4976:2;4969:10;4940:113;;;-1:-1:-1;;5087:1:122;5069:16;;5062:27;4845:250::o;5100:271::-;5142:3;5180:5;5174:12;5207:6;5202:3;5195:19;5223:76;5292:6;5285:4;5280:3;5276:14;5269:4;5262:5;5258:16;5223:76;:::i;:::-;5353:2;5332:15;-1:-1:-1;;5328:29:122;5319:39;;;;5360:4;5315:50;;5100:271;-1:-1:-1;;5100:271:122:o;5376:598::-;5428:3;5459;5491:5;5485:12;5518:6;5513:3;5506:19;5544:4;5573;5568:3;5564:14;5557:21;;5631:4;5621:6;5618:1;5614:14;5607:5;5603:26;5599:37;5670:4;5663:5;5659:16;5693:1;5703:245;5717:6;5714:1;5711:13;5703:245;;;5804:2;5800:7;5792:5;5786:4;5782:16;5778:30;5773:3;5766:43;5830:38;5863:4;5854:6;5848:13;5830:38;:::i;:::-;5926:12;;;;5822:46;-1:-1:-1;5891:15:122;;;;5739:1;5732:9;5703:245;;;-1:-1:-1;5964:4:122;;5376:598;-1:-1:-1;;;;;;;5376:598:122:o;5979:1077::-;6185:4;6214:2;6254;6243:9;6239:18;6284:2;6273:9;6266:21;6307:6;6342;6336:13;6373:6;6365;6358:22;6399:2;6389:12;;6432:2;6421:9;6417:18;6410:25;;6494:2;6484:6;6481:1;6477:14;6466:9;6462:30;6458:39;6532:2;6524:6;6520:15;6553:1;6563:464;6577:6;6574:1;6571:13;6563:464;;;6642:22;;;-1:-1:-1;;6638:36:122;6626:49;;6698:13;;6743:9;;-1:-1:-1;;;;;6739:35:122;6724:51;;6814:11;;6808:18;6846:15;;;6839:27;;;6889:58;6931:15;;;6808:18;6889:58;:::i;:::-;7005:12;;;;6879:68;-1:-1:-1;;6970:15:122;;;;6599:1;6592:9;6563:464;;;-1:-1:-1;7044:6:122;;5979:1077;-1:-1:-1;;;;;;;;5979:1077:122:o;7061:1114::-;7184:6;7192;7200;7208;7216;7224;7232;7285:3;7273:9;7264:7;7260:23;7256:33;7253:53;;;7302:1;7299;7292:12;7253:53;7341:9;7328:23;7360:30;7384:5;7360:30;:::i;:::-;7409:5;-1:-1:-1;7466:2:122;7451:18;;7438:32;7479:33;7438:32;7479:33;:::i;:::-;7531:7;-1:-1:-1;7589:2:122;7574:18;;7561:32;-1:-1:-1;;;;;7642:14:122;;;7639:34;;;7669:1;7666;7659:12;7639:34;7692:49;7733:7;7724:6;7713:9;7709:22;7692:49;:::i;:::-;7682:59;;7788:2;7777:9;7773:18;7760:32;7750:42;;7844:3;7833:9;7829:19;7816:33;7801:48;;7858:33;7883:7;7858:33;:::i;:::-;7910:7;;-1:-1:-1;7970:3:122;7955:19;;7942:33;;7987:16;;;7984:36;;;8016:1;8013;8006:12;7984:36;;8055:60;8107:7;8096:8;8085:9;8081:24;8055:60;:::i;:::-;7061:1114;;;;-1:-1:-1;7061:1114:122;;-1:-1:-1;7061:1114:122;;;;8029:86;;-1:-1:-1;;;7061:1114:122:o;8586:523::-;8671:6;8679;8687;8695;8748:3;8736:9;8727:7;8723:23;8719:33;8716:53;;;8765:1;8762;8755:12;8716:53;8804:9;8791:23;8823:30;8847:5;8823:30;:::i;:::-;8872:5;-1:-1:-1;8924:2:122;8909:18;;8896:32;;-1:-1:-1;8975:2:122;8960:18;;8947:32;;-1:-1:-1;9031:2:122;9016:18;;9003:32;9044:33;9003:32;9044:33;:::i;:::-;8586:523;;;;-1:-1:-1;8586:523:122;;-1:-1:-1;;8586:523:122:o;9114:117::-;9199:6;9192:5;9188:18;9181:5;9178:29;9168:57;;9221:1;9218;9211:12;9236:313;9303:6;9311;9364:2;9352:9;9343:7;9339:23;9335:32;9332:52;;;9380:1;9377;9370:12;9332:52;9419:9;9406:23;9438:30;9462:5;9438:30;:::i;:::-;9487:5;9539:2;9524:18;;;;9511:32;;-1:-1:-1;;;9236:313:122:o;9746:1569::-;9950:4;9979:2;10019;10008:9;10004:18;10049:2;10038:9;10031:21;10072:6;10107;10101:13;10138:6;10130;10123:22;10164:2;10154:12;;10197:2;10186:9;10182:18;10175:25;;10259:2;10249:6;10246:1;10242:14;10231:9;10227:30;10223:39;10297:2;10289:6;10285:15;10318:1;10339;10349:937;10365:6;10360:3;10357:15;10349:937;;;10434:22;;;-1:-1:-1;;10430:36:122;10418:49;;10490:13;;10577:9;;-1:-1:-1;;;;;10573:35:122;10558:51;;10648:11;;10642:18;10680:15;;;10673:27;;;10761:19;;10530:15;;;10793:24;;;10883:21;;;;10928:1;;10851:2;10839:15;;;10942:236;10958:8;10953:3;10950:17;10942:236;;;11039:15;;-1:-1:-1;;;;;;11035:42:122;11021:57;;11147:17;;;;10986:1;10977:11;;;;;11104:14;;;;10942:236;;;-1:-1:-1;11264:12:122;;;;11201:5;-1:-1:-1;;;11229:15:122;;;;10391:1;10382:11;10349:937;;;-1:-1:-1;11303:6:122;;9746:1569;-1:-1:-1;;;;;;;;;9746:1569:122:o;11320:477::-;11399:6;11407;11415;11468:2;11456:9;11447:7;11443:23;11439:32;11436:52;;;11484:1;11481;11474:12;11436:52;11524:9;11511:23;-1:-1:-1;;;;;11549:6:122;11546:30;11543:50;;;11589:1;11586;11579:12;11543:50;11628:58;11678:7;11669:6;11658:9;11654:22;11628:58;:::i;:::-;11705:8;;11602:84;;-1:-1:-1;11787:2:122;11772:18;;;;11759:32;;11320:477;-1:-1:-1;;;;11320:477:122:o;11802:266::-;11890:6;11885:3;11878:19;11942:6;11935:5;11928:4;11923:3;11919:14;11906:43;-1:-1:-1;11994:1:122;11969:16;;;11987:4;11965:27;;;11958:38;;;;12050:2;12029:15;;;-1:-1:-1;;12025:29:122;12016:39;;;12012:50;;11802:266::o;12073:393::-;12294:4;12286:6;12282:17;12271:9;12264:36;12336:2;12331;12320:9;12316:18;12309:30;12245:4;12356:61;12413:2;12402:9;12398:18;12390:6;12382;12356:61;:::i;:::-;12348:69;;12453:6;12448:2;12437:9;12433:18;12426:34;12073:393;;;;;;;:::o;12471:183::-;12531:4;-1:-1:-1;;;;;12556:6:122;12553:30;12550:56;;;12586:18;;:::i;:::-;-1:-1:-1;12631:1:122;12627:14;12643:4;12623:25;;12471:183::o;12659:966::-;12743:6;12774:2;12817;12805:9;12796:7;12792:23;12788:32;12785:52;;;12833:1;12830;12823:12;12785:52;12873:9;12860:23;-1:-1:-1;;;;;12898:6:122;12895:30;12892:50;;;12938:1;12935;12928:12;12892:50;12961:22;;13014:4;13006:13;;13002:27;-1:-1:-1;12992:55:122;;13043:1;13040;13033:12;12992:55;13079:2;13066:16;13102:60;13118:43;13158:2;13118:43;:::i;13102:60::-;13196:15;;;13278:1;13274:10;;;;13266:19;;13262:28;;;13227:12;;;;13302:19;;;13299:39;;;13334:1;13331;13324:12;13299:39;13358:11;;;;13378:217;13394:6;13389:3;13386:15;13378:217;;;13474:3;13461:17;13491:31;13516:5;13491:31;:::i;:::-;13535:18;;13411:12;;;;13573;;;;13378:217;;;13614:5;12659:966;-1:-1:-1;;;;;;;12659:966:122:o;13630:218::-;13777:2;13766:9;13759:21;13740:4;13797:45;13838:2;13827:9;13823:18;13815:6;13797:45;:::i;13853:280::-;14052:2;14041:9;14034:21;14015:4;14072:55;14123:2;14112:9;14108:18;14100:6;14072:55;:::i;14620:832::-;14726:6;14734;14742;14750;14758;14811:3;14799:9;14790:7;14786:23;14782:33;14779:53;;;14828:1;14825;14818:12;14779:53;14868:9;14855:23;-1:-1:-1;;;;;14938:2:122;14930:6;14927:14;14924:34;;;14954:1;14951;14944:12;14924:34;14993:58;15043:7;15034:6;15023:9;15019:22;14993:58;:::i;:::-;15070:8;;-1:-1:-1;14967:84:122;-1:-1:-1;15158:2:122;15143:18;;15130:32;;-1:-1:-1;15174:16:122;;;15171:36;;;15203:1;15200;15193:12;15171:36;;15226:51;15269:7;15258:8;15247:9;15243:24;15226:51;:::i;:::-;15216:61;;;15324:2;15313:9;15309:18;15296:32;15286:42;;15378:2;15367:9;15363:18;15350:32;15391:31;15416:5;15391:31;:::i;:::-;15441:5;15431:15;;;14620:832;;;;;;;;:::o;15457:270::-;15539:6;15592:2;15580:9;15571:7;15567:23;15563:32;15560:52;;;15608:1;15605;15598:12;15560:52;15647:9;15634:23;15666:31;15691:5;15666:31;:::i;15914:313::-;15981:6;15989;16042:2;16030:9;16021:7;16017:23;16013:32;16010:52;;;16058:1;16055;16048:12;16010:52;16097:9;16084:23;16116:30;16140:5;16116:30;:::i;16526:146::-;-1:-1:-1;;;;;16605:5:122;16601:46;16594:5;16591:57;16581:85;;16662:1;16659;16652:12;16677:247;16736:6;16789:2;16777:9;16768:7;16764:23;16760:32;16757:52;;;16805:1;16802;16795:12;16757:52;16844:9;16831:23;16863:31;16888:5;16863:31;:::i;16929:628::-;17017:6;17025;17033;17086:2;17074:9;17065:7;17061:23;17057:32;17054:52;;;17102:1;17099;17092:12;17054:52;17142:9;17129:23;-1:-1:-1;;;;;17212:2:122;17204:6;17201:14;17198:34;;;17228:1;17225;17218:12;17198:34;17267:58;17317:7;17308:6;17297:9;17293:22;17267:58;:::i;:::-;17344:8;;-1:-1:-1;17241:84:122;-1:-1:-1;17432:2:122;17417:18;;17404:32;;-1:-1:-1;17448:16:122;;;17445:36;;;17477:1;17474;17467:12;17445:36;;17500:51;17543:7;17532:8;17521:9;17517:24;17500:51;:::i;:::-;17490:61;;;16929:628;;;;;:::o;17886:717::-;17976:6;17984;17992;18000;18053:2;18041:9;18032:7;18028:23;18024:32;18021:52;;;18069:1;18066;18059:12;18021:52;18109:9;18096:23;-1:-1:-1;;;;;18179:2:122;18171:6;18168:14;18165:34;;;18195:1;18192;18185:12;18165:34;18234:58;18284:7;18275:6;18264:9;18260:22;18234:58;:::i;:::-;18311:8;;-1:-1:-1;18208:84:122;-1:-1:-1;18399:2:122;18384:18;;18371:32;;-1:-1:-1;18415:16:122;;;18412:36;;;18444:1;18441;18434:12;18412:36;;18483:60;18535:7;18524:8;18513:9;18509:24;18483:60;:::i;:::-;17886:717;;;;-1:-1:-1;18562:8:122;-1:-1:-1;;;;17886:717:122:o;18902:164::-;18978:13;;19027;;19020:21;19010:32;;19000:60;;19056:1;19053;19046:12;19071:330;19147:6;19155;19208:2;19196:9;19187:7;19183:23;19179:32;19176:52;;;19224:1;19221;19214:12;19176:52;19256:9;19250:16;19275:31;19300:5;19275:31;:::i;:::-;19325:5;-1:-1:-1;19349:46:122;19391:2;19376:18;;19349:46;:::i;19406:175::-;19484:13;;-1:-1:-1;;;;;19526:30:122;;19516:41;;19506:69;;19571:1;19568;19561:12;19586:134;19663:13;;19685:29;19663:13;19685:29;:::i;19725:460::-;19808:6;19816;19824;19877:2;19865:9;19856:7;19852:23;19848:32;19845:52;;;19893:1;19890;19883:12;19845:52;19916:39;19945:9;19916:39;:::i;:::-;19906:49;;19998:2;19987:9;19983:18;19977:25;20011:29;20034:5;20011:29;:::i;:::-;20109:2;20094:18;;20088:25;20059:5;;-1:-1:-1;20122:31:122;20088:25;20122:31;:::i;20592:441::-;20645:5;20698:3;20691:4;20683:6;20679:17;20675:27;20665:55;;20716:1;20713;20706:12;20665:55;20745:6;20739:13;20776:48;20792:31;20820:2;20792:31;:::i;20776:48::-;20849:2;20840:7;20833:19;20895:3;20888:4;20883:2;20875:6;20871:15;20867:26;20864:35;20861:55;;;20912:1;20909;20902:12;20861:55;20925:77;20999:2;20992:4;20983:7;20979:18;20972:4;20964:6;20960:17;20925:77;:::i;:::-;21020:7;20592:441;-1:-1:-1;;;;20592:441:122:o;21038:335::-;21117:6;21170:2;21158:9;21149:7;21145:23;21141:32;21138:52;;;21186:1;21183;21176:12;21138:52;21219:9;21213:16;-1:-1:-1;;;;;21244:6:122;21241:30;21238:50;;;21284:1;21281;21274:12;21238:50;21307:60;21359:7;21350:6;21339:9;21335:22;21307:60;:::i;21378:740::-;21443:5;21496:3;21489:4;21481:6;21477:17;21473:27;21463:55;;21514:1;21511;21504:12;21463:55;21543:6;21537:13;21569:4;21593:60;21609:43;21649:2;21609:43;:::i;21593:60::-;21675:3;21699:2;21694:3;21687:15;21727:4;21722:3;21718:14;21711:21;;21784:4;21778:2;21775:1;21771:10;21763:6;21759:23;21755:34;21741:48;;21812:3;21804:6;21801:15;21798:35;;;21829:1;21826;21819:12;21798:35;21865:4;21857:6;21853:17;21879:210;21895:6;21890:3;21887:15;21879:210;;;21968:3;21962:10;21985:31;22010:5;21985:31;:::i;:::-;22029:18;;22067:12;;;;21912;;21879:210;;;-1:-1:-1;22107:5:122;21378:740;-1:-1:-1;;;;;;21378:740:122:o;22123:1116::-;22221:6;22274:2;22262:9;22253:7;22249:23;22245:32;22242:52;;;22290:1;22287;22280:12;22242:52;22323:9;22317:16;-1:-1:-1;;;;;22393:2:122;22385:6;22382:14;22379:34;;;22409:1;22406;22399:12;22379:34;22432:22;;;;22488:4;22470:16;;;22466:27;22463:47;;;22506:1;22503;22496:12;22463:47;22532:22;;:::i;:::-;22577:32;22606:2;22577:32;:::i;:::-;22570:5;22563:47;22642:40;22678:2;22674;22670:11;22642:40;:::i;:::-;22637:2;22630:5;22626:14;22619:64;22715:40;22751:2;22747;22743:11;22715:40;:::i;:::-;22710:2;22703:5;22699:14;22692:64;22788:40;22824:2;22820;22816:11;22788:40;:::i;:::-;22783:2;22776:5;22772:14;22765:64;22868:3;22864:2;22860:12;22854:19;22898:2;22888:8;22885:16;22882:36;;;22914:1;22911;22904:12;22882:36;22951:67;23010:7;22999:8;22995:2;22991:17;22951:67;:::i;:::-;22945:3;22938:5;22934:15;22927:92;;23058:3;23054:2;23050:12;23044:19;23088:2;23078:8;23075:16;23072:36;;;23104:1;23101;23094:12;23072:36;23141:67;23200:7;23189:8;23185:2;23181:17;23141:67;:::i;:::-;23135:3;23124:15;;23117:92;-1:-1:-1;23128:5:122;22123:1116;-1:-1:-1;;;;;22123:1116:122:o;23244:127::-;23305:10;23300:3;23296:20;23293:1;23286:31;23336:4;23333:1;23326:15;23360:4;23357:1;23350:15;23376:271;23559:6;23551;23546:3;23533:33;23515:3;23585:16;;23610:13;;;23585:16;23376:271;-1:-1:-1;23376:271:122:o;23652:379::-;23863:2;23852:9;23845:21;23826:4;23883:45;23924:2;23913:9;23909:18;23901:6;23883:45;:::i;:::-;23875:53;;23964:6;23959:2;23948:9;23944:18;23937:34;24019:4;24011:6;24007:17;24002:2;23991:9;23987:18;23980:45;23652:379;;;;;;:::o;24036:127::-;24097:10;24092:3;24088:20;24085:1;24078:31;24128:4;24125:1;24118:15;24152:4;24149:1;24142:15;24168:125;24233:9;;;24254:10;;;24251:36;;;24267:18;;:::i;24298:474::-;24539:10;24527:23;;24509:42;;-1:-1:-1;;;;;24587:32:122;;24582:2;24567:18;;24560:60;24656:3;24651:2;24636:18;;24629:31;;;-1:-1:-1;;24677:46:122;;24703:19;;24695:6;24677:46;:::i;:::-;24669:54;;24759:6;24754:2;24743:9;24739:18;24732:34;24298:474;;;;;;;:::o;24777:184::-;24847:6;24900:2;24888:9;24879:7;24875:23;24871:32;24868:52;;;24916:1;24913;24906:12;24868:52;-1:-1:-1;24939:16:122;;24777:184;-1:-1:-1;24777:184:122:o;25612:369::-;25698:6;25706;25714;25767:2;25755:9;25746:7;25742:23;25738:32;25735:52;;;25783:1;25780;25773:12;25735:52;25815:9;25809:16;25834:29;25857:5;25834:29;:::i;:::-;25927:2;25912:18;;25906:25;25971:2;25956:18;;;25950:25;25882:5;;25906:25;;-1:-1:-1;25950:25:122;25612:369;-1:-1:-1;;;25612:369:122:o;26329:1451::-;26531:4;26560:2;26600;26589:9;26585:18;26630:2;26619:9;26612:21;26653:6;26688;26682:13;26719:6;26711;26704:22;26745:2;26735:12;;26778:2;26767:9;26763:18;26756:25;;26840:2;26830:6;26827:1;26823:14;26812:9;26808:30;26804:39;26878:2;26870:6;26866:15;26899:1;26909:842;26923:6;26920:1;26917:13;26909:842;;;26988:22;;;-1:-1:-1;;26984:36:122;26972:49;;27044:13;;27116:9;;27127:10;27112:26;27097:42;;27186:11;;;27180:18;-1:-1:-1;;;;;27176:44:122;27159:15;;;27152:69;27260:11;;;27254:18;27080:4;27292:15;;;27285:27;;;27080:4;27339:48;27371:15;;;27254:18;27339:48;:::i;:::-;27325:62;;;27410:4;27465:2;27461;27457:11;27451:18;27446:2;27438:6;27434:15;27427:43;;27493:4;27546:2;27542;27538:11;27532:18;27510:40;;27599:6;27591;27587:19;27582:2;27574:6;27570:15;27563:44;;27630:41;27664:6;27648:14;27630:41;:::i;:::-;27729:12;;;;27620:51;-1:-1:-1;;;27694:15:122;;;;26945:1;26938:9;26909:842;;27785:289;27960:2;27949:9;27942:21;27923:4;27980:45;28021:2;28010:9;28006:18;27998:6;27980:45;:::i;:::-;27972:53;;28061:6;28056:2;28045:9;28041:18;28034:34;27785:289;;;;;:::o;28079:244::-;28236:2;28225:9;28218:21;28199:4;28256:61;28313:2;28302:9;28298:18;28290:6;28282;28256:61;:::i;28518:251::-;28588:6;28641:2;28629:9;28620:7;28616:23;28612:32;28609:52;;;28657:1;28654;28647:12;28609:52;28689:9;28683:16;28708:31;28733:5;28708:31;:::i;28774:148::-;28862:4;28841:12;;;28855;;;28837:31;;28880:13;;28877:39;;;28896:18;;:::i;29429:127::-;29490:10;29485:3;29481:20;29478:1;29471:31;29521:4;29518:1;29511:15;29545:4;29542:1;29535:15;30029:827;30361:4;30407:1;30403;30398:3;30394:11;30390:19;30448:2;30440:6;30436:15;30425:9;30418:34;30500:2;30492:6;30488:15;30483:2;30472:9;30468:18;30461:43;30540:3;30535:2;30524:9;30520:18;30513:31;30567:57;30619:3;30608:9;30604:19;30596:6;30567:57;:::i;:::-;30672:2;30664:6;30660:15;30655:2;30644:9;30640:18;30633:43;30725:2;30717:6;30713:15;30707:3;30696:9;30692:19;30685:44;30778:9;30770:6;30766:22;30760:3;30749:9;30745:19;30738:51;30806:44;30843:6;30835;30806:44;:::i;:::-;30798:52;30029:827;-1:-1:-1;;;;;;;;;;30029:827:122:o;31110:1303::-;31542:4;31534:6;31530:17;31519:9;31512:36;31493:4;31567:2;31605:3;31600:2;31589:9;31585:18;31578:31;31632:57;31684:3;31673:9;31669:19;31661:6;31632:57;:::i;:::-;-1:-1:-1;;;;;31763:15:122;;;31758:2;31743:18;;31736:43;31815:22;;;31810:2;31795:18;;31788:50;31887:13;;31909:22;;;-1:-1:-1;31971:17:122;;;31959:2;32011:16;;;;31947:15;;31887:13;32055:177;32069:6;32066:1;32063:13;32055:177;;;32134:13;;32130:22;;32118:35;;32220:1;32208:14;;;;32173:12;;;;32084:9;32055:177;;;-1:-1:-1;;;;;;;31068:30:122;;32287:3;32272:19;;31056:43;32338:9;32333:3;32329:19;32323:3;32312:9;32308:19;32301:48;32366:41;32403:3;32395:6;32366:41;:::i;:::-;32358:49;31110:1303;-1:-1:-1;;;;;;;;;;;;31110:1303:122:o;33107:2038::-;33335:4;33364:2;33404;33393:9;33389:18;33434:2;33423:9;33416:21;33457:6;33492;33486:13;33523:6;33515;33508:22;33549:2;33539:12;;33582:2;33571:9;33567:18;33560:25;;33644:2;33634:6;33631:1;33627:14;33616:9;33612:30;33608:39;33682:2;33674:6;33670:15;33703:1;33713:1403;33727:6;33724:1;33721:13;33713:1403;;;-1:-1:-1;;33822:22:122;;;33818:31;;33806:44;;33873:13;;33918:9;;33929:10;33914:26;33899:42;;33980:11;;33974:18;34012:15;;;34005:27;;;34073:19;;-1:-1:-1;;;;;34069:44:122;34052:15;;;34045:69;34155:21;;;34149:28;34225:4;34266:23;;;34200:2;34249:15;;;34242:48;;;;34331:21;;;34325:28;34416:23;;34376:3;34399:15;;;34392:48;;;;34481:21;;;34475:28;34566:23;;;34526:3;34549:15;;;34542:48;;;;34631:21;;;34625:28;34676:4;34700:15;;;34693:27;34625:28;34747:73;34815:3;34803:16;;34625:28;34747:73;:::i;:::-;34861:21;;34855:28;34925:19;;;34921:28;;34915:3;34903:16;;34896:54;34855:28;34733:87;-1:-1:-1;34973:63:122;34733:87;34855:28;34973:63;:::i;:::-;35094:12;;;;34963:73;-1:-1:-1;;;35059:15:122;;;;-1:-1:-1;33749:1:122;33742:9;33713:1403;;35150:1026;35415:2;35467:21;;;35537:13;;35440:18;;;35559:22;;;35386:4;;35415:2;35600;;35618:18;;;;35659:15;;;35386:4;35702:448;35716:6;35713:1;35710:13;35702:448;;;35775:13;;35850:9;;35811:10;35846:18;;;35834:31;;35904:11;;;35898:18;35954:19;;35950:28;;;35936:12;;;35929:50;36023:21;;36017:28;-1:-1:-1;;;;;36013:54:122;35999:12;;;35992:76;36097:4;36088:14;;;;36125:15;;;;36064:1;35731:9;35702:448;;;-1:-1:-1;36167:3:122;;35150:1026;-1:-1:-1;;;;;;;35150:1026:122:o;36181:251::-;36251:6;36304:2;36292:9;36283:7;36279:23;36275:32;36272:52;;;36320:1;36317;36310:12;36272:52;36352:9;36346:16;36371:31;36396:5;36371:31;:::i;36437:274::-;-1:-1:-1;;;;;36575:10:122;;;36587;;;36571:27;36618:20;;;;36509:34;36657:24;;;36647:58;;36685:18;;:::i;:::-;36647:58;;36437:274;;;;:::o;36716:1093::-;36945:2;36997:21;;;37067:13;;36970:18;;;37089:22;;;36916:4;;36945:2;37130;;37148:18;;;;37189:15;;;36916:4;37232:551;37246:6;37243:1;37240:13;37232:551;;;37305:13;;37380:9;;37341:10;37376:18;;;37364:31;;37434:11;;;37428:18;37484:19;;-1:-1:-1;;;;;37480:60:122;37466:12;;;37459:82;37585:21;;;37579:28;-1:-1:-1;;;;;37575:53:122;37561:12;;;37554:75;37673:21;;37667:28;37663:37;37658:2;37649:12;;37642:59;37730:4;37721:14;;;;37758:15;;;;37268:1;37261:9;37232:551;;37814:1355;38049:2;38101:21;;;38171:13;;38074:18;;;38193:22;;;38020:4;;38049:2;38234;;38252:18;;;;38293:15;;;38020:4;38336:807;38350:6;38347:1;38344:13;38336:807;;;38409:13;;38451:9;;38462:10;38447:26;38435:39;;38513:11;;;38507:18;-1:-1:-1;;;;;38600:21:122;;;38586:12;;;38579:43;38666:11;;;38660:18;38656:27;38642:12;;;38635:49;38707:4;38755:11;;;38749:18;38769:6;38745:31;38731:12;;;38724:53;38800:4;38845:11;;;38839:18;-1:-1:-1;;;;;38948:23:122;;;38934:12;;;38927:45;;;;38995:4;39043:11;;;39037:18;39033:27;39019:12;;;39012:49;39090:4;39081:14;;;;39118:15;;;;38372:1;38365:9;38336:807;;39174:1035;39411:2;39463:21;;;39533:13;;39436:18;;;39555:22;;;39382:4;;39411:2;39596;;39614:18;;;;39655:15;;;39382:4;39698:485;39712:6;39709:1;39706:13;39698:485;;;39771:13;;39813:9;;39824:10;39809:26;39797:39;;39880:11;;;39874:18;-1:-1:-1;;;;;39870:43:122;39856:12;;;39849:65;39958:11;;;39952:18;39972:6;39948:31;39934:12;;;39927:53;40003:4;40051:11;;;40045:18;-1:-1:-1;;;;;40041:59:122;40027:12;;;40020:81;40130:4;40121:14;;;;40158:15;;;;39734:1;39727:9;39698:485;;41931:151;42021:4;42014:12;;;42000;;;41996:31;;42039:14;;42036:40;;;42056:18;;:::i;42087:380::-;42166:1;42162:12;;;;42209;;;42230:61;;42284:4;42276:6;42272:17;42262:27;;42230:61;42337:2;42329:6;42326:14;42306:18;42303:38;42300:161;;42383:10;42378:3;42374:20;42371:1;42364:31;42418:4;42415:1;42408:15;42446:4;42443:1;42436:15;42300:161;;42087:380;;;:::o;42472:760::-;-1:-1:-1;;;;;42823:15:122;;;42805:34;;42875:15;;42870:2;42855:18;;42848:43;42922:2;42907:18;;42900:34;;;42982:6;42970:19;;42965:2;42950:18;;42943:47;43027:3;43021;43006:19;;42999:32;;;42748:4;;43054:62;;43096:19;;43088:6;43080;43054:62;:::i;:::-;43165:9;43157:6;43153:22;43147:3;43136:9;43132:19;43125:51;43193:33;43219:6;43211;43193:33;:::i;43593:136::-;43632:3;43660:5;43650:39;;43669:18;;:::i;:::-;-1:-1:-1;;;43705:18:122;;43593:136::o;44293:379::-;44486:2;44475:9;44468:21;44449:4;44512:45;44553:2;44542:9;44538:18;44530:6;44512:45;:::i;:::-;44605:9;44597:6;44593:22;44588:2;44577:9;44573:18;44566:50;44633:33;44659:6;44651;44633:33;:::i;44677:549::-;44926:3;44915:9;44908:22;44889:4;44953:46;44994:3;44983:9;44979:19;44971:6;44953:46;:::i;:::-;45047:9;45039:6;45035:22;45030:2;45019:9;45015:18;45008:50;45075:33;45101:6;45093;45075:33;:::i;:::-;45139:2;45124:18;;45117:34;;;;-1:-1:-1;;;;;;;45187:32:122;;;;45182:2;45167:18;;;45160:60;45067:41;44677:549;-1:-1:-1;;44677:549:122:o;45517:249::-;45586:6;45639:2;45627:9;45618:7;45614:23;45610:32;45607:52;;;45655:1;45652;45645:12;45607:52;45687:9;45681:16;45706:30;45730:5;45706:30;:::i;46382:764::-;46707:10;46699:6;46695:23;46684:9;46677:42;46658:4;46755:1;46751;46746:3;46742:11;46738:19;46805:2;46797:6;46793:15;46788:2;46777:9;46773:18;46766:43;46845:3;46840:2;46829:9;46825:18;46818:31;46872:46;46913:3;46902:9;46898:19;46890:6;46872:46;:::i;:::-;46954:6;46949:2;46938:9;46934:18;46927:34;47010:2;47002:6;46998:15;46992:3;46981:9;46977:19;46970:44;47063:9;47055:6;47051:22;47045:3;47034:9;47030:19;47023:51;47091:49;47133:6;47125;47117;47091:49;:::i;:::-;47083:57;46382:764;-1:-1:-1;;;;;;;;;;;46382:764:122:o;47430:384::-;-1:-1:-1;;;;;;47615:33:122;;47603:46;;47672:13;;47585:3;;47694:74;47672:13;47757:1;47748:11;;47741:4;47729:17;;47694:74;:::i;:::-;47788:16;;;;47806:1;47784:24;;47430:384;-1:-1:-1;;;47430:384:122:o;47819:287::-;47948:3;47986:6;47980:13;48002:66;48061:6;48056:3;48049:4;48041:6;48037:17;48002:66;:::i;:::-;48084:16;;;;;47819:287;-1:-1:-1;;47819:287:122:o;48111:202::-;48178:6;48231:2;48219:9;48210:7;48206:23;48202:32;48199:52;;;48247:1;48244;48237:12;48199:52;48270:37;48297:9;48270:37;:::i;48318:874::-;48674:10;48665:6;48659:13;48655:30;48644:9;48637:49;48742:4;48734:6;48730:17;48724:24;48717:4;48706:9;48702:20;48695:54;-1:-1:-1;;;;;48809:4:122;48801:6;48797:17;48791:24;48787:49;48780:4;48769:9;48765:20;48758:79;48902:1;48898;48893:3;48889:11;48885:19;48877:6;48873:32;48868:2;48857:9;48853:18;48846:60;48943:6;48937:3;48926:9;48922:19;48915:35;48987:3;48981;48970:9;48966:19;48959:32;48618:4;49014:62;49071:3;49060:9;49056:19;49048:6;49040;49014:62;:::i;:::-;49125:9;49117:6;49113:22;49107:3;49096:9;49092:19;49085:51;49153:33;49179:6;49171;49153:33;:::i;:::-;49145:41;48318:874;-1:-1:-1;;;;;;;;;48318:874:122:o;49197:542::-;49298:2;49293:3;49290:11;49287:446;;;49334:1;49358:5;49355:1;49348:16;49402:4;49399:1;49389:18;49472:2;49460:10;49456:19;49453:1;49449:27;49443:4;49439:38;49508:4;49496:10;49493:20;49490:47;;;-1:-1:-1;49531:4:122;49490:47;49586:2;49581:3;49577:12;49574:1;49570:20;49564:4;49560:31;49550:41;;49641:82;49659:2;49652:5;49649:13;49641:82;;;49704:17;;;49685:1;49674:13;49641:82;;;49645:3;;;49197:542;;;:::o;49915:1214::-;-1:-1:-1;;;;;50032:3:122;50029:27;50026:53;;;50059:18;;:::i;:::-;50088:93;50177:3;50137:38;50169:4;50163:11;50137:38;:::i;:::-;50131:4;50088:93;:::i;:::-;50207:1;50232:2;50227:3;50224:11;50249:1;50244:627;;;;50915:1;50932:3;50929:93;;;-1:-1:-1;50988:19:122;;;50975:33;50929:93;-1:-1:-1;;49872:1:122;49868:11;;;49864:24;49860:29;49850:40;49896:1;49892:11;;;49847:57;51035:78;;50217:906;;50244:627;30945:1;30938:14;;;30982:4;30969:18;;-1:-1:-1;;50280:17:122;;;50392:9;50414:229;50428:7;50425:1;50422:14;50414:229;;;50517:19;;;50504:33;50489:49;;50624:4;50609:20;;;;50577:1;50565:14;;;;50444:12;50414:229;;;50418:3;50671;50662:7;50659:16;50656:159;;;50795:1;50791:6;50785:3;50779;50776:1;50772:11;50768:21;50764:34;50760:39;50747:9;50742:3;50738:19;50725:33;50721:79;50713:6;50706:95;50656:159;;;50858:1;50852:3;50849:1;50845:11;50841:19;50835:4;50828:33;50217:906;;;49915:1214;;;:::o;51134:331::-;51239:9;51250;51292:8;51280:10;51277:24;51274:44;;;51314:1;51311;51304:12;51274:44;51343:6;51333:8;51330:20;51327:40;;;51363:1;51360;51353:12;51327:40;-1:-1:-1;;51389:23:122;;;51434:25;;;;;-1:-1:-1;51134:331:122:o;51470:323::-;-1:-1:-1;;;;;;51590:19:122;;51666:11;;;;51697:1;51689:10;;51686:101;;;51758:1;51754:11;;;;51751:1;51747:19;51743:28;;;51735:37;51731:46;;;;51470:323;-1:-1:-1;;51470:323:122:o;51798:492::-;51973:3;52011:6;52005:13;52027:66;52086:6;52081:3;52074:4;52066:6;52062:17;52027:66;:::i;:::-;52156:13;;52115:16;;;;52178:70;52156:13;52115:16;52225:4;52213:17;;52178:70;:::i;:::-;52264:20;;51798:492;-1:-1:-1;;;;51798:492:122:o;52705:517::-;52792:6;52800;52808;52861:2;52849:9;52840:7;52836:23;52832:32;52829:52;;;52877:1;52874;52867:12;52829:52;52909:9;52903:16;52928:30;52952:5;52928:30;:::i;:::-;53027:2;53012:18;;53006:25;52977:5;;-1:-1:-1;53040:33:122;53006:25;53040:33;:::i;:::-;53144:2;53129:18;;53123:25;53092:7;;-1:-1:-1;53157:33:122;53123:25;53157:33;:::i;53638:312::-;53717:6;53725;53778:2;53766:9;53757:7;53753:23;53749:32;53746:52;;;53794:1;53791;53784:12;53746:52;53826:9;53820:16;53845:31;53870:5;53845:31;:::i;:::-;53940:2;53925:18;;;;53919:25;53895:5;;53919:25;;-1:-1:-1;;;53638:312:122:o;53955:255::-;54075:19;;54114:2;54106:11;;54103:101;;;-1:-1:-1;;54175:2:122;54171:12;;;54168:1;54164:20;54160:33;54149:45;53955:255;;;;:::o;54625:385::-;54704:6;54712;54765:2;54753:9;54744:7;54740:23;54736:32;54733:52;;;54781:1;54778;54771:12;54733:52;54813:9;54807:16;54832:31;54857:5;54832:31;:::i;:::-;54932:2;54917:18;;54911:25;54882:5;;-1:-1:-1;54945:33:122;54911:25;54945:33;:::i;55015:331::-;-1:-1:-1;;;;;;55135:19:122;;55219:11;;;;55250:1;55242:10;;55239:101;;;55311:1;55307:11;;;;55304:1;55300:19;55296:28;;;55288:37;55284:46;;;;55015:331;-1:-1:-1;;55015:331:122:o;55351:558::-;55448:6;55456;55509:2;55497:9;55488:7;55484:23;55480:32;55477:52;;;55525:1;55522;55515:12;55477:52;55558:9;55552:16;-1:-1:-1;;;;;55628:2:122;55620:6;55617:14;55614:34;;;55644:1;55641;55634:12;55614:34;55667:60;55719:7;55710:6;55699:9;55695:22;55667:60;:::i;:::-;55657:70;;55773:2;55762:9;55758:18;55752:25;55736:41;;55802:2;55792:8;55789:16;55786:36;;;55818:1;55815;55808:12;55786:36;;55841:62;55895:7;55884:8;55873:9;55869:24;55841:62;:::i;:::-;55831:72;;;55351:558;;;;;:::o;56208:520::-;56303:6;56311;56319;56372:2;56360:9;56351:7;56347:23;56343:32;56340:52;;;56388:1;56385;56378:12;56340:52;56420:9;56414:16;56439:29;56462:5;56439:29;:::i;:::-;56536:2;56521:18;;56515:25;56487:5;;-1:-1:-1;;;;;;56552:30:122;;56549:50;;;56595:1;56592;56585:12;56549:50;56618:60;56670:7;56661:6;56650:9;56646:22;56618:60;:::i;:::-;56608:70;;;56718:2;56707:9;56703:18;56697:25;56687:35;;56208:520;;;;;:::o;56733:318::-;-1:-1:-1;;;;;;56853:19:122;;56924:11;;;;56955:1;56947:10;;56944:101;;;57016:1;57012:11;;;;57009:1;57005:19;57001:28;;;56993:37;56989:46;;;;56733:318;-1:-1:-1;;56733:318:122:o;57056:345::-;-1:-1:-1;;;;;;57177:19:122;;57272:11;;;;57303:2;57295:11;;57292:103;;;57365:2;57361:12;;;;57358:1;57354:20;57350:29;;;57342:38;57338:47;;;;57056:345;-1:-1:-1;;57056:345:122:o", "linkReferences": {} }, "methodIdentifiers": { diff --git a/packages/test-devtools-evm-foundry/contracts/mocks/OFTComposerMock.sol b/packages/test-devtools-evm-foundry/contracts/mocks/OFTComposerMock.sol deleted file mode 100644 index fa0c5cbdb..000000000 --- a/packages/test-devtools-evm-foundry/contracts/mocks/OFTComposerMock.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: LZBL-1.2 -pragma solidity ^0.8.22; - -import { IOAppComposer } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/interfaces/IOAppComposer.sol"; - -contract OFTComposerMock is IOAppComposer { - // default empty values for testing a lzCompose received message - address public from; - bytes32 public guid; - bytes public message; - address public executor; - bytes public extraData; - - function lzCompose( - address _from, - bytes32 _guid, - bytes calldata _message, - address _executor, - bytes calldata /*_extraData*/ - ) external payable { - from = _from; - guid = _guid; - message = _message; - executor = _executor; - extraData = _message; - } -} diff --git a/packages/test-devtools-evm-foundry/contracts/mocks/OFTInspectorMock.sol b/packages/test-devtools-evm-foundry/contracts/mocks/OFTInspectorMock.sol deleted file mode 100644 index ada77e75c..000000000 --- a/packages/test-devtools-evm-foundry/contracts/mocks/OFTInspectorMock.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: LZBL-1.2 -pragma solidity ^0.8.22; - -import { IOAppMsgInspector } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/interfaces/IOAppMsgInspector.sol"; - -contract OFTInspectorMock is IOAppMsgInspector { - function inspect(bytes calldata _message, bytes calldata _options) external pure returns (bool) { - revert InspectionFailed(_message, _options); - } -} diff --git a/packages/test-devtools-evm-foundry/package.json b/packages/test-devtools-evm-foundry/package.json index aec373ada..a8d01600b 100644 --- a/packages/test-devtools-evm-foundry/package.json +++ b/packages/test-devtools-evm-foundry/package.json @@ -15,12 +15,10 @@ "scripts": { "coverage": "forge coverage --ir-minimum", "lint": "$npm_execpath eslint '**/*.{js,ts,json}'", - "lint:fix": "eslint --fix '**/*.{js,ts,json}'", - "test": "forge test" + "lint:fix": "eslint --fix '**/*.{js,ts,json}'" }, "devDependencies": { "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.34", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.34", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.34", "@layerzerolabs/lz-evm-v1-0.7": "^2.3.34", "@layerzerolabs/toolbox-foundry": "^0.1.9", @@ -33,9 +31,10 @@ }, "peerDependencies": { "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.3", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.3", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.3", "@layerzerolabs/lz-evm-v1-0.7": "^2.3.3", + "@layerzerolabs/oapp-evm": "^0.0.2", + "@layerzerolabs/oft-evm": "^0.0.9", "@openzeppelin/contracts": "^4.9.5 || ^5.0.0", "@openzeppelin/contracts-upgradeable": "^4.9.5 || ^5.0.0" }, diff --git a/packages/test-devtools-evm-foundry/test/foundry/MyOFT.t.sol b/packages/test-devtools-evm-foundry/test/foundry/MyOFT.t.sol deleted file mode 100644 index 38d8d3713..000000000 --- a/packages/test-devtools-evm-foundry/test/foundry/MyOFT.t.sol +++ /dev/null @@ -1,86 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.20; - -// Mock imports -import { OFTMock } from "./mocks/OFTMock.sol"; - -// OApp imports -import { IOAppOptionsType3, EnforcedOptionParam } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OAppOptionsType3.sol"; -import { OptionsBuilder } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OptionsBuilder.sol"; - -// OFT imports -import { IOFT, SendParam, OFTReceipt } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/interfaces/IOFT.sol"; -import { MessagingFee, MessagingReceipt } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/OFTCore.sol"; - -// OZ imports -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; - -// Forge imports -import "forge-std/console.sol"; - -// DevTools imports -import { TestHelperOz5 } from "../../contracts/TestHelperOz5.sol"; - -contract MyOFTTest is TestHelperOz5 { - using OptionsBuilder for bytes; - - uint32 aEid = 1; - uint32 bEid = 2; - - OFTMock aOFT; - OFTMock bOFT; - - address public userA = address(0x1); - address public userB = address(0x2); - uint256 public initialBalance = 100 ether; - - function setUp() public virtual override { - vm.deal(userA, 1000 ether); - vm.deal(userB, 1000 ether); - - super.setUp(); - setUpEndpoints(2, LibraryType.UltraLightNode); - - aOFT = OFTMock( - _deployOApp(type(OFTMock).creationCode, abi.encode("aOFT", "aOFT", address(endpoints[aEid]), address(this))) - ); - - bOFT = OFTMock( - _deployOApp(type(OFTMock).creationCode, abi.encode("bOFT", "bOFT", address(endpoints[bEid]), address(this))) - ); - - // config and wire the ofts - address[] memory ofts = new address[](2); - ofts[0] = address(aOFT); - ofts[1] = address(bOFT); - this.wireOApps(ofts); - - // mint tokens - aOFT.mint(userA, initialBalance); - bOFT.mint(userB, initialBalance); - } - - function test_verify_execute_receive_simple_send_works() public { - uint256 tokensToSend = 9 ether; - bytes memory options = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0); - SendParam memory sendParam = SendParam( - bEid, - addressToBytes32(userB), - tokensToSend, - tokensToSend, - options, - "", - "" - ); - MessagingFee memory fee = aOFT.quoteSend(sendParam, false); - - assertEq(aOFT.balanceOf(userA), initialBalance); - assertEq(bOFT.balanceOf(userB), initialBalance); - - vm.prank(userA); - aOFT.send{ value: fee.nativeFee }(sendParam, fee, payable(address(this))); - - // should revert if more than 10 ether is sent - verifyPackets(bEid, addressToBytes32(address(bOFT))); - } -} diff --git a/packages/test-devtools-evm-foundry/test/foundry/OmniCounter.t.sol b/packages/test-devtools-evm-foundry/test/foundry/OmniCounter.t.sol deleted file mode 100644 index 13f1f2197..000000000 --- a/packages/test-devtools-evm-foundry/test/foundry/OmniCounter.t.sol +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.15; - -import { Packet } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol"; -import { PacketV1Codec } from "@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol"; -import { Errors } from "@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol"; - -import { OptionsBuilder } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OptionsBuilder.sol"; - -import { OmniCounter, MsgCodec } from "./mocks/OmniCounter.sol"; - -import { TestHelperOz5 } from "../../contracts/TestHelperOz5.sol"; - -import "forge-std/console.sol"; - -contract OmniCounterTest is TestHelperOz5 { - using OptionsBuilder for bytes; - - uint32 aEid = 1; - uint32 bEid = 2; - - // omnicounter with precrime - OmniCounter aCounter; - OmniCounter bCounter; - - address offchain = address(0xDEAD); - - error CrimeFound(bytes crime); - - function setUp() public virtual override { - super.setUp(); - - setUpEndpoints(2, LibraryType.UltraLightNode); - - address[] memory uas = setupOApps(type(OmniCounter).creationCode, 1, 2); - aCounter = OmniCounter(payable(uas[0])); - bCounter = OmniCounter(payable(uas[1])); - } - - function test_lzCompose_increment() public { - uint256 countBefore = bCounter.count(); - uint256 composedCountBefore = bCounter.composedCount(); - - bytes memory options = OptionsBuilder - .newOptions() - .addExecutorLzReceiveOption(200000, 0) - .addExecutorLzComposeOption(0, 200000, 0); - (uint256 nativeFee, ) = aCounter.quote(bEid, MsgCodec.COMPOSED_TYPE, options); - aCounter.increment{ value: nativeFee }(bEid, MsgCodec.COMPOSED_TYPE, options); - - verifyPackets(bEid, addressToBytes32(address(bCounter)), 0, address(bCounter)); - - assertEq(bCounter.count(), countBefore + 1, "increment B1 assertion failure"); - assertEq(bCounter.composedCount(), composedCountBefore + 1, "increment B2 assertion failure"); - } -} \ No newline at end of file diff --git a/packages/test-devtools-evm-foundry/test/foundry/mocks/OFTMock.sol b/packages/test-devtools-evm-foundry/test/foundry/mocks/OFTMock.sol deleted file mode 100644 index 8bf50725a..000000000 --- a/packages/test-devtools-evm-foundry/test/foundry/mocks/OFTMock.sol +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.0; - -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { OFT } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/OFT.sol"; -import { SendParam } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/OFTCore.sol"; - -contract OFTMock is OFT { - constructor( - string memory _name, - string memory _symbol, - address _lzEndpoint, - address _delegate - ) Ownable(_delegate) OFT(_name, _symbol, _lzEndpoint, _delegate) {} - - function mint(address _to, uint256 _amount) public { - _mint(_to, _amount); - } - - function _credit( - address _to, - uint256 _amountLD, - uint32 /*_srcEid*/ - ) internal virtual override returns (uint256 amountReceivedLD) { - // @dev Default OFT mints on dst. - _mint(_to, _amountLD); - // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD. - return _amountLD; - } - - // @dev expose internal functions for testing purposes - function debit( - uint256 _amountToSendLD, - uint256 _minAmountToCreditLD, - uint32 _dstEid - ) public returns (uint256 amountDebitedLD, uint256 amountToCreditLD) { - return _debit(msg.sender, _amountToSendLD, _minAmountToCreditLD, _dstEid); - } - - function debitView( - uint256 _amountToSendLD, - uint256 _minAmountToCreditLD, - uint32 _dstEid - ) public view returns (uint256 amountDebitedLD, uint256 amountToCreditLD) { - return _debitView(_amountToSendLD, _minAmountToCreditLD, _dstEid); - } - - function removeDust(uint256 _amountLD) public view returns (uint256 amountLD) { - return _removeDust(_amountLD); - } - - function toLD(uint64 _amountSD) public view returns (uint256 amountLD) { - return _toLD(_amountSD); - } - - function toSD(uint256 _amountLD) public view returns (uint64 amountSD) { - return _toSD(_amountLD); - } - - function credit(address _to, uint256 _amountToCreditLD, uint32 _srcEid) public returns (uint256 amountReceivedLD) { - return _credit(_to, _amountToCreditLD, _srcEid); - } - - function buildMsgAndOptions( - SendParam calldata _sendParam, - uint256 _amountToCreditLD - ) public view returns (bytes memory message, bytes memory options) { - return _buildMsgAndOptions(_sendParam, _amountToCreditLD); - } -} \ No newline at end of file diff --git a/packages/test-devtools-evm-foundry/test/foundry/mocks/OmniCounter.sol b/packages/test-devtools-evm-foundry/test/foundry/mocks/OmniCounter.sol deleted file mode 100644 index 5eba68ffa..000000000 --- a/packages/test-devtools-evm-foundry/test/foundry/mocks/OmniCounter.sol +++ /dev/null @@ -1,274 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import { ILayerZeroEndpointV2, MessagingFee, MessagingReceipt, Origin } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol"; -import { ILayerZeroComposer } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol"; - -import { OApp } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/OApp.sol"; - -import { OptionsBuilder } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OptionsBuilder.sol"; -import { OAppPreCrimeSimulator } from "@layerzerolabs/lz-evm-oapp-v2/contracts/precrime/OAppPreCrimeSimulator.sol"; - -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; - -library MsgCodec { - uint8 internal constant VANILLA_TYPE = 1; - uint8 internal constant COMPOSED_TYPE = 2; - uint8 internal constant ABA_TYPE = 3; - uint8 internal constant COMPOSED_ABA_TYPE = 4; - - uint8 internal constant MSG_TYPE_OFFSET = 0; - uint8 internal constant SRC_EID_OFFSET = 1; - uint8 internal constant VALUE_OFFSET = 5; - - function encode(uint8 _type, uint32 _srcEid) internal pure returns (bytes memory) { - return abi.encodePacked(_type, _srcEid); - } - - function encode(uint8 _type, uint32 _srcEid, uint256 _value) internal pure returns (bytes memory) { - return abi.encodePacked(_type, _srcEid, _value); - } - - function msgType(bytes calldata _message) internal pure returns (uint8) { - return uint8(bytes1(_message[MSG_TYPE_OFFSET:SRC_EID_OFFSET])); - } - - function srcEid(bytes calldata _message) internal pure returns (uint32) { - return uint32(bytes4(_message[SRC_EID_OFFSET:VALUE_OFFSET])); - } - - function value(bytes calldata _message) internal pure returns (uint256) { - return uint256(bytes32(_message[VALUE_OFFSET:])); - } -} - -contract OmniCounter is ILayerZeroComposer, OApp, OAppPreCrimeSimulator { - using MsgCodec for bytes; - using OptionsBuilder for bytes; - - uint256 public count; - uint256 public composedCount; - - address public admin; - uint32 public eid; - - mapping(uint32 srcEid => mapping(bytes32 sender => uint64 nonce)) private maxReceivedNonce; - bool private orderedNonce; - - // for global assertions - mapping(uint32 srcEid => uint256 count) public inboundCount; - mapping(uint32 dstEid => uint256 count) public outboundCount; - - constructor(address _endpoint, address _delegate) OApp(_endpoint, _delegate) Ownable(_delegate) { - admin = msg.sender; - eid = ILayerZeroEndpointV2(_endpoint).eid(); - } - - modifier onlyAdmin() { - require(msg.sender == admin, "only admin"); - _; - } - - // ------------------------------- - // Only Admin - function setAdmin(address _admin) external onlyAdmin { - admin = _admin; - } - - function withdraw(address payable _to, uint256 _amount) external onlyAdmin { - (bool success, ) = _to.call{ value: _amount }(""); - require(success, "OmniCounter: withdraw failed"); - } - - // ------------------------------- - // Send - function increment(uint32 _eid, uint8 _type, bytes calldata _options) external payable { - // bytes memory options = combineOptions(_eid, _type, _options); - _lzSend(_eid, MsgCodec.encode(_type, eid), _options, MessagingFee(msg.value, 0), payable(msg.sender)); - _incrementOutbound(_eid); - } - - // this is a broken function to skip incrementing outbound count - // so that preCrime will fail - function brokenIncrement(uint32 _eid, uint8 _type, bytes calldata _options) external payable onlyAdmin { - // bytes memory options = combineOptions(_eid, _type, _options); - _lzSend(_eid, MsgCodec.encode(_type, eid), _options, MessagingFee(msg.value, 0), payable(msg.sender)); - } - - function batchIncrement( - uint32[] calldata _eids, - uint8[] calldata _types, - bytes[] calldata _options - ) external payable { - require(_eids.length == _options.length && _eids.length == _types.length, "OmniCounter: length mismatch"); - - MessagingReceipt memory receipt; - uint256 providedFee = msg.value; - for (uint256 i = 0; i < _eids.length; i++) { - address refundAddress = i == _eids.length - 1 ? msg.sender : address(this); - uint32 dstEid = _eids[i]; - uint8 msgType = _types[i]; - // bytes memory options = combineOptions(dstEid, msgType, _options[i]); - receipt = _lzSend( - dstEid, - MsgCodec.encode(msgType, eid), - _options[i], - MessagingFee(providedFee, 0), - payable(refundAddress) - ); - _incrementOutbound(dstEid); - providedFee -= receipt.fee.nativeFee; - } - } - - // ------------------------------- - // View - function quote( - uint32 _eid, - uint8 _type, - bytes calldata _options - ) public view returns (uint256 nativeFee, uint256 lzTokenFee) { - // bytes memory options = combineOptions(_eid, _type, _options); - MessagingFee memory fee = _quote(_eid, MsgCodec.encode(_type, eid), _options, false); - return (fee.nativeFee, fee.lzTokenFee); - } - - // @dev enables preCrime simulator - // @dev routes the call down from the OAppPreCrimeSimulator, and up to the OApp - function _lzReceiveSimulate( - Origin calldata _origin, - bytes32 _guid, - bytes calldata _message, - address _executor, - bytes calldata _extraData - ) internal virtual override { - _lzReceive(_origin, _guid, _message, _executor, _extraData); - } - - // ------------------------------- - function _lzReceive( - Origin calldata _origin, - bytes32 _guid, - bytes calldata _message, - address /*_executor*/, - bytes calldata /*_extraData*/ - ) internal override { - _acceptNonce(_origin.srcEid, _origin.sender, _origin.nonce); - uint8 messageType = _message.msgType(); - - if (messageType == MsgCodec.VANILLA_TYPE) { - count++; - - //////////////////////////////// IMPORTANT ////////////////////////////////// - /// if you request for msg.value in the options, you should also encode it - /// into your message and check the value received at destination (example below). - /// if not, the executor could potentially provide less msg.value than you requested - /// leading to unintended behavior. Another option is to assert the executor to be - /// one that you trust. - ///////////////////////////////////////////////////////////////////////////// - require(msg.value >= _message.value(), "OmniCounter: insufficient value"); - - _incrementInbound(_origin.srcEid); - } else if (messageType == MsgCodec.COMPOSED_TYPE || messageType == MsgCodec.COMPOSED_ABA_TYPE) { - count++; - _incrementInbound(_origin.srcEid); - endpoint.sendCompose(address(this), _guid, 0, _message); - } else if (messageType == MsgCodec.ABA_TYPE) { - count++; - _incrementInbound(_origin.srcEid); - - // send back to the sender - _incrementOutbound(_origin.srcEid); - bytes memory options = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 10); - _lzSend( - _origin.srcEid, - MsgCodec.encode(MsgCodec.VANILLA_TYPE, eid, 10), - options, - MessagingFee(msg.value, 0), - payable(address(this)) - ); - } else { - revert("invalid message type"); - } - } - - function _incrementInbound(uint32 _srcEid) internal { - inboundCount[_srcEid]++; - } - - function _incrementOutbound(uint32 _dstEid) internal { - outboundCount[_dstEid]++; - } - - function lzCompose( - address _oApp, - bytes32 /*_guid*/, - bytes calldata _message, - address, - bytes calldata - ) external payable override { - require(_oApp == address(this), "!oApp"); - require(msg.sender == address(endpoint), "!endpoint"); - - uint8 msgType = _message.msgType(); - if (msgType == MsgCodec.COMPOSED_TYPE) { - composedCount += 1; - } else if (msgType == MsgCodec.COMPOSED_ABA_TYPE) { - revert("not implemented"); - } else { - revert("invalid message type"); - } - } - - // ------------------------------- - // Ordered OApp - // this demonstrates how to build an app that requires execution nonce ordering - // normally an app should decide ordered or not on contract construction - // this is just a demo - function setOrderedNonce(bool _orderedNonce) external onlyOwner { - orderedNonce = _orderedNonce; - } - - function _acceptNonce(uint32 _srcEid, bytes32 _sender, uint64 _nonce) internal virtual { - uint64 currentNonce = maxReceivedNonce[_srcEid][_sender]; - if (orderedNonce) { - require(_nonce == currentNonce + 1, "OApp: invalid nonce"); - } - // update the max nonce anyway. once the ordered mode is turned on, missing early nonces will be rejected - if (_nonce > currentNonce) { - maxReceivedNonce[_srcEid][_sender] = _nonce; - } - } - - function nextNonce(uint32 _srcEid, bytes32 _sender) public view virtual override returns (uint64) { - if (orderedNonce) { - return maxReceivedNonce[_srcEid][_sender] + 1; - } else { - return 0; // path nonce starts from 1. if 0 it means that there is no specific nonce enforcement - } - } - - // TODO should override oApp version with added ordered nonce increment - // a governance function to skip nonce - function skipInboundNonce(uint32 _srcEid, bytes32 _sender, uint64 _nonce) public virtual onlyOwner { - endpoint.skip(address(this), _srcEid, _sender, _nonce); - if (orderedNonce) { - maxReceivedNonce[_srcEid][_sender]++; - } - } - - function isPeer(uint32 _eid, bytes32 _peer) public view override returns (bool) { - return peers[_eid] == _peer; - } - - // @dev Batch send requires overriding this function from OAppSender because the msg.value contains multiple fees - function _payNative(uint256 _nativeFee) internal virtual override returns (uint256 nativeFee) { - if (msg.value < _nativeFee) revert NotEnoughNative(msg.value); - return _nativeFee; - } - - // be able to receive ether - receive() external payable virtual {} - - fallback() external payable {} -} \ No newline at end of file diff --git a/packages/test-devtools-evm-hardhat/contracts/mocks/EndpointV2Mock.sol b/packages/test-devtools-evm-hardhat/contracts/mocks/EndpointV2Mock.sol index 2fdcf714a..3f66dfd15 100644 --- a/packages/test-devtools-evm-hardhat/contracts/mocks/EndpointV2Mock.sol +++ b/packages/test-devtools-evm-hardhat/contracts/mocks/EndpointV2Mock.sol @@ -8,8 +8,8 @@ import { ILayerZeroReceiver } from "@layerzerolabs/lz-evm-protocol-v2/contracts/ import { SetConfigParam } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol"; import { MessagingContext } from "@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol"; import { Packet } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol"; -import { OFTMsgCodec } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/libs/OFTMsgCodec.sol"; -import { Origin } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/OAppReceiver.sol"; +import { OFTMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol"; +import { Origin } from "@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol"; import { Errors } from "@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol"; import { GUID } from "@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol"; import { ExecutorOptions } from "@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol"; diff --git a/packages/test-devtools-evm-hardhat/package.json b/packages/test-devtools-evm-hardhat/package.json index 5fd895340..6700dac73 100644 --- a/packages/test-devtools-evm-hardhat/package.json +++ b/packages/test-devtools-evm-hardhat/package.json @@ -35,9 +35,10 @@ }, "devDependencies": { "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.34", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.34", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.34", "@layerzerolabs/lz-evm-v1-0.7": "^2.3.34", + "@layerzerolabs/oapp-evm": "^0.0.2", + "@layerzerolabs/oft-evm": "^0.0.9", "@openzeppelin/contracts": "^4.9.5", "@openzeppelin/contracts-upgradeable": "^4.9.5", "hardhat": "^2.22.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7a26f02a..c2af726ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -89,9 +89,6 @@ importers: '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^2.3.34 version: 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.34 - version: 2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) '@layerzerolabs/lz-evm-protocol-v2': specifier: ^2.3.34 version: 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -101,6 +98,9 @@ importers: '@layerzerolabs/lz-v2-utilities': specifier: ^2.3.34 version: 2.3.34 + '@layerzerolabs/oapp-evm': + specifier: ^0.0.2 + version: link:../../packages/oapp-evm '@layerzerolabs/prettier-config-next': specifier: ^2.3.34 version: 2.3.34 @@ -1420,9 +1420,6 @@ importers: '@layerzerolabs/toolbox-foundry': specifier: ^0.1.9 version: link:../toolbox-foundry - '@layerzerolabs/toolbox-hardhat': - specifier: ~0.3.3 - version: link:../toolbox-hardhat '@openzeppelin/contracts': specifier: ^5.0.2 version: 5.0.2 @@ -1431,10 +1428,6 @@ importers: version: 5.0.2(@openzeppelin/contracts@5.0.2) packages/oft-evm: - dependencies: - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.29 - version: 2.3.29(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) devDependencies: '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^2.3.34 @@ -1826,13 +1819,17 @@ importers: version: 5.5.4 packages/test-devtools-evm-foundry: + dependencies: + '@layerzerolabs/oapp-evm': + specifier: ^0.0.2 + version: link:../oapp-evm + '@layerzerolabs/oft-evm': + specifier: ^0.0.9 + version: link:../oft-evm devDependencies: '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^2.3.34 version: 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.34 - version: 2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) '@layerzerolabs/lz-evm-protocol-v2': specifier: ^2.3.34 version: 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -1866,15 +1863,18 @@ importers: '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^2.3.34 version: 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.34 - version: 2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) '@layerzerolabs/lz-evm-protocol-v2': specifier: ^2.3.34 version: 2.3.34(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) '@layerzerolabs/lz-evm-v1-0.7': specifier: ^2.3.34 version: 2.3.34(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4) + '@layerzerolabs/oapp-evm': + specifier: ^0.0.2 + version: link:../oapp-evm + '@layerzerolabs/oft-evm': + specifier: ^0.0.9 + version: link:../oft-evm '@openzeppelin/contracts': specifier: ^4.9.5 version: 4.9.5 @@ -2467,9 +2467,6 @@ importers: '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^2.3.34 version: 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.34 - version: 2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) '@layerzerolabs/lz-evm-protocol-v2': specifier: ^2.3.34 version: 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -2482,6 +2479,9 @@ importers: '@layerzerolabs/lz-v2-utilities': specifier: ^2.3.34 version: 2.3.34 + '@layerzerolabs/oapp-evm': + specifier: ^0.0.2 + version: link:../../packages/oapp-evm '@layerzerolabs/omnicounter-devtools': specifier: ~1.0.1 version: link:../../packages/omnicounter-devtools @@ -2605,9 +2605,6 @@ importers: '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^2.3.34 version: 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.34 - version: 2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) '@layerzerolabs/lz-evm-protocol-v2': specifier: ^2.3.34 version: 2.3.34(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -2938,9 +2935,6 @@ importers: '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^2.3.34 version: 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.34 - version: 2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) '@layerzerolabs/lz-evm-protocol-v2': specifier: ^2.3.34 version: 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -2953,6 +2947,9 @@ importers: '@layerzerolabs/lz-v2-utilities': specifier: ^2.3.34 version: 2.3.34 + '@layerzerolabs/oapp-evm': + specifier: ^0.0.2 + version: link:../../packages/oapp-evm '@layerzerolabs/omnicounter-devtools': specifier: ~1.0.1 version: link:../../packages/omnicounter-devtools @@ -3079,9 +3076,6 @@ importers: '@layerzerolabs/lz-evm-oapp-v1': specifier: ^2.3.34 version: 2.3.34(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.34 - version: 2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) '@layerzerolabs/lz-evm-protocol-v2': specifier: ^2.3.34 version: 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -3097,6 +3091,9 @@ importers: '@layerzerolabs/lz-v2-utilities': specifier: ^2.3.34 version: 2.3.34 + '@layerzerolabs/oapp-evm': + specifier: ^0.0.2 + version: link:../../packages/oapp-evm '@layerzerolabs/omnicounter-devtools': specifier: ~1.0.1 version: link:../../packages/omnicounter-devtools @@ -3189,6 +3186,7 @@ packages: /@axelar-network/axelar-gmp-sdk-solidity@5.10.0: resolution: {integrity: sha512-s8SImALvYB+5AeiT3tbfWNBI2Mhqw1x91i/zM3DNpVUCnAR2HKtsB9T84KnUn/OJjOVgb4h0lv7q9smeYniRPw==} engines: {node: '>=18'} + dev: true /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} @@ -3544,6 +3542,7 @@ packages: - bufferutil - ethers - utf-8-validate + dev: true /@changesets/apply-release-plan@7.0.0: resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} @@ -4261,6 +4260,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: true /@eth-optimism/contracts@0.6.0(ethers@5.7.2): resolution: {integrity: sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==} @@ -4274,6 +4274,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: true /@eth-optimism/core-utils@0.12.0: resolution: {integrity: sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==} @@ -4297,6 +4298,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: true /@ethereumjs/common@2.6.5: resolution: {integrity: sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==} @@ -5087,6 +5089,7 @@ packages: '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) hardhat-deploy: 0.12.4 solidity-bytes-utils: 0.8.2 + dev: true /@layerzerolabs/lz-evm-oapp-v1@2.3.34(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2): resolution: {integrity: sha512-hGuPENZQ3By87gJruhnkYTMiHlcTdK6WYFMzVaE0MM2CyD9zzrV71+tGZIIggC/z1VNQ8rbGc7mMTbk6AY9Jjg==} @@ -5109,106 +5112,6 @@ packages: - utf-8-validate dev: true - /@layerzerolabs/lz-evm-oapp-v2@2.3.29(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): - resolution: {integrity: sha512-HFuHVCUjZNOjKuhRDBbK2NSGA7sMwFhXRqy0veym9kECDwtHdazLfYmOGhu1amRfomc+eq+KBakJl2XI8njM6Q==} - peerDependencies: - '@layerzerolabs/lz-evm-messagelib-v2': ^2.3.29 - '@layerzerolabs/lz-evm-protocol-v2': ^2.3.29 - '@layerzerolabs/lz-evm-v1-0.7': ^2.3.29 - '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 - hardhat-deploy: ^0.12.1 - solidity-bytes-utils: ^0.8.0 - dependencies: - '@layerzerolabs/lz-evm-messagelib-v2': 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-protocol-v2': 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-v1-0.7': 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) - '@openzeppelin/contracts': 5.0.2 - '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - hardhat-deploy: 0.12.4 - solidity-bytes-utils: 0.8.2 - dev: false - - /@layerzerolabs/lz-evm-oapp-v2@2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2): - resolution: {integrity: sha512-f7GaBFP3HXnegejUYGtPnuETwcnogl+J36krgNa1qe6Ucy2tUu21CE882THITUi/apbO4TStFbaASAFUh64asg==} - peerDependencies: - '@layerzerolabs/lz-evm-messagelib-v2': ^2.3.34 - '@layerzerolabs/lz-evm-protocol-v2': ^2.3.34 - '@layerzerolabs/lz-evm-v1-0.7': ^2.3.34 - '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 - hardhat-deploy: ^0.12.1 - solidity-bytes-utils: ^0.8.0 - dependencies: - '@layerzerolabs/lz-evm-messagelib-v2': 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-protocol-v2': 2.3.34(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-v1-0.7': 2.3.34(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1) - '@openzeppelin/contracts': 4.9.5 - '@openzeppelin/contracts-upgradeable': 4.9.5 - hardhat-deploy: 0.12.1 - solidity-bytes-utils: 0.8.2 - dev: true - - /@layerzerolabs/lz-evm-oapp-v2@2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): - resolution: {integrity: sha512-f7GaBFP3HXnegejUYGtPnuETwcnogl+J36krgNa1qe6Ucy2tUu21CE882THITUi/apbO4TStFbaASAFUh64asg==} - peerDependencies: - '@layerzerolabs/lz-evm-messagelib-v2': ^2.3.34 - '@layerzerolabs/lz-evm-protocol-v2': ^2.3.34 - '@layerzerolabs/lz-evm-v1-0.7': ^2.3.34 - '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 - hardhat-deploy: ^0.12.1 - solidity-bytes-utils: ^0.8.0 - dependencies: - '@layerzerolabs/lz-evm-messagelib-v2': 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-protocol-v2': 2.3.34(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-v1-0.7': 2.3.34(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.4) - '@openzeppelin/contracts': 4.9.5 - '@openzeppelin/contracts-upgradeable': 4.9.5 - hardhat-deploy: 0.12.4 - solidity-bytes-utils: 0.8.2 - dev: true - - /@layerzerolabs/lz-evm-oapp-v2@2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2): - resolution: {integrity: sha512-f7GaBFP3HXnegejUYGtPnuETwcnogl+J36krgNa1qe6Ucy2tUu21CE882THITUi/apbO4TStFbaASAFUh64asg==} - peerDependencies: - '@layerzerolabs/lz-evm-messagelib-v2': ^2.3.34 - '@layerzerolabs/lz-evm-protocol-v2': ^2.3.34 - '@layerzerolabs/lz-evm-v1-0.7': ^2.3.34 - '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 - hardhat-deploy: ^0.12.1 - solidity-bytes-utils: ^0.8.0 - dependencies: - '@layerzerolabs/lz-evm-messagelib-v2': 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-protocol-v2': 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-v1-0.7': 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1) - '@openzeppelin/contracts': 5.0.2 - '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - hardhat-deploy: 0.12.1 - solidity-bytes-utils: 0.8.2 - dev: true - - /@layerzerolabs/lz-evm-oapp-v2@2.3.34(@layerzerolabs/lz-evm-messagelib-v2@2.3.34)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2): - resolution: {integrity: sha512-f7GaBFP3HXnegejUYGtPnuETwcnogl+J36krgNa1qe6Ucy2tUu21CE882THITUi/apbO4TStFbaASAFUh64asg==} - peerDependencies: - '@layerzerolabs/lz-evm-messagelib-v2': ^2.3.34 - '@layerzerolabs/lz-evm-protocol-v2': ^2.3.34 - '@layerzerolabs/lz-evm-v1-0.7': ^2.3.34 - '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 - hardhat-deploy: ^0.12.1 - solidity-bytes-utils: ^0.8.0 - dependencies: - '@layerzerolabs/lz-evm-messagelib-v2': 2.3.34(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.34)(@layerzerolabs/lz-evm-v1-0.7@2.3.34)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-protocol-v2': 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-v1-0.7': 2.3.34(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) - '@openzeppelin/contracts': 5.0.2 - '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - hardhat-deploy: 0.12.4 - solidity-bytes-utils: 0.8.2 - dev: true - /@layerzerolabs/lz-evm-protocol-v2@2.3.34(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2): resolution: {integrity: sha512-8IK4MtGbzPNGN9nOvXgEHcuVt92s8L07R9A6xgrhEfkTbEoZPI3lMNoXJVoA4V5C1NWyrKOelyL8EeiPGU0c5A==} peerDependencies: @@ -5263,6 +5166,7 @@ packages: '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) hardhat-deploy: 0.12.4 solidity-bytes-utils: 0.8.2 + dev: true /@layerzerolabs/lz-evm-sdk-v1@2.3.34: resolution: {integrity: sha512-geZB1oMp+1N1JwIOk4x5gy4XRSqfgTqCgBbICAwV6N5SY8EEou2yqp0dHNf0E5SRZ/8U7nPCNS2SIQBBtykSZw==} @@ -5330,6 +5234,7 @@ packages: '@openzeppelin/contracts': 5.0.2 '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) hardhat-deploy: 0.12.4 + dev: true /@layerzerolabs/lz-solana-sdk-v2@2.3.34(fastestsmallesttextencoderdecoder@1.0.22): resolution: {integrity: sha512-68LmynAbsKOhLVWK9Z1jeAFoY/MdPsLmZCAjlpGvcGh/CB9AyNcHtkgXO+go78TZELeb/9Qj0DR8LWnlgcINTg==} @@ -5938,6 +5843,7 @@ packages: /@openzeppelin/contracts-upgradeable@4.7.3: resolution: {integrity: sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==} + dev: true /@openzeppelin/contracts-upgradeable@4.9.5: resolution: {integrity: sha512-f7L1//4sLlflAN7fVzJLoRedrf5Na3Oal5PZfIq55NFcVZ90EpV1q5xOvL4lFvg3MNICSDr2hH0JUBxwlxcoPg==} @@ -5949,12 +5855,15 @@ packages: '@openzeppelin/contracts': 5.0.2 dependencies: '@openzeppelin/contracts': 5.0.2 + dev: true /@openzeppelin/contracts@3.4.2: resolution: {integrity: sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==} + dev: true /@openzeppelin/contracts@4.3.3: resolution: {integrity: sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==} + dev: true /@openzeppelin/contracts@4.9.5: resolution: {integrity: sha512-ZK+W5mVhRppff9BE6YdR8CC52C8zAvsVAiWhEtQ5+oNxFE6h1WdeWo+FJSF8KKvtxxVYZ7MTP/5KoVpAU3aSWg==} @@ -5962,6 +5871,7 @@ packages: /@openzeppelin/contracts@5.0.2: resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} + dev: true /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -6903,6 +6813,7 @@ packages: /@types/qs@6.9.15: resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + dev: true /@types/react@17.0.75: resolution: {integrity: sha512-MSA+NzEzXnQKrqpO63CYqNstFjsESgvJAdAyyJ1n6ZQq/GLgf6nOfIKwk+Twuz0L1N6xPe+qz5xRCJrbhMaLsw==} @@ -7470,6 +7381,7 @@ packages: /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true /ast-metadata-inferer@0.8.0: resolution: {integrity: sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA==} @@ -7532,6 +7444,7 @@ packages: follow-redirects: 1.15.5(debug@4.3.5) transitivePeerDependencies: - debug + dev: true /babel-jest@29.7.0(@babel/core@7.23.9): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} @@ -7870,6 +7783,7 @@ packages: /bufio@1.2.1: resolution: {integrity: sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA==} engines: {node: '>=14.0.0'} + dev: true /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} @@ -8018,6 +7932,7 @@ packages: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.1.0 + dev: true /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -8052,6 +7967,7 @@ packages: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 + dev: true /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -8613,6 +8529,7 @@ packages: engines: {node: '>=6'} dependencies: type-detect: 4.1.0 + dev: true /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -8829,6 +8746,7 @@ packages: /encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + dev: true /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -10040,6 +9958,7 @@ packages: resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} dependencies: imul: 1.0.1 + dev: true /fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -10067,6 +9986,7 @@ packages: optional: true dependencies: debug: 4.3.5 + dev: true /follow-redirects@1.15.6(debug@4.3.5): resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} @@ -10098,6 +10018,7 @@ packages: /forge-std@1.1.2: resolution: {integrity: sha512-Wfb0iAS9PcfjMKtGpWQw9mXzJxrWD62kJCUqqLcyuI0+VRtJ3j20XembjF3kS20qELYdXft1vD/SPFVWVKMFOw==} + dev: true /form-data-encoder@1.7.1: resolution: {integrity: sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==} @@ -10124,6 +10045,7 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} @@ -10157,6 +10079,7 @@ packages: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + dev: true /fs-extra@4.0.3: resolution: {integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==} @@ -10243,6 +10166,7 @@ packages: /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} @@ -10651,6 +10575,7 @@ packages: - bufferutil - supports-color - utf-8-validate + dev: true /hardhat@2.22.3(ts-node@10.9.2)(typescript@5.5.4): resolution: {integrity: sha512-k8JV2ECWNchD6ahkg2BR5wKVxY0OiKot7fuxiIpRK0frRqyOljcR2vKwgWSLw6YIeDcNNA4xybj7Og7NSxr2hA==} @@ -10934,6 +10859,7 @@ packages: /imul@1.0.1: resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==} engines: {node: '>=0.10.0'} + dev: true /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -11997,6 +11923,7 @@ packages: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + dev: true /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -12228,6 +12155,7 @@ packages: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 + dev: true /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -12310,6 +12238,7 @@ packages: /match-all@1.2.6: resolution: {integrity: sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==} + dev: true /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} @@ -12652,6 +12581,7 @@ packages: encode-utf8: 1.0.3 fmix: 0.1.0 imul: 1.0.1 + dev: true /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -13115,6 +13045,7 @@ packages: /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true /pbkdf2@3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} @@ -13340,6 +13271,7 @@ packages: engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 + dev: true /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} @@ -14142,6 +14074,7 @@ packages: dependencies: ds-test: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: 1.1.2 + dev: true /solidity-comments-extractor@0.0.8: resolution: {integrity: sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g==} @@ -14950,6 +14883,7 @@ packages: /type-detect@4.1.0: resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} + dev: true /type-fest@0.12.0: resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==} @@ -15080,6 +15014,7 @@ packages: /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + dev: true /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} @@ -15902,6 +15837,7 @@ packages: ethers: ^5.7.2 dependencies: ethers: 5.7.2 + dev: true /zksync-web3@0.14.4(ethers@5.7.2): resolution: {integrity: sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==} @@ -15930,3 +15866,4 @@ packages: resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} name: ds-test version: 1.0.0 + dev: true diff --git a/tests/devtools-cli-test/contracts/DefaultOApp.sol b/tests/devtools-cli-test/contracts/DefaultOApp.sol index 81b2e7535..1c3547796 100644 --- a/tests/devtools-cli-test/contracts/DefaultOApp.sol +++ b/tests/devtools-cli-test/contracts/DefaultOApp.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.22; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { OApp, Origin } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/OApp.sol"; -import { OAppOptionsType3 } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OAppOptionsType3.sol"; +import { OApp, Origin } from "@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol"; +import { OAppOptionsType3 } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol"; contract DefaultOApp is OApp, OAppOptionsType3 { event CallerBpsCapSet(uint256 callerBpsCap); diff --git a/tests/devtools-cli-test/package.json b/tests/devtools-cli-test/package.json index 40798782c..f62a62b80 100644 --- a/tests/devtools-cli-test/package.json +++ b/tests/devtools-cli-test/package.json @@ -32,11 +32,11 @@ "@layerzerolabs/io-devtools": "~0.1.12", "@layerzerolabs/lz-definitions": "^2.3.34", "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.34", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.34", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.34", "@layerzerolabs/lz-evm-sdk-v1": "^2.3.34", "@layerzerolabs/lz-evm-sdk-v2": "^2.3.34", "@layerzerolabs/lz-v2-utilities": "^2.3.34", + "@layerzerolabs/oapp-evm": "^0.0.2", "@layerzerolabs/omnicounter-devtools": "~1.0.1", "@layerzerolabs/omnicounter-devtools-evm": "~1.0.1", "@layerzerolabs/protocol-devtools": "~0.4.2", diff --git a/tests/devtools-evm-hardhat-test/package.json b/tests/devtools-evm-hardhat-test/package.json index 3bbd25c57..89193758d 100644 --- a/tests/devtools-evm-hardhat-test/package.json +++ b/tests/devtools-evm-hardhat-test/package.json @@ -31,7 +31,6 @@ "@layerzerolabs/io-devtools": "~0.1.12", "@layerzerolabs/lz-definitions": "^2.3.34", "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.34", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.34", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.34", "@layerzerolabs/lz-evm-sdk-v1": "^2.3.34", "@layerzerolabs/lz-evm-sdk-v2": "^2.3.34", diff --git a/tests/ua-devtools-evm-hardhat-test/contracts/CustomOApp.sol b/tests/ua-devtools-evm-hardhat-test/contracts/CustomOApp.sol index c61b6002f..a1359f22f 100644 --- a/tests/ua-devtools-evm-hardhat-test/contracts/CustomOApp.sol +++ b/tests/ua-devtools-evm-hardhat-test/contracts/CustomOApp.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.22; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { OApp, Origin } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/OApp.sol"; +import { OApp, Origin } from "@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol"; contract CustomOApp is OApp { uint256 private _customProperty; @@ -15,7 +15,7 @@ contract CustomOApp is OApp { return _customProperty; } - function setCustomProperty(uint256 value) external onlyOwner() { + function setCustomProperty(uint256 value) external onlyOwner { _customProperty = value; } } diff --git a/tests/ua-devtools-evm-hardhat-test/contracts/DefaultOApp.sol b/tests/ua-devtools-evm-hardhat-test/contracts/DefaultOApp.sol index 81b2e7535..1c3547796 100644 --- a/tests/ua-devtools-evm-hardhat-test/contracts/DefaultOApp.sol +++ b/tests/ua-devtools-evm-hardhat-test/contracts/DefaultOApp.sol @@ -2,8 +2,8 @@ pragma solidity ^0.8.22; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { OApp, Origin } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/OApp.sol"; -import { OAppOptionsType3 } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OAppOptionsType3.sol"; +import { OApp, Origin } from "@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol"; +import { OAppOptionsType3 } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol"; contract DefaultOApp is OApp, OAppOptionsType3 { event CallerBpsCapSet(uint256 callerBpsCap); diff --git a/tests/ua-devtools-evm-hardhat-test/contracts/OmniCounter.sol b/tests/ua-devtools-evm-hardhat-test/contracts/OmniCounter.sol index 346684601..be656c3e1 100644 --- a/tests/ua-devtools-evm-hardhat-test/contracts/OmniCounter.sol +++ b/tests/ua-devtools-evm-hardhat-test/contracts/OmniCounter.sol @@ -1,9 +1,287 @@ // SPDX-License-Identifier: UNLICENSED + pragma solidity ^0.8.22; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { OmniCounterAbstract as OmniCounterImpl } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/examples/OmniCounterAbstract.sol"; -contract OmniCounter is OmniCounterImpl { - constructor(address _endpoint, address _delegate) OmniCounterImpl(_endpoint, _delegate) Ownable(_delegate) {} +import { ILayerZeroEndpointV2, MessagingFee, MessagingReceipt, Origin } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol"; +import { ILayerZeroComposer } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol"; + +import { OApp } from "@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol"; +import { OAppOptionsType3 } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol"; +import { OptionsBuilder } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol"; +import { OAppPreCrimeSimulator } from "@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol"; + +library MsgCodec { + uint8 internal constant VANILLA_TYPE = 1; + uint8 internal constant COMPOSED_TYPE = 2; + uint8 internal constant ABA_TYPE = 3; + uint8 internal constant COMPOSED_ABA_TYPE = 4; + + uint8 internal constant MSG_TYPE_OFFSET = 0; + uint8 internal constant SRC_EID_OFFSET = 1; + uint8 internal constant VALUE_OFFSET = 5; + + function encode(uint8 _type, uint32 _srcEid) internal pure returns (bytes memory) { + return abi.encodePacked(_type, _srcEid); + } + + function encode(uint8 _type, uint32 _srcEid, uint256 _value) internal pure returns (bytes memory) { + return abi.encodePacked(_type, _srcEid, _value); + } + + function msgType(bytes calldata _message) internal pure returns (uint8) { + return uint8(bytes1(_message[MSG_TYPE_OFFSET:SRC_EID_OFFSET])); + } + + function srcEid(bytes calldata _message) internal pure returns (uint32) { + return uint32(bytes4(_message[SRC_EID_OFFSET:VALUE_OFFSET])); + } + + function value(bytes calldata _message) internal pure returns (uint256) { + return uint256(bytes32(_message[VALUE_OFFSET:])); + } +} + +contract OmniCounter is ILayerZeroComposer, OApp, OAppPreCrimeSimulator { + using MsgCodec for bytes; + using OptionsBuilder for bytes; + + uint256 public count; + uint256 public composedCount; + + address public admin; + uint32 public eid; + + mapping(uint32 srcEid => mapping(bytes32 sender => uint64 nonce)) private maxReceivedNonce; + bool private orderedNonce; + + // for global assertions + mapping(uint32 srcEid => uint256 count) public inboundCount; + mapping(uint32 dstEid => uint256 count) public outboundCount; + + constructor(address _endpoint, address _delegate) OApp(_endpoint, _delegate) Ownable(_delegate) { + admin = msg.sender; + eid = ILayerZeroEndpointV2(_endpoint).eid(); + } + + modifier onlyAdmin() { + require(msg.sender == admin, "only admin"); + _; + } + + // ------------------------------- + // Only Admin + function setAdmin(address _admin) external onlyAdmin { + admin = _admin; + } + + function withdraw(address payable _to, uint256 _amount) external onlyAdmin { + (bool success, ) = _to.call{ value: _amount }(""); + require(success, "OmniCounter: withdraw failed"); + } + + // ------------------------------- + // Send + function increment(uint32 _eid, uint8 _type, bytes calldata _options) external payable { + // bytes memory options = combineOptions(_eid, _type, _options); + _lzSend(_eid, MsgCodec.encode(_type, eid), _options, MessagingFee(msg.value, 0), payable(msg.sender)); + _incrementOutbound(_eid); + } + + // this is a broken function to skip incrementing outbound count + // so that preCrime will fail + function brokenIncrement(uint32 _eid, uint8 _type, bytes calldata _options) external payable onlyAdmin { + // bytes memory options = combineOptions(_eid, _type, _options); + _lzSend(_eid, MsgCodec.encode(_type, eid), _options, MessagingFee(msg.value, 0), payable(msg.sender)); + // _incrementOutbound(_eid); // mock method which intentionally does not increment outboundCount to cause a PreCrime Crime + } + + function batchIncrement( + uint32[] calldata _eids, + uint8[] calldata _types, + bytes[] calldata _options + ) external payable { + require(_eids.length == _options.length && _eids.length == _types.length, "OmniCounter: length mismatch"); + + MessagingReceipt memory receipt; + uint256 providedFee = msg.value; + for (uint256 i = 0; i < _eids.length; i++) { + address refundAddress = i == _eids.length - 1 ? msg.sender : address(this); + uint32 dstEid = _eids[i]; + uint8 msgType = _types[i]; + // bytes memory options = combineOptions(dstEid, msgType, _options[i]); + receipt = _lzSend( + dstEid, + MsgCodec.encode(msgType, eid), + _options[i], + MessagingFee(providedFee, 0), + payable(refundAddress) + ); + _incrementOutbound(dstEid); + providedFee -= receipt.fee.nativeFee; + } + } + + // ------------------------------- + // View + function quote( + uint32 _eid, + uint8 _type, + bytes calldata _options + ) public view returns (uint256 nativeFee, uint256 lzTokenFee) { + // bytes memory options = combineOptions(_eid, _type, _options); + MessagingFee memory fee = _quote(_eid, MsgCodec.encode(_type, eid), _options, false); + return (fee.nativeFee, fee.lzTokenFee); + } + + // @dev enables preCrime simulator + // @dev routes the call down from the OAppPreCrimeSimulator, and up to the OApp + function _lzReceiveSimulate( + Origin calldata _origin, + bytes32 _guid, + bytes calldata _message, + address _executor, + bytes calldata _extraData + ) internal virtual override { + _lzReceive(_origin, _guid, _message, _executor, _extraData); + } + + // ------------------------------- + function _lzReceive( + Origin calldata _origin, + bytes32 _guid, + bytes calldata _message, + address /*_executor*/, + bytes calldata /*_extraData*/ + ) internal override { + _acceptNonce(_origin.srcEid, _origin.sender, _origin.nonce); + uint8 messageType = _message.msgType(); + + if (messageType == MsgCodec.VANILLA_TYPE) { + count++; + + //////////////////////////////// IMPORTANT ////////////////////////////////// + /// if you request for msg.value in the options, you should also encode it + /// into your message and check the value received at destination (example below). + /// if not, the executor could potentially provide less msg.value than you requested + /// leading to unintended behavior. Another option is to assert the executor to be + /// one that you trust. + ///////////////////////////////////////////////////////////////////////////// + require(msg.value >= _message.value(), "OmniCounter: insufficient value"); + + _incrementInbound(_origin.srcEid); + } else if (messageType == MsgCodec.COMPOSED_TYPE || messageType == MsgCodec.COMPOSED_ABA_TYPE) { + count++; + _incrementInbound(_origin.srcEid); + endpoint.sendCompose(address(this), _guid, 0, _message); + } else if (messageType == MsgCodec.ABA_TYPE) { + count++; + _incrementInbound(_origin.srcEid); + + // send back to the sender + _incrementOutbound(_origin.srcEid); + bytes memory options = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 10); + _lzSend( + _origin.srcEid, + MsgCodec.encode(MsgCodec.VANILLA_TYPE, eid, 10), + options, + MessagingFee(msg.value, 0), + payable(address(this)) + ); + } else { + revert("invalid message type"); + } + } + + function _incrementInbound(uint32 _srcEid) internal { + inboundCount[_srcEid]++; + } + + function _incrementOutbound(uint32 _dstEid) internal { + outboundCount[_dstEid]++; + } + + function lzCompose( + address _oApp, + bytes32 /*_guid*/, + bytes calldata _message, + address, + bytes calldata + ) external payable override { + require(_oApp == address(this), "!oApp"); + require(msg.sender == address(endpoint), "!endpoint"); + + uint8 msgType = _message.msgType(); + if (msgType == MsgCodec.COMPOSED_TYPE) { + composedCount += 1; + } else if (msgType == MsgCodec.COMPOSED_ABA_TYPE) { + composedCount += 1; + + uint32 srcEid = _message.srcEid(); + _incrementOutbound(srcEid); + bytes memory options = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0); + _lzSend( + srcEid, + MsgCodec.encode(MsgCodec.VANILLA_TYPE, eid), + options, + MessagingFee(msg.value, 0), + payable(address(this)) + ); + } else { + revert("invalid message type"); + } + } + + // ------------------------------- + // Ordered OApp + // this demonstrates how to build an app that requires execution nonce ordering + // normally an app should decide ordered or not on contract construction + // this is just a demo + function setOrderedNonce(bool _orderedNonce) external onlyOwner { + orderedNonce = _orderedNonce; + } + + function _acceptNonce(uint32 _srcEid, bytes32 _sender, uint64 _nonce) internal virtual { + uint64 currentNonce = maxReceivedNonce[_srcEid][_sender]; + if (orderedNonce) { + require(_nonce == currentNonce + 1, "OApp: invalid nonce"); + } + // update the max nonce anyway. once the ordered mode is turned on, missing early nonces will be rejected + if (_nonce > currentNonce) { + maxReceivedNonce[_srcEid][_sender] = _nonce; + } + } + + function nextNonce(uint32 _srcEid, bytes32 _sender) public view virtual override returns (uint64) { + if (orderedNonce) { + return maxReceivedNonce[_srcEid][_sender] + 1; + } else { + return 0; // path nonce starts from 1. if 0 it means that there is no specific nonce enforcement + } + } + + // TODO should override oApp version with added ordered nonce increment + // a governance function to skip nonce + function skipInboundNonce(uint32 _srcEid, bytes32 _sender, uint64 _nonce) public virtual onlyOwner { + endpoint.skip(address(this), _srcEid, _sender, _nonce); + if (orderedNonce) { + maxReceivedNonce[_srcEid][_sender]++; + } + } + + function isPeer(uint32 _eid, bytes32 _peer) public view override returns (bool) { + return peers[_eid] == _peer; + } + + // @dev Batch send requires overriding this function from OAppSender because the msg.value contains multiple fees + function _payNative(uint256 _nativeFee) internal virtual override returns (uint256 nativeFee) { + if (msg.value < _nativeFee) revert NotEnoughNative(msg.value); + return _nativeFee; + } + + // be able to receive ether + receive() external payable virtual {} + + fallback() external payable {} } diff --git a/tests/ua-devtools-evm-hardhat-test/package.json b/tests/ua-devtools-evm-hardhat-test/package.json index 8a8966d16..9da039276 100644 --- a/tests/ua-devtools-evm-hardhat-test/package.json +++ b/tests/ua-devtools-evm-hardhat-test/package.json @@ -31,11 +31,11 @@ "@layerzerolabs/io-devtools": "~0.1.12", "@layerzerolabs/lz-definitions": "^2.3.34", "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.34", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.34", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.34", "@layerzerolabs/lz-evm-sdk-v1": "^2.3.34", "@layerzerolabs/lz-evm-sdk-v2": "^2.3.34", "@layerzerolabs/lz-v2-utilities": "^2.3.34", + "@layerzerolabs/oapp-evm": "^0.0.2", "@layerzerolabs/omnicounter-devtools": "~1.0.1", "@layerzerolabs/omnicounter-devtools-evm": "~1.0.1", "@layerzerolabs/protocol-devtools": "~0.4.2", diff --git a/tests/ua-devtools-evm-hardhat-test/test/task/errors/__snapshots__/list.test.ts.snap b/tests/ua-devtools-evm-hardhat-test/test/task/errors/__snapshots__/list.test.ts.snap index 62a95f31e..b6907693c 100644 --- a/tests/ua-devtools-evm-hardhat-test/test/task/errors/__snapshots__/list.test.ts.snap +++ b/tests/ua-devtools-evm-hardhat-test/test/task/errors/__snapshots__/list.test.ts.snap @@ -13,6 +13,31 @@ exports[`task lz:errors:list should print all errors with matching name if \`con "Error": "DVN_InvalidDVNOptions(uint256)", "Signature": "0x04eb6e0c", }, + { + "Contract": "AddressCast", + "Error": "AddressCast_InvalidAddress()", + "Signature": "0x6281faa2", + }, + { + "Contract": "AddressCast", + "Error": "AddressCast_InvalidSizeForAddress()", + "Signature": "0x18456c9b", + }, + { + "Contract": "ExecutorOptions", + "Error": "Executor_InvalidLzComposeOption()", + "Signature": "0x8b4aa70b", + }, + { + "Contract": "ExecutorOptions", + "Error": "Executor_InvalidLzReceiveOption()", + "Signature": "0x4796aee1", + }, + { + "Contract": "ExecutorOptions", + "Error": "Executor_InvalidNativeDropOption()", + "Signature": "0xc3a1858e", + }, { "Contract": "OApp", "Error": "InvalidDelegate()", @@ -73,26 +98,6 @@ exports[`task lz:errors:list should print all errors with matching name if \`con "Error": "OwnableInvalidOwner(address)", "Signature": "0x1e4fbdf7", }, - { - "Contract": "OmniCounterAbstract", - "Error": "InvalidDelegate()", - "Signature": "0xb5863604", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "InvalidEndpointCall()", - "Signature": "0x0fbdec0a", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "InvalidOptionType(uint16)", - "Signature": "0x3a51740d", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "OwnableInvalidOwner(address)", - "Signature": "0x1e4fbdf7", - }, { "Contract": "IOAppCore", "Error": "InvalidDelegate()", @@ -138,31 +143,6 @@ exports[`task lz:errors:list should print all errors with matching name if \`con "Error": "InvalidSimulationResult(uint32,bytes)", "Signature": "0x572e17ee", }, - { - "Contract": "AddressCast", - "Error": "AddressCast_InvalidAddress()", - "Signature": "0x6281faa2", - }, - { - "Contract": "AddressCast", - "Error": "AddressCast_InvalidSizeForAddress()", - "Signature": "0x18456c9b", - }, - { - "Contract": "ExecutorOptions", - "Error": "Executor_InvalidLzComposeOption()", - "Signature": "0x8b4aa70b", - }, - { - "Contract": "ExecutorOptions", - "Error": "Executor_InvalidLzReceiveOption()", - "Signature": "0x4796aee1", - }, - { - "Contract": "ExecutorOptions", - "Error": "Executor_InvalidNativeDropOption()", - "Signature": "0xc3a1858e", - }, { "Contract": "Ownable", "Error": "OwnableInvalidOwner(address)", @@ -1123,36 +1103,6 @@ exports[`task lz:errors:list should print all errors with matching name if \`con "Error": "LZ_ULN_InvalidWorkerOptions(uint256)", "Signature": "0x6592671c", }, - { - "Contract": "OAppCore", - "Error": "InvalidDelegate()", - "Signature": "0xb5863604", - }, - { - "Contract": "OAppCore", - "Error": "InvalidEndpointCall()", - "Signature": "0x0fbdec0a", - }, - { - "Contract": "OAppReceiver", - "Error": "InvalidDelegate()", - "Signature": "0xb5863604", - }, - { - "Contract": "OAppReceiver", - "Error": "InvalidEndpointCall()", - "Signature": "0x0fbdec0a", - }, - { - "Contract": "IOAppCore", - "Error": "InvalidDelegate()", - "Signature": "0xb5863604", - }, - { - "Contract": "IOAppCore", - "Error": "InvalidEndpointCall()", - "Signature": "0x0fbdec0a", - }, { "Contract": "AddressCast", "Error": "AddressCast_InvalidAddress()", @@ -1208,6 +1158,36 @@ exports[`task lz:errors:list should print all errors with matching name if \`con "Error": "Executor_InvalidNativeDropOption()", "Signature": "0xc3a1858e", }, + { + "Contract": "OAppCore", + "Error": "InvalidDelegate()", + "Signature": "0xb5863604", + }, + { + "Contract": "OAppCore", + "Error": "InvalidEndpointCall()", + "Signature": "0x0fbdec0a", + }, + { + "Contract": "OAppReceiver", + "Error": "InvalidDelegate()", + "Signature": "0xb5863604", + }, + { + "Contract": "OAppReceiver", + "Error": "InvalidEndpointCall()", + "Signature": "0x0fbdec0a", + }, + { + "Contract": "IOAppCore", + "Error": "InvalidDelegate()", + "Signature": "0xb5863604", + }, + { + "Contract": "IOAppCore", + "Error": "InvalidEndpointCall()", + "Signature": "0x0fbdec0a", + }, { "Contract": "EndpointV2Mock", "Error": "Executor_InvalidExecutorOptions(uint256)", @@ -1307,6 +1287,31 @@ exports[`task lz:errors:list should print all matching errors if \`containing\` "Error": "DVN_InvalidDVNOptions(uint256)", "Signature": "0x04eb6e0c", }, + { + "Contract": "AddressCast", + "Error": "AddressCast_InvalidAddress()", + "Signature": "0x6281faa2", + }, + { + "Contract": "AddressCast", + "Error": "AddressCast_InvalidSizeForAddress()", + "Signature": "0x18456c9b", + }, + { + "Contract": "ExecutorOptions", + "Error": "Executor_InvalidLzComposeOption()", + "Signature": "0x8b4aa70b", + }, + { + "Contract": "ExecutorOptions", + "Error": "Executor_InvalidLzReceiveOption()", + "Signature": "0x4796aee1", + }, + { + "Contract": "ExecutorOptions", + "Error": "Executor_InvalidNativeDropOption()", + "Signature": "0xc3a1858e", + }, { "Contract": "OApp", "Error": "InvalidDelegate()", @@ -1457,91 +1462,6 @@ exports[`task lz:errors:list should print all matching errors if \`containing\` "Error": "OwnableUnauthorizedAccount(address)", "Signature": "0x118cdaa7", }, - { - "Contract": "OmniCounterAbstract", - "Error": "AddressEmptyCode(address)", - "Signature": "0x9996b315", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "AddressInsufficientBalance(address)", - "Signature": "0xcd786059", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "FailedInnerCall()", - "Signature": "0x1425ea42", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "InvalidDelegate()", - "Signature": "0xb5863604", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "InvalidEndpointCall()", - "Signature": "0x0fbdec0a", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "InvalidOptionType(uint16)", - "Signature": "0x3a51740d", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "LzTokenUnavailable()", - "Signature": "0x5373352a", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "NoPeer(uint32)", - "Signature": "0xf6ff4fb7", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "NotEnoughNative(uint256)", - "Signature": "0x9f704120", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "OnlyEndpoint(address)", - "Signature": "0x91ac5e4f", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "OnlyPeer(uint32,bytes32)", - "Signature": "0xc26bebcc", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "OnlySelf()", - "Signature": "0x14d4a4e8", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "OwnableInvalidOwner(address)", - "Signature": "0x1e4fbdf7", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "OwnableUnauthorizedAccount(address)", - "Signature": "0x118cdaa7", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "SafeCastOverflowedUintDowncast(uint8,uint256)", - "Signature": "0x6dfcc650", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "SafeERC20FailedOperation(address)", - "Signature": "0x5274afe7", - }, - { - "Contract": "OmniCounterAbstract", - "Error": "SimulationResult(bytes)", - "Signature": "0x8351eea7", - }, { "Contract": "IOAppCore", "Error": "InvalidDelegate()", @@ -1657,31 +1577,6 @@ exports[`task lz:errors:list should print all matching errors if \`containing\` "Error": "SimulationResultNotFound(uint32)", "Signature": "0x01992f2a", }, - { - "Contract": "AddressCast", - "Error": "AddressCast_InvalidAddress()", - "Signature": "0x6281faa2", - }, - { - "Contract": "AddressCast", - "Error": "AddressCast_InvalidSizeForAddress()", - "Signature": "0x18456c9b", - }, - { - "Contract": "ExecutorOptions", - "Error": "Executor_InvalidLzComposeOption()", - "Signature": "0x8b4aa70b", - }, - { - "Contract": "ExecutorOptions", - "Error": "Executor_InvalidLzReceiveOption()", - "Signature": "0x4796aee1", - }, - { - "Contract": "ExecutorOptions", - "Error": "Executor_InvalidNativeDropOption()", - "Signature": "0xc3a1858e", - }, { "Contract": "Ownable", "Error": "OwnableInvalidOwner(address)", @@ -5002,71 +4897,6 @@ exports[`task lz:errors:list should print all matching errors if \`containing\` "Error": "LZ_ULN_UnsupportedOptionType(uint16)", "Signature": "0x41705130", }, - { - "Contract": "OAppCore", - "Error": "InvalidDelegate()", - "Signature": "0xb5863604", - }, - { - "Contract": "OAppCore", - "Error": "InvalidEndpointCall()", - "Signature": "0x0fbdec0a", - }, - { - "Contract": "OAppCore", - "Error": "NoPeer(uint32)", - "Signature": "0xf6ff4fb7", - }, - { - "Contract": "OAppCore", - "Error": "OnlyPeer(uint32,bytes32)", - "Signature": "0xc26bebcc", - }, - { - "Contract": "OAppReceiver", - "Error": "InvalidDelegate()", - "Signature": "0xb5863604", - }, - { - "Contract": "OAppReceiver", - "Error": "InvalidEndpointCall()", - "Signature": "0x0fbdec0a", - }, - { - "Contract": "OAppReceiver", - "Error": "NoPeer(uint32)", - "Signature": "0xf6ff4fb7", - }, - { - "Contract": "OAppReceiver", - "Error": "OnlyEndpoint(address)", - "Signature": "0x91ac5e4f", - }, - { - "Contract": "OAppReceiver", - "Error": "OnlyPeer(uint32,bytes32)", - "Signature": "0xc26bebcc", - }, - { - "Contract": "IOAppCore", - "Error": "InvalidDelegate()", - "Signature": "0xb5863604", - }, - { - "Contract": "IOAppCore", - "Error": "InvalidEndpointCall()", - "Signature": "0x0fbdec0a", - }, - { - "Contract": "IOAppCore", - "Error": "NoPeer(uint32)", - "Signature": "0xf6ff4fb7", - }, - { - "Contract": "IOAppCore", - "Error": "OnlyPeer(uint32,bytes32)", - "Signature": "0xc26bebcc", - }, { "Contract": "AddressCast", "Error": "AddressCast_InvalidAddress()", @@ -5242,6 +5072,71 @@ exports[`task lz:errors:list should print all matching errors if \`containing\` "Error": "Executor_InvalidNativeDropOption()", "Signature": "0xc3a1858e", }, + { + "Contract": "OAppCore", + "Error": "InvalidDelegate()", + "Signature": "0xb5863604", + }, + { + "Contract": "OAppCore", + "Error": "InvalidEndpointCall()", + "Signature": "0x0fbdec0a", + }, + { + "Contract": "OAppCore", + "Error": "NoPeer(uint32)", + "Signature": "0xf6ff4fb7", + }, + { + "Contract": "OAppCore", + "Error": "OnlyPeer(uint32,bytes32)", + "Signature": "0xc26bebcc", + }, + { + "Contract": "OAppReceiver", + "Error": "InvalidDelegate()", + "Signature": "0xb5863604", + }, + { + "Contract": "OAppReceiver", + "Error": "InvalidEndpointCall()", + "Signature": "0x0fbdec0a", + }, + { + "Contract": "OAppReceiver", + "Error": "NoPeer(uint32)", + "Signature": "0xf6ff4fb7", + }, + { + "Contract": "OAppReceiver", + "Error": "OnlyEndpoint(address)", + "Signature": "0x91ac5e4f", + }, + { + "Contract": "OAppReceiver", + "Error": "OnlyPeer(uint32,bytes32)", + "Signature": "0xc26bebcc", + }, + { + "Contract": "IOAppCore", + "Error": "InvalidDelegate()", + "Signature": "0xb5863604", + }, + { + "Contract": "IOAppCore", + "Error": "InvalidEndpointCall()", + "Signature": "0x0fbdec0a", + }, + { + "Contract": "IOAppCore", + "Error": "NoPeer(uint32)", + "Signature": "0xf6ff4fb7", + }, + { + "Contract": "IOAppCore", + "Error": "OnlyPeer(uint32,bytes32)", + "Signature": "0xc26bebcc", + }, { "Contract": "EndpointV2Mock", "Error": "Executor_InvalidExecutorOptions(uint256)", diff --git a/tests/ua-devtools-evm-hardhat-v1-test/package.json b/tests/ua-devtools-evm-hardhat-v1-test/package.json index c5c263152..9b5f5be7f 100644 --- a/tests/ua-devtools-evm-hardhat-v1-test/package.json +++ b/tests/ua-devtools-evm-hardhat-v1-test/package.json @@ -32,12 +32,12 @@ "@layerzerolabs/lz-definitions": "^2.3.34", "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.34", "@layerzerolabs/lz-evm-oapp-v1": "^2.3.34", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.34", "@layerzerolabs/lz-evm-protocol-v2": "^2.3.34", "@layerzerolabs/lz-evm-sdk-v1": "^2.3.34", "@layerzerolabs/lz-evm-sdk-v2": "^2.3.34", "@layerzerolabs/lz-evm-v1-0.7": "^2.3.34", "@layerzerolabs/lz-v2-utilities": "^2.3.34", + "@layerzerolabs/oapp-evm": "^0.0.2", "@layerzerolabs/omnicounter-devtools": "~1.0.1", "@layerzerolabs/omnicounter-devtools-evm": "~1.0.1", "@layerzerolabs/protocol-devtools": "~0.4.2",