[
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_vault",
"type": "address"
},
{
"internalType": "address",
"name": "_accountant",
"type": "address"
},
{
"internalType": "address",
"name": "_weth",
"type": "address"
},
{
"internalType": "address",
"name": "_lzEndPoint",
"type": "address"
},
{
"internalType": "address",
"name": "_delegate",
"type": "address"
},
{
"internalType": "address",
"name": "_lzToken",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "CrossChainTellerWithGenericBridge__UnsafeCastToUint96",
"type": "error"
},
{
"inputs": [],
"name": "InvalidDelegate",
"type": "error"
},
{
"inputs": [],
"name": "InvalidEndpointCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "optionType",
"type": "uint16"
}
],
"name": "InvalidOptionType",
"type": "error"
},
{
"inputs": [],
"name": "LayerZeroTeller__BadFeeToken",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainSelector",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxFee",
"type": "uint256"
}
],
"name": "LayerZeroTeller__FeeExceedsMax",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainSelector",
"type": "uint256"
}
],
"name": "LayerZeroTeller__MessagesNotAllowedFrom",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainSelector",
"type": "uint256"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "LayerZeroTeller__MessagesNotAllowedFromSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainSelector",
"type": "uint256"
}
],
"name": "LayerZeroTeller__MessagesNotAllowedTo",
"type": "error"
},
{
"inputs": [],
"name": "LayerZeroTeller__ZeroMessageGasLimit",
"type": "error"
},
{
"inputs": [],
"name": "LzTokenUnavailable",
"type": "error"
},
{
"inputs": [],
"name": "MessageLib__ShareAmountOverflow",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
}
],
"name": "NoPeer",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "msgValue",
"type": "uint256"
}
],
"name": "NotEnoughNative",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "OnlyEndpoint",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "sender",
"type": "bytes32"
}
],
"name": "OnlyPeer",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__AssetNotSupported",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__BadDepositHash",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__CannotDepositNative",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__DepositExceedsCap",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__DualDeposit",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__MinimumAssetsNotMet",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__MinimumMintNotMet",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__Paused",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__PermitFailedAndAllowanceTooLow",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__ShareLockPeriodTooLong",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__SharePremiumTooLarge",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__SharesAreLocked",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__SharesAreUnLocked",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "TellerWithMultiAssetSupport__TransferDenied",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__ZeroAssets",
"type": "error"
},
{
"inputs": [],
"name": "TellerWithMultiAssetSupport__ZeroShares",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "AllowFrom",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "AllowOperator",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "AllowPermissionedOperator",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "AllowTo",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "allowDeposits",
"type": "bool"
},
{
"indexed": false,
"internalType": "bool",
"name": "allowWithdraws",
"type": "bool"
},
{
"indexed": false,
"internalType": "uint16",
"name": "sharePremium",
"type": "uint16"
}
],
"name": "AssetDataUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "contract Authority",
"name": "newAuthority",
"type": "address"
}
],
"name": "AuthorityUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "depositAmount",
"type": "uint256"
}
],
"name": "BulkDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shareAmount",
"type": "uint256"
}
],
"name": "BulkWithdraw",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "allowMessagesFrom",
"type": "bool"
},
{
"indexed": false,
"internalType": "bool",
"name": "allowMessagesTo",
"type": "bool"
},
{
"indexed": false,
"internalType": "address",
"name": "targetTeller",
"type": "address"
}
],
"name": "ChainAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "targetTeller",
"type": "address"
}
],
"name": "ChainAllowMessagesFrom",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "targetTeller",
"type": "address"
}
],
"name": "ChainAllowMessagesTo",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
}
],
"name": "ChainRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint128",
"name": "messageGasLimit",
"type": "uint128"
}
],
"name": "ChainSetGasLimit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
}
],
"name": "ChainStopMessagesFrom",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
}
],
"name": "ChainStopMessagesTo",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "DenyFrom",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "DenyOperator",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "DenyPermissionedOperator",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "DenyTo",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "depositAsset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "depositAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shareAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "depositTimestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shareLockPeriodAtTimeOfDeposit",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "referralAddress",
"type": "address"
}
],
"name": "Deposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint112",
"name": "cap",
"type": "uint112"
}
],
"name": "DepositCapSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "depositHash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "DepositRefunded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shareAmount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "MessageReceived",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "messageId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shareAmount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "MessageSent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint32",
"name": "eid",
"type": "uint32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "peer",
"type": "bytes32"
}
],
"name": "PeerSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "permissionedTransfers",
"type": "bool"
}
],
"name": "PermissionedTransfersSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Unpaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shareAmount",
"type": "uint256"
}
],
"name": "Withdraw",
"type": "event"
},
{
"inputs": [],
"name": "accountant",
"outputs": [
{
"internalType": "contract AccountantWithRateProviders",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "chainId",
"type": "uint32"
},
{
"internalType": "bool",
"name": "allowMessagesFrom",
"type": "bool"
},
{
"internalType": "bool",
"name": "allowMessagesTo",
"type": "bool"
},
{
"internalType": "address",
"name": "targetTeller",
"type": "address"
},
{
"internalType": "uint128",
"name": "messageGasLimit",
"type": "uint128"
}
],
"name": "addChain",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "allowAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "allowFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint32",
"name": "srcEid",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "sender",
"type": "bytes32"
},
{
"internalType": "uint64",
"name": "nonce",
"type": "uint64"
}
],
"internalType": "struct Origin",
"name": "origin",
"type": "tuple"
}
],
"name": "allowInitializePath",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "chainId",
"type": "uint32"
},
{
"internalType": "address",
"name": "targetTeller",
"type": "address"
}
],
"name": "allowMessagesFromChain",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "chainId",
"type": "uint32"
},
{
"internalType": "address",
"name": "targetTeller",
"type": "address"
},
{
"internalType": "uint128",
"name": "messageGasLimit",
"type": "uint128"
}
],
"name": "allowMessagesToChain",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "allowOperator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "allowPermissionedOperator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "allowTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20",
"name": "",
"type": "address"
}
],
"name": "assetData",
"outputs": [
{
"internalType": "bool",
"name": "allowDeposits",
"type": "bool"
},
{
"internalType": "bool",
"name": "allowWithdraws",
"type": "bool"
},
{
"internalType": "uint16",
"name": "sharePremium",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "authority",
"outputs": [
{
"internalType": "contract Authority",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "beforeTransfer",
"outputs": [],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
}
],
"name": "beforeTransfer",
"outputs": [],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "beforeTransferData",
"outputs": [
{
"internalType": "bool",
"name": "denyFrom",
"type": "bool"
},
{
"internalType": "bool",
"name": "denyTo",
"type": "bool"
},
{
"internalType": "bool",
"name": "denyOperator",
"type": "bool"
},
{
"internalType": "bool",
"name": "permissionedOperator",
"type": "bool"
},
{
"internalType": "uint256",
"name": "shareUnlockTime",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint96",
"name": "shareAmount",
"type": "uint96"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bytes",
"name": "bridgeWildCard",
"type": "bytes"
},
{
"internalType": "contract ERC20",
"name": "feeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxFee",
"type": "uint256"
}
],
"name": "bridge",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20",
"name": "depositAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "depositAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumMint",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "bulkDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20",
"name": "withdrawAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "shareAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumAssets",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "bulkWithdraw",
"outputs": [
{
"internalType": "uint256",
"name": "assetsOut",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "composeMsgSender",
"outputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "denyAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "denyFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "denyOperator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "denyPermissionedOperator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "denyTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20",
"name": "depositAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "depositAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumMint",
"type": "uint256"
},
{
"internalType": "address",
"name": "referralAddress",
"type": "address"
}
],
"name": "deposit",
"outputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20",
"name": "depositAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "depositAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumMint",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bytes",
"name": "bridgeWildCard",
"type": "bytes"
},
{
"internalType": "contract ERC20",
"name": "feeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxFee",
"type": "uint256"
},
{
"internalType": "address",
"name": "referralAddress",
"type": "address"
}
],
"name": "depositAndBridge",
"outputs": [
{
"internalType": "uint256",
"name": "sharesBridged",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "contract ERC20",
"name": "depositAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "depositAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumMint",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bytes",
"name": "bridgeWildCard",
"type": "bytes"
},
{
"internalType": "contract ERC20",
"name": "feeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxFee",
"type": "uint256"
},
{
"internalType": "address",
"name": "referralAddress",
"type": "address"
}
],
"internalType": "struct CrossChainTellerWithGenericBridge.DepositAndBridgeWithPermitParams",
"name": "params",
"type": "tuple"
}
],
"name": "depositAndBridgeWithPermit",
"outputs": [
{
"internalType": "uint256",
"name": "sharesBridged",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "depositCap",
"outputs": [
{
"internalType": "uint112",
"name": "",
"type": "uint112"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "depositNonce",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20",
"name": "depositAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "depositAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumMint",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "address",
"name": "referralAddress",
"type": "address"
}
],
"name": "depositWithPermit",
"outputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "endpoint",
"outputs": [
{
"internalType": "contract ILayerZeroEndpointV2",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"name": "idToChains",
"outputs": [
{
"internalType": "bool",
"name": "allowMessagesFrom",
"type": "bool"
},
{
"internalType": "bool",
"name": "allowMessagesTo",
"type": "bool"
},
{
"internalType": "uint128",
"name": "messageGasLimit",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint32",
"name": "srcEid",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "sender",
"type": "bytes32"
},
{
"internalType": "uint64",
"name": "nonce",
"type": "uint64"
}
],
"internalType": "struct Origin",
"name": "_origin",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "_guid",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_message",
"type": "bytes"
},
{
"internalType": "address",
"name": "_executor",
"type": "address"
},
{
"internalType": "bytes",
"name": "_extraData",
"type": "bytes"
}
],
"name": "lzReceive",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "nativeWrapper",
"outputs": [
{
"internalType": "contract WETH",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "nextNonce",
"outputs": [
{
"internalType": "uint64",
"name": "nonce",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "oAppVersion",
"outputs": [
{
"internalType": "uint64",
"name": "senderVersion",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "receiverVersion",
"type": "uint64"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "eid",
"type": "uint32"
}
],
"name": "peers",
"outputs": [
{
"internalType": "bytes32",
"name": "peer",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "permissionedTransfers",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint96",
"name": "shareAmount",
"type": "uint96"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bytes",
"name": "bridgeWildCard",
"type": "bytes"
},
{
"internalType": "contract ERC20",
"name": "feeToken",
"type": "address"
}
],
"name": "previewFee",
"outputs": [
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "publicDepositHistory",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "address",
"name": "depositAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "depositAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shareAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "depositTimestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shareLockUpPeriodAtTimeOfDeposit",
"type": "uint256"
},
{
"internalType": "address",
"name": "referralAddress",
"type": "address"
}
],
"name": "refundDeposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "chainId",
"type": "uint32"
}
],
"name": "removeChain",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract Authority",
"name": "newAuthority",
"type": "address"
}
],
"name": "setAuthority",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "chainId",
"type": "uint32"
},
{
"internalType": "uint128",
"name": "messageGasLimit",
"type": "uint128"
}
],
"name": "setChainGasLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_delegate",
"type": "address"
}
],
"name": "setDelegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint112",
"name": "cap",
"type": "uint112"
}
],
"name": "setDepositCap",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "_eid",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "_peer",
"type": "bytes32"
}
],
"name": "setPeer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_permissionedTransfers",
"type": "bool"
}
],
"name": "setPermissionedTransfers",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "_shareLockPeriod",
"type": "uint64"
}
],
"name": "setShareLockPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "shareLockPeriod",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "chainId",
"type": "uint32"
}
],
"name": "stopMessagesFromChain",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "chainId",
"type": "uint32"
}
],
"name": "stopMessagesToChain",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20",
"name": "asset",
"type": "address"
},
{
"internalType": "bool",
"name": "allowDeposits",
"type": "bool"
},
{
"internalType": "bool",
"name": "allowWithdraws",
"type": "bool"
},
{
"internalType": "uint16",
"name": "sharePremium",
"type": "uint16"
}
],
"name": "updateAssetData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "vault",
"outputs": [
{
"internalType": "contract BoringVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20",
"name": "withdrawAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "shareAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumAssets",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "withdraw",
"outputs": [
{
"internalType": "uint256",
"name": "assetsOut",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]0x6101406040526001600255600480546001600160901b03166001600160901b03191790553480156200002f575f80fd5b50604051620053003803806200530083398101604081905262000052916200025d565b5f80546001600160a01b0389166001600160a01b0319918216811783556001805490921690915560405185928592849284928d928d928d928d9286928692869286928692919033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908490a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350506001600160a01b03831660808190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156200013f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001659190620002ed565b6200017290600a62000425565b60c0526001600160a01b0391821660a052811660e0526004805460ff60881b191690558881166101005287169550620001c494505050505057604051632d618d8160e21b815260040160405180910390fd5b6101005160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e1906024015f604051808303815f87803b1580156200020a575f80fd5b505af11580156200021d573d5f803e3d5ffd5b5050506001600160a01b039095166101205250620004359950505050505050505050565b80516001600160a01b038116811462000258575f80fd5b919050565b5f805f805f805f60e0888a03121562000274575f80fd5b6200027f8862000241565b96506200028f6020890162000241565b95506200029f6040890162000241565b9450620002af6060890162000241565b9350620002bf6080890162000241565b9250620002cf60a0890162000241565b9150620002df60c0890162000241565b905092959891949750929550565b5f60208284031215620002fe575f80fd5b815160ff811681146200030f575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200036a57815f19048211156200034e576200034e62000316565b808516156200035c57918102915b93841c93908002906200032f565b509250929050565b5f8262000382575060016200041f565b816200039057505f6200041f565b8160018114620003a95760028114620003b457620003d4565b60019150506200041f565b60ff841115620003c857620003c862000316565b50506001821b6200041f565b5060208310610133831016604e8410600b8410161715620003f9575081810a6200041f565b6200040583836200032a565b805f19048211156200041b576200041b62000316565b0290505b92915050565b5f6200030f60ff84168362000372565b60805160a05160c05160e0516101005161012051614de26200051e5f395f81816137bf0152613a9a01525f818161079401528181610db50152818161276801528181613ce301528181613ddd0152818161401a01526140d101525f81816103f101528181611bc101528181611fca01528181612047015261209501525f8181612f0701526132d301525f818161068901528181612e9801526132f501525f8181610c3c01528181611bfb0152818161206b01528181612bdd01528181612f6501528181613135015281816131d5015281816133df0152818161349d0152613b7d0152614de25ff3fe608060405260043610610392575f3560e01c80637bd876b6116101de578063b92d0eff11610108578063d7424e331161009d578063f2fde38b1161006d578063f2fde38b14610bf9578063f8b7b66d14610c18578063fbfa77cf14610c2b578063ff7bd03d14610c5e575f80fd5b8063d7424e3314610b5e578063dbd5edc714610b7d578063de35f5cb14610bbb578063e83931af14610bda575f80fd5b8063c29d2f10116100d8578063c29d2f1014610a92578063ca5eb5e114610ab1578063d182221614610ad0578063d555f36814610b3f575f80fd5b8063b92d0eff14610a17578063bb0b6a5314610a29578063bf67138414610a54578063bf7e214f14610a73575f80fd5b80639a94d3d01161017e578063a924bf611161014e578063a924bf611461099a578063abd626b0146109b9578063b187bd26146109d8578063b5ba6182146109f8575f80fd5b80639a94d3d01461090b5780639ac4f42d146109365780639d574420146109555780639fdb11b614610974575f80fd5b80638a6733f9116101b95780638a6733f91461089c5780638b6099db146108bb5780638da5cb5b146108ce5780638dfd8ba1146108ec575f80fd5b80637bd876b6146108325780637d25a05e146108515780638456cb5914610888575f80fd5b80633b575407116102bf57806355a2d64d1161025f5780635f45bac81161022f5780635f45bac8146107b65780636495043a146107d557806365fe00e4146107f45780637a9e5e4b14610813575f80fd5b806355a2d64d146106cc5780635bc52162146106eb5780635c465430146106fe5780635e280f1114610783575f80fd5b806341fee44a1161029a57806341fee44a146105f457806345ad6063146106595780634fb3ccc51461067857806354fd4d50146106ab575f80fd5b80633b575407146105a25780633e64ce99146105c15780633f4ba83a146105e0575f80fd5b806317442b7011610335578063202eac5711610305578063202eac57146105265780632c524c42146105455780633400288b1461056457806334dafd6b14610583575f80fd5b806317442b70146104a957806318aed921146104c95780631b62636c146104e85780631ba9a45814610507575f80fd5b806312056e2d1161037057806312056e2d1461042b57806313137d651461044a5780631568fc581461045d57806316762eed1461047c575f80fd5b80630511ef431461039657806305921740146103cb5780630b48a8b8146103e0575b5f80fd5b3480156103a1575f80fd5b506004546103b690600160881b900460ff1681565b60405190151581526020015b60405180910390f35b6103de6103d9366004614266565b610c7d565b005b3480156103eb575f80fd5b506104137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103c2565b348015610436575f80fd5b506103de6104453660046142f7565b610d23565b6103de610458366004614328565b610db3565b348015610468575f80fd5b506103de6104773660046143e9565b610e6e565b348015610487575f80fd5b5061049b61049636600461441a565b610f43565b6040519081526020016103c2565b3480156104b4575f80fd5b506040805160018082526020820152016103c2565b3480156104d4575f80fd5b506103de6104e3366004614461565b611004565b3480156104f3575f80fd5b506103de610502366004614461565b6110ea565b348015610512575f80fd5b506103de610521366004614461565b61116a565b348015610531575f80fd5b506103de61054036600461447c565b6111e5565b348015610550575f80fd5b506103de61055f366004614461565b61128c565b34801561056f575f80fd5b506103de61057e3660046144b1565b611308565b34801561058e575f80fd5b506103de61059d3660046144e6565b611347565b3480156105ad575f80fd5b506103de6105bc366004614461565b61149b565b3480156105cc575f80fd5b5061049b6105db36600461441a565b611519565b3480156105eb575f80fd5b506103de6115ba565b3480156105ff575f80fd5b5061063861060e366004614461565b60036020525f908152604090205460ff8082169161010081049091169062010000900461ffff1683565b604080519315158452911515602084015261ffff16908201526060016103c2565b348015610664575f80fd5b506103de61067336600461454d565b611622565b348015610683575f80fd5b506104137f000000000000000000000000000000000000000000000000000000000000000081565b3480156106b6575f80fd5b506106bf6116ab565b6040516103c291906145b3565b3480156106d7575f80fd5b506103de6106e636600461454d565b6116d9565b61049b6106f93660046145c5565b61177f565b348015610709575f80fd5b50610753610718366004614461565b60066020525f90815260409020805460019091015460ff80831692610100810482169262010000820483169263010000009092049091169085565b6040805195151586529315156020860152911515928401929092529015156060830152608082015260a0016103c2565b34801561078e575f80fd5b506104137f000000000000000000000000000000000000000000000000000000000000000081565b3480156107c1575f80fd5b506103de6107d0366004614461565b61194f565b3480156107e0575f80fd5b5061049b6107ef36600461460c565b6119c9565b3480156107ff575f80fd5b506103de61080e366004614681565b611ac9565b34801561081e575f80fd5b506103de61082d366004614461565b611cb4565b34801561083d575f80fd5b506103de61084c3660046146e7565b611d98565b34801561085c575f80fd5b5061087061086b3660046144b1565b611e2a565b6040516001600160401b0390911681526020016103c2565b348015610893575f80fd5b506103de611e32565b3480156108a7575f80fd5b506103de6108b636600461470d565b611ea0565b61049b6108c936600461441a565b611f1e565b3480156108d9575f80fd5b505f54610413906001600160a01b031681565b3480156108f7575f80fd5b506103de610906366004614728565b612129565b348015610916575f80fd5b5061049b61092536600461477c565b60056020525f908152604090205481565b348015610941575f80fd5b506103de610950366004614461565b612242565b348015610960575f80fd5b5061049b61096f36600461441a565b6122c4565b34801561097f575f80fd5b5060045461087090600160401b90046001600160401b031681565b3480156109a5575f80fd5b506103de6109b4366004614461565b612389565b3480156109c4575f80fd5b506103de6109d3366004614793565b612402565b3480156109e3575f80fd5b506004546103b690600160801b900460ff1681565b348015610a03575f80fd5b506103de610a123660046147db565b6124be565b348015610a22575f80fd5b5030610413565b348015610a34575f80fd5b5061049b610a4336600461454d565b60076020525f908152604090205481565b348015610a5f575f80fd5b506103de610a6e366004614461565b6125bb565b348015610a7e575f80fd5b50600154610413906001600160a01b031681565b348015610a9d575f80fd5b506103de610aac366004614461565b612637565b348015610abc575f80fd5b506103de610acb366004614461565b612718565b348015610adb575f80fd5b50610b19610aea36600461454d565b60086020525f908152604090205460ff808216916101008104909116906201000090046001600160801b031683565b60408051931515845291151560208401526001600160801b0316908201526060016103c2565b348015610b4a575f80fd5b506103de610b5936600461454d565b6127c2565b348015610b69575f80fd5b5061049b610b7836600461481d565b612842565b348015610b88575f80fd5b50600454610ba390600160901b90046001600160701b031681565b6040516001600160701b0390911681526020016103c2565b348015610bc6575f80fd5b50600454610870906001600160401b031681565b348015610be5575f80fd5b506103de610bf4366004614461565b61288d565b348015610c04575f80fd5b506103de610c13366004614461565b61291c565b61049b610c26366004614892565b612997565b348015610c36575f80fd5b506104137f000000000000000000000000000000000000000000000000000000000000000081565b348015610c69575f80fd5b506103b6610c78366004614936565b612ac0565b610c92335f356001600160e01b031916612af4565b610cb75760405162461bcd60e51b8152600401610cae90614950565b60405180910390fd5b600254600114610cd95760405162461bcd60e51b8152600401610cae90614976565b60028055600454600160801b900460ff1615610d085760405163e0f9e71d60e01b815260040160405180910390fd5b610d16868686868686612b9a565b5050600160025550505050565b610d38335f356001600160e01b031916612af4565b610d545760405162461bcd60e51b8152600401610cae90614950565b6203f480816001600160401b03161115610d8157604051631fac010160e21b815260040160405180910390fd5b600480546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610dfe576040516391ac5e4f60e01b8152336004820152602401610cae565b60208701803590610e1890610e13908a61454d565b612cc6565b14610e5657610e2a602088018861454d565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610cae565b610e6587878787878787612d01565b50505050505050565b610e83335f356001600160e01b031916612af4565b610e9f5760405162461bcd60e51b8152600401610cae90614950565b806001600160801b03165f03610ec85760405163c80ed59560e01b815260040160405180910390fd5b63ffffffff82165f81815260086020908152604091829020805462010000600160901b031916620100006001600160801b038716908102919091178255835194855291840191909152917f0aa48359f83e8464fda3f4ea4bd3f2d6af01e90b46ab9464aa7d538e1772947a91015b60405180910390a1505050565b5f610f59335f356001600160e01b031916612af4565b610f755760405162461bcd60e51b8152600401610cae90614950565b600254600114610f975760405162461bcd60e51b8152600401610cae90614976565b60028055610fa6335f81612402565b610fb285858585612dbe565b9050846001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436485604051610fef91815260200190565b60405180910390a26001600255949350505050565b611019335f356001600160e01b031916612af4565b6110355760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805462ffffff191662010101179055517fd658022b1a3aaf6ad3b3c615253712807f21a8f7bc3e4996e10618175d4afb2b9190a26040516001600160a01b038216907f79fc685a7dbabb75a67df5e69a90602cef1f19bc465b060eab1ac56685e04a13905f90a26040516001600160a01b038216907f3afb02134e37f7205acf470adc2fc4ebb70614b1599a602d069790915380e2aa905f90a250565b6110ff335f356001600160e01b031916612af4565b61111b5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805462ff0000191662010000179055517f3afb02134e37f7205acf470adc2fc4ebb70614b1599a602d069790915380e2aa9190a250565b61117f335f356001600160e01b031916612af4565b61119b5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805462ff000019169055517f77cb944c14da76928795279d1519ce9150085a06e0a53c61d5a86fc4e0fd57c69190a250565b6111fa335f356001600160e01b031916612af4565b6112165760405162461bcd60e51b8152600401610cae90614950565b63ffffffff82165f908152600860205260409020805460ff19166001178155611248836001600160a01b038416612fd8565b6040805163ffffffff851681526001600160a01b03841660208201527fe925de263dcdbdc20307c9ab92758ed8cc0edf3d173dad4a3aa54c070f27a5439101610f36565b6112a1335f356001600160e01b031916612af4565b6112bd5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805460ff19166001179055517fd658022b1a3aaf6ad3b3c615253712807f21a8f7bc3e4996e10618175d4afb2b9190a250565b61131d335f356001600160e01b031916612af4565b6113395760405162461bcd60e51b8152600401610cae90614950565b6113438282612fd8565b5050565b61135c335f356001600160e01b031916612af4565b6113785760405162461bcd60e51b8152600401610cae90614950565b82801561138c57506001600160801b038116155b156113aa5760405163c80ed59560e01b815260040160405180910390fd5b60408051606081018252851515815284151560208083019182526001600160801b0385811684860190815263ffffffff8b165f908152600890935294909120925183549251945161ffff1990931690151561ff00191617610100941515949094029390931762010000600160901b03191662010000919093160291909117905561143d856001600160a01b038416612fd8565b6040805163ffffffff871681528515156020820152841515818301526001600160a01b038416606082015290517f5dbe727bffd24a6d61a5aeef919510389c66c0deeaa82634862cf4f098961fb89181900360800190a15050505050565b6114b0335f356001600160e01b031916612af4565b6114cc5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805461ff001916610100179055517f79fc685a7dbabb75a67df5e69a90602cef1f19bc465b060eab1ac56685e04a139190a250565b5f61152f335f356001600160e01b031916612af4565b61154b5760405162461bcd60e51b8152600401610cae90614950565b60025460011461156d5760405162461bcd60e51b8152600401610cae90614976565b6002805561157d85858585612dbe565b9050846001600160a01b03167fdcc60b41ff1c604459e6aa4a7299817416b19fc586a392f111646e26597c4af985604051610fef91815260200190565b6115cf335f356001600160e01b031916612af4565b6115eb5760405162461bcd60e51b8152600401610cae90614950565b6004805460ff60801b191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d16933905f90a1565b611637335f356001600160e01b031916612af4565b6116535760405162461bcd60e51b8152600401610cae90614950565b63ffffffff81165f81815260086020908152604091829020805461ff0019168155915192835290917fc45af64a13a09ef916a1114c59589294ec9c3095f2bfbbb093a7a96656858ded91015b60405180910390a15050565b60606116b5613025565b6040516020016116c5919061499a565b604051602081830303815290604052905090565b6116ee335f356001600160e01b031916612af4565b61170a5760405162461bcd60e51b8152600401610cae90614950565b63ffffffff81165f908152600860205260408120805471ffffffffffffffffffffffffffffffffffff19169055611742908290612fd8565b60405163ffffffff821681527f11a9d1a77f76361ed131c19b1dc5758504c51dbde2e49fc973a0ef9577ad13d5906020015b60405180910390a150565b5f611795335f356001600160e01b031916612af4565b6117b15760405162461bcd60e51b8152600401610cae90614950565b6002546001146117d35760405162461bcd60e51b8152600401610cae90614976565b600280556117e46020830183614461565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601611822576040516316df5df960e31b815260040160405180910390fd5b5f6118386118336020860186614461565b61305d565b905061187361184a6020860186614461565b6020860135606087013561186460a0890160808a016149d1565b8860a001358960c00135613118565b6118956118836020860186614461565b85602001358660400135333386613270565b92506118dc9050336118aa6020860186614461565b6004546020870135908690600160401b90046001600160401b03166118d76101808a016101608b01614461565b613512565b6001600160601b03821115611904576040516389588ab360e01b815260040160405180910390fd5b61194482611919610100860160e08701614461565b6119276101008701876149ea565b61193961014089016101208a01614461565b886101400135612b9a565b506001600255919050565b611964335f356001600160e01b031916612af4565b6119805760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805461ff0019169055517f039bcf51833310242b8b7c6aa0fbabf1bf2b5e5270807ee020f1920ef200666b9190a250565b5f6119df335f356001600160e01b031916612af4565b6119fb5760405162461bcd60e51b8152600401610cae90614950565b600254600114611a1d5760405162461bcd60e51b8152600401610cae90614976565b600280558873eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601611a60576040516316df5df960e31b815260040160405180910390fd5b5f611a6a8b61305d565b9050611a7a8b8b8a8a8a8a613118565b611a888b8b8b333386613270565b9250611ab6338c8c86600460089054906101000a90046001600160401b03166001600160401b031689613512565b5050600160025598975050505050505050565b611ade335f356001600160e01b031916612af4565b611afa5760405162461bcd60e51b8152600401610cae90614950565b81611b058442614a40565b10611b2357604051634c1eef1760e11b815260040160405180910390fd5b5f87878787878787604051602001611b419796959493929190614a53565b60408051601f1981840301815291815281516020928301205f8c815260059093529120549091508114611b875760405163fa174ecb60e01b815260040160405180910390fd5b5f898152600560205260408120556001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14611bbf5786611be1565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516318457e6160e01b81529097506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318457e6190611c38908b908b908b9083908c90600401614a90565b5f604051808303815f87803b158015611c4f575f80fd5b505af1158015611c61573d5f803e3d5ffd5b50505050876001600160a01b0316897faf98ea774275cadfa3e477a7b52cba03e01197445a76bd5d0d561608708c362483604051611ca191815260200190565b60405180910390a3505050505050505050565b5f546001600160a01b0316331480611d45575060015460405163b700961360e01b81526001600160a01b039091169063b700961390611d0690339030906001600160e01b03195f351690600401614ac3565b602060405180830381865afa158015611d21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d459190614af0565b611d4d575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b611dad335f356001600160e01b031916612af4565b611dc95760405162461bcd60e51b8152600401610cae90614950565b6004805471ffffffffffffffffffffffffffffffffffff16600160901b6001600160701b038416908102919091179091556040519081527f752cd3d8df6864142257fa3a2e02aedf2dc09f1875c2a25b4f117d45c7334d5d90602001611774565b5f5b92915050565b611e47335f356001600160e01b031916612af4565b611e635760405162461bcd60e51b8152600401610cae90614950565b6004805460ff60801b1916600160801b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e752905f90a1565b611eb5335f356001600160e01b031916612af4565b611ed15760405162461bcd60e51b8152600401610cae90614950565b60048054821515600160881b0260ff60881b199091161790556040517fa3fe47e2502292ca20854524008d366d3cad5da2426cfb2484099f06f328e4a09061177490831515815260200190565b5f611f34335f356001600160e01b031916612af4565b611f505760405162461bcd60e51b8152600401610cae90614950565b600254600114611f725760405162461bcd60e51b8152600401610cae90614976565b600280555f611f808661305d565b90505f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038816016120bc57345f03611fc85760405163259be69560e11b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015612021575f80fd5b505af1158015612033573d5f803e3d5ffd5b503499506120929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691507f0000000000000000000000000000000000000000000000000000000000000000905088613628565b507f00000000000000000000000000000000000000000000000000000000000000009550306120de565b34156120db57604051631cf02cf960e21b815260040160405180910390fd5b50335b6120ec878787843387613270565b925061211a33888886600460089054906101000a90046001600160401b03166001600160401b031689613512565b50506001600255949350505050565b61213e335f356001600160e01b031916612af4565b61215a5760405162461bcd60e51b8152600401610cae90614950565b6103e861ffff8216111561218157604051636c5cde8760e01b815260040160405180910390fd5b6040805160608082018352851515808352851515602080850182815261ffff8881168789018181526001600160a01b038e165f818152600387528b902099518a549551925161ffff1990961690151561ff00191617610100921515929092029190911763ffff0000191662010000949093169390930291909117909655865193845290830191909152938101929092527fe08301321781ac43935a2099b2c3fd42de0a0ee87a519cac00e8c9cecd26ff12910160405180910390a250505050565b612257335f356001600160e01b031916612af4565b6122735760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805463ff00000019166301000000179055517f5e92c085dffcb69d025c31c9ed03d1869e4737ba81e8649c623398caa1b72f159190a250565b5f6122da335f356001600160e01b031916612af4565b6122f65760405162461bcd60e51b8152600401610cae90614950565b6002546001146123185760405162461bcd60e51b8152600401610cae90614976565b600280555f6123268661305d565b9050612336868686338786613270565b9150856001600160a01b03167f6f9b974223f85a1ae805c33b8b519039e2435481d949db1110de151a94d587af8660405161237391815260200190565b60405180910390a2506001600255949350505050565b61239e335f356001600160e01b031916612af4565b6123ba5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805460ff19169055517fae893dda71e2eee548f8291f458cceae4bd22b56a79906928591e4420444c0e99190a250565b61240d8383836136aa565b600454600160881b900460ff16801561244557506001600160a01b0381165f908152600660205260409020546301000000900460ff16155b1561247e57604051632821264f60e01b81526001600160a01b038085166004830152808416602483015282166044820152606401610cae565b6001600160a01b0383165f908152600660205260409020600101544210156124b95760405163f64059db60e01b815260040160405180910390fd5b505050565b6124d3335f356001600160e01b031916612af4565b6124ef5760405162461bcd60e51b8152600401610cae90614950565b806001600160801b03165f036125185760405163c80ed59560e01b815260040160405180910390fd5b63ffffffff83165f908152600860205260409020805461010071ffffffffffffffffffffffffffffffffff0019909116620100006001600160801b038516021717815561256e846001600160a01b038516612fd8565b6040805163ffffffff861681526001600160a01b03851660208201527f34fe916485e02ec88e487b0e611e5c9bacabba9e3eaae7a900aa08be8197d419910160405180910390a150505050565b6125d0335f356001600160e01b031916612af4565b6125ec5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805463ff00000019169055517f1c2a701d65e1c6e2860263c884eae0b10db82e3ddd60640d53c7d53c6c998e799190a250565b61264c335f356001600160e01b031916612af4565b6126685760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805462ffffff19169055517fae893dda71e2eee548f8291f458cceae4bd22b56a79906928591e4420444c0e99190a26040516001600160a01b038216907f039bcf51833310242b8b7c6aa0fbabf1bf2b5e5270807ee020f1920ef200666b905f90a26040516001600160a01b038216907f77cb944c14da76928795279d1519ce9150085a06e0a53c61d5a86fc4e0fd57c6905f90a250565b61272d335f356001600160e01b031916612af4565b6127495760405162461bcd60e51b8152600401610cae90614950565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e1906024015f604051808303815f87803b1580156127a9575f80fd5b505af11580156127bb573d5f803e3d5ffd5b5050505050565b6127d7335f356001600160e01b031916612af4565b6127f35760405162461bcd60e51b8152600401610cae90614950565b63ffffffff81165f81815260086020908152604091829020805460ff19168155915192835290917f1cb867ed6a020e020ea220d4f48bb8e36552abf9095e093e377d33933f2b31e4910161169f565b604080518082019091526001600160601b03861681526001600160a01b03851660208201525f90816128738261374d565b905061288181878787613794565b98975050505050505050565b6001600160a01b0381165f9081526006602052604090205460ff16156128de57604051632821264f60e01b81526001600160a01b03821660048201525f602482018190526044820152606401610cae565b6001600160a01b0381165f908152600660205260409020600101544210156129195760405163f64059db60e01b815260040160405180910390fd5b50565b612931335f356001600160e01b031916612af4565b61294d5760405162461bcd60e51b8152600401610cae90614950565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6129ad335f356001600160e01b031916612af4565b6129c95760405162461bcd60e51b8152600401610cae90614950565b6002546001146129eb5760405162461bcd60e51b8152600401610cae90614976565b600280558973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601612a2e576040516316df5df960e31b815260040160405180910390fd5b5f612a388c61305d565b9050612a488c8c8c333386613270565b9250612a76338d8d86600460089054906101000a90046001600160401b03166001600160401b031689613512565b6001600160601b03831115612a9e576040516389588ab360e01b815260040160405180910390fd5b612aac838a8a8a8a8a612b9a565b505060016002559998505050505050505050565b5f602082018035906007908390612ad7908661454d565b63ffffffff16815260208101919091526040015f20541492915050565b6001545f906001600160a01b03168015801590612b7b575060405163b700961360e01b81526001600160a01b0382169063b700961390612b3c90879030908890600401614ac3565b602060405180830381865afa158015612b57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b7b9190614af0565b80612b9257505f546001600160a01b038581169116145b949350505050565b612ba5335f33612402565b6040516318457e6160e01b81525f600482018190526024820181905260448201523360648201526001600160601b03871660848201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906318457e619060a4015f604051808303815f87803b158015612c26575f80fd5b505af1158015612c38573d5f803e3d5ffd5b5050604080518082019091526001600160601b03891681526001600160a01b038816602082015291505f9050612c6d8261374d565b90505f612c7d8288888888613945565b6040516001600160601b038b1681529091506001600160a01b0389169082907fe0ec62d39b054dc2fd626dbc271483735df6e6fa1ef8389754bf8ab27a75eab290602001611ca1565b63ffffffff81165f9081526007602052604081205480611e2c5760405163f6ff4fb760e01b815263ffffffff84166004820152602401610cae565b5f600881612d1260208b018b61454d565b63ffffffff16815260208082019290925260409081015f208151606081018352905460ff808216151580845261010083049091161515948301949094526201000090046001600160801b0316918101919091529150612d9a57612d78602089018961454d565b6040516315b73a2960e21b815263ffffffff9091166004820152602401610cae565b5f612da78688018861477c565b9050612db38882613b4a565b505050505050505050565b6004545f90600160801b900460ff1615612deb5760405163e0f9e71d60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600360209081526040918290208251606081018452905460ff80821615158352610100820416151592820183905262010000900461ffff1692810192909252612e555760405163645fd19f60e11b815260040160405180910390fd5b845f03612e7557604051630ea3153160e21b815260040160405180910390fd5b604051634104b9ed60e11b81526001600160a01b038781166004830152612f2b917f00000000000000000000000000000000000000000000000000000000000000009091169063820973da90602401602060405180830381865afa158015612edf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f039190614b0b565b86907f0000000000000000000000000000000000000000000000000000000000000000613c36565b915083821015612f4e576040516302620f6160e61b815260040160405180910390fd5b6040516318457e6160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906318457e6190612fa29086908a90879033908c90600401614a90565b5f604051808303815f87803b158015612fb9575f80fd5b505af1158015612fcb573d5f803e3d5ffd5b5050505050949350505050565b63ffffffff82165f81815260076020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910161169f565b606061304d604080518082019091526009815268426173652056302e3160b81b602082015290565b6040516020016116c59190614b22565b604080516060810182525f8082526020820181905291810191909152600454600160801b900460ff16156130a45760405163e0f9e71d60e01b815260040160405180910390fd5b506001600160a01b0381165f908152600360209081526040918290208251606081018452905460ff8082161515808452610100830490911615159383019390935262010000900461ffff16928101929092526131135760405163645fd19f60e11b815260040160405180910390fd5b919050565b60405163d505accf60e01b81523360048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018790526064820186905260ff8516608483015260a4820184905260c4820183905287169063d505accf9060e4015f604051808303815f87803b1580156131a3575f80fd5b505af19250505080156131b4575060015b61326857604051636eb1769f60e11b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015286919088169063dd62ed3e90604401602060405180830381865afa158015613225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132499190614b0b565b1015613268576040516301b8851f60e41b815260040160405180910390fd5b505050505050565b5f61327c8484336136aa565b600454600160901b90046001600160701b03165f8790036132b05760405163259be69560e11b815260040160405180910390fd5b604051634104b9ed60e11b81526001600160a01b038981166004830152613366917f0000000000000000000000000000000000000000000000000000000000000000917f0000000000000000000000000000000000000000000000000000000000000000169063820973da90602401602060405180830381865afa15801561333a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061335e9190614b0b565b899190613c36565b91505f836040015161ffff161161337d57816133a0565b6133a083604001516127106133929190614b5b565b839061ffff16612710613c36565b9150858210156133c35760405163097b2ad560e31b815260040160405180910390fd5b6001600160701b038181161461348657806001600160701b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613439573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061345d9190614b0b565b6134679084614b7d565b11156134865760405163ed32f3bb60e01b815260040160405180910390fd5b604051631ceb5d1960e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906339d6ba32906134da9088908c908c908a908990600401614a90565b5f604051808303815f87803b1580156134f1575f80fd5b505af1158015613503573d5f803e3d5ffd5b50505050509695505050505050565b600480545f9190829061352d906001600160401b0316614b90565b82546001600160401b039182166101009390930a8381029202191617909155905082156135be5761355e8342614b7d565b6001600160a01b0388165f90815260066020908152604091829020600101929092555161359991899189918991899142918a918a9101614a53565b60408051601f1981840301815291815281516020928301205f84815260059093529120555b6040805182815260208101879052908101859052426060820152608081018490526001600160a01b0380841691888216918a16907fbd5bec50a3d7a5321d4e870bbb48c3589043dbcea81010e6de54a32733aef5929060a00160405180910390a450505050505050565b5f60405163095ea7b360e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806136a45760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610cae565b50505050565b6001600160a01b0383165f9081526006602052604090205460ff16806136ec57506001600160a01b0382165f90815260066020526040902054610100900460ff165b8061371457506001600160a01b0381165f9081526006602052604090205462010000900460ff165b156124b957604051632821264f60e01b81526001600160a01b038085166004830152808416602483015282166044820152606401610cae565b80515f906001600160601b03101561377857604051633524486360e01b815260040160405180910390fd5b81516020909201516001600160a01b031660a09290921b171790565b5f6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015906137f457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561381257604051637f3cd08160e11b815260040160405180910390fd5b5f61381f8486018661454d565b63ffffffff81165f908152600860209081526040918290208251606081018452905460ff8082161515835261010082041615159282018390526201000090046001600160801b031692810192909252919250906138975760405163420eae3760e01b815263ffffffff83166004820152602401610cae565b5f876040516020016138ab91815260200190565b60405160208183030381529060405290505f6138d583604001515f6138ce613c51565b9190613c69565b90505f6139048584846001600160a01b038b1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415613cce565b90506001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14613934578060200151613937565b80515b9a9950505050505050505050565b5f806139538587018761454d565b63ffffffff81165f908152600860209081526040918290208251606081018452905460ff8082161515835261010082041615159282018390526201000090046001600160801b031692810192909252919250906139cb5760405163420eae3760e01b815263ffffffff83166004820152602401610cae565b5f886040516020016139df91815260200190565b60405160208183030381529060405290505f613a0283604001515f6138ce613c51565b90505f613a318584846001600160a01b038c1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415613cce565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03891601613a98578051871015613a9357805160405163f5ac3fa760e01b815263ffffffff87166004820152602481019190915260448101889052606401610cae565b613b2b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031603613b12578681602001511115613a9357602081015160405163f5ac3fa760e01b815263ffffffff87166004820152602481019190915260448101889052606401610cae565b604051637f3cd08160e11b815260040160405180910390fd5b5f613b398685858533613dac565b519c9b505050505050505050505050565b60408051808201825260a083901c8082526001600160a01b03808516602084018190529351631ceb5d1960e11b815292937f0000000000000000000000000000000000000000000000000000000000000000909116926339d6ba3292613bb9925f928392839291600401614a90565b5f604051808303815f87803b158015613bd0575f80fd5b505af1158015613be2573d5f803e3d5ffd5b5050505080602001516001600160a01b0316837fb944fddc61d7fedb8b736790454ba972000703b0d21c7481d6dbf95b7c2cc2f1835f0151604051613c2991815260200190565b60405180910390a3505050565b5f825f190484118302158202613c4a575f80fd5b5091020490565b604051600360f01b60208201526060906022016116c5565b6060836003613c78825f613eb2565b61ffff1614613cab57613c8b815f613eb2565b604051633a51740d60e01b815261ffff9091166004820152602401610cae565b5f613cb68585613f0e565b9050613cc486600183613f87565b9695505050505050565b604080518082019091525f80825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001613d3089612cc6565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401613d65929190614bb5565b6040805180830381865afa158015613d7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613da39190614c85565b95945050505050565b613db46141b5565b5f613dc1845f0151613ff0565b602085015190915015613ddb57613ddb8460200151614017565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001613e2b8c612cc6565b81526020018a81526020018981526020015f8960200151111515815250866040518463ffffffff1660e01b8152600401613e66929190614bb5565b60806040518083038185885af1158015613e82573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613ea79190614c9f565b979650505050505050565b5f613ebe826002614b7d565b83511015613f055760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606401610cae565b50016002015190565b60606001600160801b03821615613f5657604080516001600160801b0319608086811b8216602084015285901b16603082015201604051602081830303815290604052613f80565b6040516001600160801b0319608085901b1660208201526030016040516020818303038152906040525b9392505050565b6060836003613f96825f613eb2565b61ffff1614613fa957613c8b815f613eb2565b846001613fb685516140f6565b613fc1906001614d10565b8686604051602001613fd7959493929190614d2b565b6040516020818303038152906040529150509392505050565b5f813414614013576040516304fb820960e51b8152346004820152602401610cae565b5090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015614074573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140989190614d91565b90506001600160a01b0381166140c1576040516329b99a9560e11b815260040160405180910390fd5b6113436001600160a01b038216337f000000000000000000000000000000000000000000000000000000000000000085614124565b5f61ffff821115614013576040516306dfcc6560e41b81526010600482015260248101839052604401610cae565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806127bb5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610cae565b60405180606001604052805f80191681526020015f6001600160401b031681526020016141f360405180604001604052805f81526020015f81525090565b905290565b80356001600160601b0381168114613113575f80fd5b6001600160a01b0381168114612919575f80fd5b5f8083601f840112614232575f80fd5b5081356001600160401b03811115614248575f80fd5b60208301915083602082850101111561425f575f80fd5b9250929050565b5f805f805f8060a0878903121561427b575f80fd5b614284876141f8565b955060208701356142948161420e565b945060408701356001600160401b038111156142ae575f80fd5b6142ba89828a01614222565b90955093505060608701356142ce8161420e565b80925050608087013590509295509295509295565b6001600160401b0381168114612919575f80fd5b5f60208284031215614307575f80fd5b8135613f80816142e3565b5f60608284031215614322575f80fd5b50919050565b5f805f805f805f60e0888a03121561433e575f80fd5b6143488989614312565b96506060880135955060808801356001600160401b038082111561436a575f80fd5b6143768b838c01614222565b909750955060a08a0135915061438b8261420e565b90935060c089013590808211156143a0575f80fd5b506143ad8a828b01614222565b989b979a50959850939692959293505050565b803563ffffffff81168114613113575f80fd5b80356001600160801b0381168114613113575f80fd5b5f80604083850312156143fa575f80fd5b614403836143c0565b9150614411602084016143d3565b90509250929050565b5f805f806080858703121561442d575f80fd5b84356144388161420e565b9350602085013592506040850135915060608501356144568161420e565b939692955090935050565b5f60208284031215614471575f80fd5b8135613f808161420e565b5f806040838503121561448d575f80fd5b614496836143c0565b915060208301356144a68161420e565b809150509250929050565b5f80604083850312156144c2575f80fd5b6144cb836143c0565b946020939093013593505050565b8015158114612919575f80fd5b5f805f805f60a086880312156144fa575f80fd5b614503866143c0565b94506020860135614513816144d9565b93506040860135614523816144d9565b925060608601356145338161420e565b9150614541608087016143d3565b90509295509295909350565b5f6020828403121561455d575f80fd5b613f80826143c0565b5f5b83811015614580578181015183820152602001614568565b50505f910152565b5f815180845261459f816020860160208601614566565b601f01601f19169290920160200192915050565b602081525f613f806020830184614588565b5f602082840312156145d5575f80fd5b81356001600160401b038111156145ea575f80fd5b82016101808185031215613f80575f80fd5b803560ff81168114613113575f80fd5b5f805f805f805f80610100898b031215614624575f80fd5b883561462f8161420e565b975060208901359650604089013595506060890135945061465260808a016145fc565b935060a0890135925060c0890135915060e08901356146708161420e565b809150509295985092959890939650565b5f805f805f805f80610100898b031215614699575f80fd5b8835975060208901356146ab8161420e565b965060408901356146bb8161420e565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356146708161420e565b5f602082840312156146f7575f80fd5b81356001600160701b0381168114613f80575f80fd5b5f6020828403121561471d575f80fd5b8135613f80816144d9565b5f805f806080858703121561473b575f80fd5b84356147468161420e565b93506020850135614756816144d9565b92506040850135614766816144d9565b9150606085013561ffff81168114614456575f80fd5b5f6020828403121561478c575f80fd5b5035919050565b5f805f606084860312156147a5575f80fd5b83356147b08161420e565b925060208401356147c08161420e565b915060408401356147d08161420e565b809150509250925092565b5f805f606084860312156147ed575f80fd5b6147f6846143c0565b925060208401356148068161420e565b9150614814604085016143d3565b90509250925092565b5f805f805f60808688031215614831575f80fd5b61483a866141f8565b9450602086013561484a8161420e565b935060408601356001600160401b03811115614864575f80fd5b61487088828901614222565b90945092505060608601356148848161420e565b809150509295509295909350565b5f805f805f805f805f6101008a8c0312156148ab575f80fd5b89356148b68161420e565b985060208a0135975060408a0135965060608a01356148d48161420e565b955060808a01356001600160401b038111156148ee575f80fd5b6148fa8c828d01614222565b90965094505060a08a013561490e8161420e565b925060c08a0135915060e08a01356149258161420e565b809150509295985092959850929598565b5f60608284031215614946575f80fd5b613f808383614312565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b6f02630bcb2b92d32b937902b18171896160851b81525f82516149c4816010850160208701614566565b9190910160100192915050565b5f602082840312156149e1575f80fd5b613f80826145fc565b5f808335601e198436030181126149ff575f80fd5b8301803591506001600160401b03821115614a18575f80fd5b60200191503681900382131561425f575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115611e2c57611e2c614a2c565b6001600160a01b039788168152958716602087015260408601949094526060850192909252608084015260a083015290911660c082015260e00190565b6001600160a01b039586168152938516602085015260408401929092529092166060820152608081019190915260a00190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f60208284031215614b00575f80fd5b8151613f80816144d9565b5f60208284031215614b1b575f80fd5b5051919050565b71021b937b9b99021b430b4b7102b18171896160751b81525f8251614b4e816012850160208701614566565b9190910160120192915050565b61ffff828116828216039080821115614b7657614b76614a2c565b5092915050565b80820180821115611e2c57611e2c614a2c565b5f6001600160401b03808316818103614bab57614bab614a2c565b6001019392505050565b6040815263ffffffff8351166040820152602083015160608201525f604084015160a06080840152614bea60e0840182614588565b90506060850151603f198483030160a0850152614c078282614588565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b5f60408284031215614c3d575f80fd5b604051604081018181106001600160401b0382111715614c6b57634e487b7160e01b5f52604160045260245ffd5b604052825181526020928301519281019290925250919050565b5f60408284031215614c95575f80fd5b613f808383614c2d565b5f60808284031215614caf575f80fd5b604051606081018181106001600160401b0382111715614cdd57634e487b7160e01b5f52604160045260245ffd5b604052825181526020830151614cf2816142e3565b6020820152614d048460408501614c2d565b60408201529392505050565b61ffff818116838216019080821115614b7657614b76614a2c565b5f8651614d3c818460208b01614566565b6001600160f81b031960f888811b82169285019283526001600160f01b031960f089901b16600184015286901b1660038201528351614d82816004840160208801614566565b01600401979650505050505050565b5f60208284031215614da1575f80fd5b8151613f808161420e56fea2646970667358221220477ebdb11d2799972741aff7ee136ed98da4f1fcc999373f2c8f496a929fcb7964736f6c634300081500330000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f0000000000000000000000002baf79bca4d48ee6890a09243483e458966fb957000000000000000000000000da5ddd7270381a7c2717ad10d1c0ecb19e3cdfb2000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d0000000000000000000000000000000000000000000000000000000000000045
0x608060405260043610610392575f3560e01c80637bd876b6116101de578063b92d0eff11610108578063d7424e331161009d578063f2fde38b1161006d578063f2fde38b14610bf9578063f8b7b66d14610c18578063fbfa77cf14610c2b578063ff7bd03d14610c5e575f80fd5b8063d7424e3314610b5e578063dbd5edc714610b7d578063de35f5cb14610bbb578063e83931af14610bda575f80fd5b8063c29d2f10116100d8578063c29d2f1014610a92578063ca5eb5e114610ab1578063d182221614610ad0578063d555f36814610b3f575f80fd5b8063b92d0eff14610a17578063bb0b6a5314610a29578063bf67138414610a54578063bf7e214f14610a73575f80fd5b80639a94d3d01161017e578063a924bf611161014e578063a924bf611461099a578063abd626b0146109b9578063b187bd26146109d8578063b5ba6182146109f8575f80fd5b80639a94d3d01461090b5780639ac4f42d146109365780639d574420146109555780639fdb11b614610974575f80fd5b80638a6733f9116101b95780638a6733f91461089c5780638b6099db146108bb5780638da5cb5b146108ce5780638dfd8ba1146108ec575f80fd5b80637bd876b6146108325780637d25a05e146108515780638456cb5914610888575f80fd5b80633b575407116102bf57806355a2d64d1161025f5780635f45bac81161022f5780635f45bac8146107b65780636495043a146107d557806365fe00e4146107f45780637a9e5e4b14610813575f80fd5b806355a2d64d146106cc5780635bc52162146106eb5780635c465430146106fe5780635e280f1114610783575f80fd5b806341fee44a1161029a57806341fee44a146105f457806345ad6063146106595780634fb3ccc51461067857806354fd4d50146106ab575f80fd5b80633b575407146105a25780633e64ce99146105c15780633f4ba83a146105e0575f80fd5b806317442b7011610335578063202eac5711610305578063202eac57146105265780632c524c42146105455780633400288b1461056457806334dafd6b14610583575f80fd5b806317442b70146104a957806318aed921146104c95780631b62636c146104e85780631ba9a45814610507575f80fd5b806312056e2d1161037057806312056e2d1461042b57806313137d651461044a5780631568fc581461045d57806316762eed1461047c575f80fd5b80630511ef431461039657806305921740146103cb5780630b48a8b8146103e0575b5f80fd5b3480156103a1575f80fd5b506004546103b690600160881b900460ff1681565b60405190151581526020015b60405180910390f35b6103de6103d9366004614266565b610c7d565b005b3480156103eb575f80fd5b506104137f000000000000000000000000da5ddd7270381a7c2717ad10d1c0ecb19e3cdfb281565b6040516001600160a01b0390911681526020016103c2565b348015610436575f80fd5b506103de6104453660046142f7565b610d23565b6103de610458366004614328565b610db3565b348015610468575f80fd5b506103de6104773660046143e9565b610e6e565b348015610487575f80fd5b5061049b61049636600461441a565b610f43565b6040519081526020016103c2565b3480156104b4575f80fd5b506040805160018082526020820152016103c2565b3480156104d4575f80fd5b506103de6104e3366004614461565b611004565b3480156104f3575f80fd5b506103de610502366004614461565b6110ea565b348015610512575f80fd5b506103de610521366004614461565b61116a565b348015610531575f80fd5b506103de61054036600461447c565b6111e5565b348015610550575f80fd5b506103de61055f366004614461565b61128c565b34801561056f575f80fd5b506103de61057e3660046144b1565b611308565b34801561058e575f80fd5b506103de61059d3660046144e6565b611347565b3480156105ad575f80fd5b506103de6105bc366004614461565b61149b565b3480156105cc575f80fd5b5061049b6105db36600461441a565b611519565b3480156105eb575f80fd5b506103de6115ba565b3480156105ff575f80fd5b5061063861060e366004614461565b60036020525f908152604090205460ff8082169161010081049091169062010000900461ffff1683565b604080519315158452911515602084015261ffff16908201526060016103c2565b348015610664575f80fd5b506103de61067336600461454d565b611622565b348015610683575f80fd5b506104137f0000000000000000000000002baf79bca4d48ee6890a09243483e458966fb95781565b3480156106b6575f80fd5b506106bf6116ab565b6040516103c291906145b3565b3480156106d7575f80fd5b506103de6106e636600461454d565b6116d9565b61049b6106f93660046145c5565b61177f565b348015610709575f80fd5b50610753610718366004614461565b60066020525f90815260409020805460019091015460ff80831692610100810482169262010000820483169263010000009092049091169085565b6040805195151586529315156020860152911515928401929092529015156060830152608082015260a0016103c2565b34801561078e575f80fd5b506104137f000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa81565b3480156107c1575f80fd5b506103de6107d0366004614461565b61194f565b3480156107e0575f80fd5b5061049b6107ef36600461460c565b6119c9565b3480156107ff575f80fd5b506103de61080e366004614681565b611ac9565b34801561081e575f80fd5b506103de61082d366004614461565b611cb4565b34801561083d575f80fd5b506103de61084c3660046146e7565b611d98565b34801561085c575f80fd5b5061087061086b3660046144b1565b611e2a565b6040516001600160401b0390911681526020016103c2565b348015610893575f80fd5b506103de611e32565b3480156108a7575f80fd5b506103de6108b636600461470d565b611ea0565b61049b6108c936600461441a565b611f1e565b3480156108d9575f80fd5b505f54610413906001600160a01b031681565b3480156108f7575f80fd5b506103de610906366004614728565b612129565b348015610916575f80fd5b5061049b61092536600461477c565b60056020525f908152604090205481565b348015610941575f80fd5b506103de610950366004614461565b612242565b348015610960575f80fd5b5061049b61096f36600461441a565b6122c4565b34801561097f575f80fd5b5060045461087090600160401b90046001600160401b031681565b3480156109a5575f80fd5b506103de6109b4366004614461565b612389565b3480156109c4575f80fd5b506103de6109d3366004614793565b612402565b3480156109e3575f80fd5b506004546103b690600160801b900460ff1681565b348015610a03575f80fd5b506103de610a123660046147db565b6124be565b348015610a22575f80fd5b5030610413565b348015610a34575f80fd5b5061049b610a4336600461454d565b60076020525f908152604090205481565b348015610a5f575f80fd5b506103de610a6e366004614461565b6125bb565b348015610a7e575f80fd5b50600154610413906001600160a01b031681565b348015610a9d575f80fd5b506103de610aac366004614461565b612637565b348015610abc575f80fd5b506103de610acb366004614461565b612718565b348015610adb575f80fd5b50610b19610aea36600461454d565b60086020525f908152604090205460ff808216916101008104909116906201000090046001600160801b031683565b60408051931515845291151560208401526001600160801b0316908201526060016103c2565b348015610b4a575f80fd5b506103de610b5936600461454d565b6127c2565b348015610b69575f80fd5b5061049b610b7836600461481d565b612842565b348015610b88575f80fd5b50600454610ba390600160901b90046001600160701b031681565b6040516001600160701b0390911681526020016103c2565b348015610bc6575f80fd5b50600454610870906001600160401b031681565b348015610be5575f80fd5b506103de610bf4366004614461565b61288d565b348015610c04575f80fd5b506103de610c13366004614461565b61291c565b61049b610c26366004614892565b612997565b348015610c36575f80fd5b506104137f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f81565b348015610c69575f80fd5b506103b6610c78366004614936565b612ac0565b610c92335f356001600160e01b031916612af4565b610cb75760405162461bcd60e51b8152600401610cae90614950565b60405180910390fd5b600254600114610cd95760405162461bcd60e51b8152600401610cae90614976565b60028055600454600160801b900460ff1615610d085760405163e0f9e71d60e01b815260040160405180910390fd5b610d16868686868686612b9a565b5050600160025550505050565b610d38335f356001600160e01b031916612af4565b610d545760405162461bcd60e51b8152600401610cae90614950565b6203f480816001600160401b03161115610d8157604051631fac010160e21b815260040160405180910390fd5b600480546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b7f000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa6001600160a01b03163314610dfe576040516391ac5e4f60e01b8152336004820152602401610cae565b60208701803590610e1890610e13908a61454d565b612cc6565b14610e5657610e2a602088018861454d565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610cae565b610e6587878787878787612d01565b50505050505050565b610e83335f356001600160e01b031916612af4565b610e9f5760405162461bcd60e51b8152600401610cae90614950565b806001600160801b03165f03610ec85760405163c80ed59560e01b815260040160405180910390fd5b63ffffffff82165f81815260086020908152604091829020805462010000600160901b031916620100006001600160801b038716908102919091178255835194855291840191909152917f0aa48359f83e8464fda3f4ea4bd3f2d6af01e90b46ab9464aa7d538e1772947a91015b60405180910390a1505050565b5f610f59335f356001600160e01b031916612af4565b610f755760405162461bcd60e51b8152600401610cae90614950565b600254600114610f975760405162461bcd60e51b8152600401610cae90614976565b60028055610fa6335f81612402565b610fb285858585612dbe565b9050846001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436485604051610fef91815260200190565b60405180910390a26001600255949350505050565b611019335f356001600160e01b031916612af4565b6110355760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805462ffffff191662010101179055517fd658022b1a3aaf6ad3b3c615253712807f21a8f7bc3e4996e10618175d4afb2b9190a26040516001600160a01b038216907f79fc685a7dbabb75a67df5e69a90602cef1f19bc465b060eab1ac56685e04a13905f90a26040516001600160a01b038216907f3afb02134e37f7205acf470adc2fc4ebb70614b1599a602d069790915380e2aa905f90a250565b6110ff335f356001600160e01b031916612af4565b61111b5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805462ff0000191662010000179055517f3afb02134e37f7205acf470adc2fc4ebb70614b1599a602d069790915380e2aa9190a250565b61117f335f356001600160e01b031916612af4565b61119b5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805462ff000019169055517f77cb944c14da76928795279d1519ce9150085a06e0a53c61d5a86fc4e0fd57c69190a250565b6111fa335f356001600160e01b031916612af4565b6112165760405162461bcd60e51b8152600401610cae90614950565b63ffffffff82165f908152600860205260409020805460ff19166001178155611248836001600160a01b038416612fd8565b6040805163ffffffff851681526001600160a01b03841660208201527fe925de263dcdbdc20307c9ab92758ed8cc0edf3d173dad4a3aa54c070f27a5439101610f36565b6112a1335f356001600160e01b031916612af4565b6112bd5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805460ff19166001179055517fd658022b1a3aaf6ad3b3c615253712807f21a8f7bc3e4996e10618175d4afb2b9190a250565b61131d335f356001600160e01b031916612af4565b6113395760405162461bcd60e51b8152600401610cae90614950565b6113438282612fd8565b5050565b61135c335f356001600160e01b031916612af4565b6113785760405162461bcd60e51b8152600401610cae90614950565b82801561138c57506001600160801b038116155b156113aa5760405163c80ed59560e01b815260040160405180910390fd5b60408051606081018252851515815284151560208083019182526001600160801b0385811684860190815263ffffffff8b165f908152600890935294909120925183549251945161ffff1990931690151561ff00191617610100941515949094029390931762010000600160901b03191662010000919093160291909117905561143d856001600160a01b038416612fd8565b6040805163ffffffff871681528515156020820152841515818301526001600160a01b038416606082015290517f5dbe727bffd24a6d61a5aeef919510389c66c0deeaa82634862cf4f098961fb89181900360800190a15050505050565b6114b0335f356001600160e01b031916612af4565b6114cc5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805461ff001916610100179055517f79fc685a7dbabb75a67df5e69a90602cef1f19bc465b060eab1ac56685e04a139190a250565b5f61152f335f356001600160e01b031916612af4565b61154b5760405162461bcd60e51b8152600401610cae90614950565b60025460011461156d5760405162461bcd60e51b8152600401610cae90614976565b6002805561157d85858585612dbe565b9050846001600160a01b03167fdcc60b41ff1c604459e6aa4a7299817416b19fc586a392f111646e26597c4af985604051610fef91815260200190565b6115cf335f356001600160e01b031916612af4565b6115eb5760405162461bcd60e51b8152600401610cae90614950565b6004805460ff60801b191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d16933905f90a1565b611637335f356001600160e01b031916612af4565b6116535760405162461bcd60e51b8152600401610cae90614950565b63ffffffff81165f81815260086020908152604091829020805461ff0019168155915192835290917fc45af64a13a09ef916a1114c59589294ec9c3095f2bfbbb093a7a96656858ded91015b60405180910390a15050565b60606116b5613025565b6040516020016116c5919061499a565b604051602081830303815290604052905090565b6116ee335f356001600160e01b031916612af4565b61170a5760405162461bcd60e51b8152600401610cae90614950565b63ffffffff81165f908152600860205260408120805471ffffffffffffffffffffffffffffffffffff19169055611742908290612fd8565b60405163ffffffff821681527f11a9d1a77f76361ed131c19b1dc5758504c51dbde2e49fc973a0ef9577ad13d5906020015b60405180910390a150565b5f611795335f356001600160e01b031916612af4565b6117b15760405162461bcd60e51b8152600401610cae90614950565b6002546001146117d35760405162461bcd60e51b8152600401610cae90614976565b600280556117e46020830183614461565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601611822576040516316df5df960e31b815260040160405180910390fd5b5f6118386118336020860186614461565b61305d565b905061187361184a6020860186614461565b6020860135606087013561186460a0890160808a016149d1565b8860a001358960c00135613118565b6118956118836020860186614461565b85602001358660400135333386613270565b92506118dc9050336118aa6020860186614461565b6004546020870135908690600160401b90046001600160401b03166118d76101808a016101608b01614461565b613512565b6001600160601b03821115611904576040516389588ab360e01b815260040160405180910390fd5b61194482611919610100860160e08701614461565b6119276101008701876149ea565b61193961014089016101208a01614461565b886101400135612b9a565b506001600255919050565b611964335f356001600160e01b031916612af4565b6119805760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805461ff0019169055517f039bcf51833310242b8b7c6aa0fbabf1bf2b5e5270807ee020f1920ef200666b9190a250565b5f6119df335f356001600160e01b031916612af4565b6119fb5760405162461bcd60e51b8152600401610cae90614950565b600254600114611a1d5760405162461bcd60e51b8152600401610cae90614976565b600280558873eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601611a60576040516316df5df960e31b815260040160405180910390fd5b5f611a6a8b61305d565b9050611a7a8b8b8a8a8a8a613118565b611a888b8b8b333386613270565b9250611ab6338c8c86600460089054906101000a90046001600160401b03166001600160401b031689613512565b5050600160025598975050505050505050565b611ade335f356001600160e01b031916612af4565b611afa5760405162461bcd60e51b8152600401610cae90614950565b81611b058442614a40565b10611b2357604051634c1eef1760e11b815260040160405180910390fd5b5f87878787878787604051602001611b419796959493929190614a53565b60408051601f1981840301815291815281516020928301205f8c815260059093529120549091508114611b875760405163fa174ecb60e01b815260040160405180910390fd5b5f898152600560205260408120556001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14611bbf5786611be1565b7f000000000000000000000000da5ddd7270381a7c2717ad10d1c0ecb19e3cdfb25b6040516318457e6160e01b81529097506001600160a01b037f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f16906318457e6190611c38908b908b908b9083908c90600401614a90565b5f604051808303815f87803b158015611c4f575f80fd5b505af1158015611c61573d5f803e3d5ffd5b50505050876001600160a01b0316897faf98ea774275cadfa3e477a7b52cba03e01197445a76bd5d0d561608708c362483604051611ca191815260200190565b60405180910390a3505050505050505050565b5f546001600160a01b0316331480611d45575060015460405163b700961360e01b81526001600160a01b039091169063b700961390611d0690339030906001600160e01b03195f351690600401614ac3565b602060405180830381865afa158015611d21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d459190614af0565b611d4d575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b611dad335f356001600160e01b031916612af4565b611dc95760405162461bcd60e51b8152600401610cae90614950565b6004805471ffffffffffffffffffffffffffffffffffff16600160901b6001600160701b038416908102919091179091556040519081527f752cd3d8df6864142257fa3a2e02aedf2dc09f1875c2a25b4f117d45c7334d5d90602001611774565b5f5b92915050565b611e47335f356001600160e01b031916612af4565b611e635760405162461bcd60e51b8152600401610cae90614950565b6004805460ff60801b1916600160801b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e752905f90a1565b611eb5335f356001600160e01b031916612af4565b611ed15760405162461bcd60e51b8152600401610cae90614950565b60048054821515600160881b0260ff60881b199091161790556040517fa3fe47e2502292ca20854524008d366d3cad5da2426cfb2484099f06f328e4a09061177490831515815260200190565b5f611f34335f356001600160e01b031916612af4565b611f505760405162461bcd60e51b8152600401610cae90614950565b600254600114611f725760405162461bcd60e51b8152600401610cae90614976565b600280555f611f808661305d565b90505f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038816016120bc57345f03611fc85760405163259be69560e11b815260040160405180910390fd5b7f000000000000000000000000da5ddd7270381a7c2717ad10d1c0ecb19e3cdfb26001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015612021575f80fd5b505af1158015612033573d5f803e3d5ffd5b503499506120929350506001600160a01b037f000000000000000000000000da5ddd7270381a7c2717ad10d1c0ecb19e3cdfb21691507f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f905088613628565b507f000000000000000000000000da5ddd7270381a7c2717ad10d1c0ecb19e3cdfb29550306120de565b34156120db57604051631cf02cf960e21b815260040160405180910390fd5b50335b6120ec878787843387613270565b925061211a33888886600460089054906101000a90046001600160401b03166001600160401b031689613512565b50506001600255949350505050565b61213e335f356001600160e01b031916612af4565b61215a5760405162461bcd60e51b8152600401610cae90614950565b6103e861ffff8216111561218157604051636c5cde8760e01b815260040160405180910390fd5b6040805160608082018352851515808352851515602080850182815261ffff8881168789018181526001600160a01b038e165f818152600387528b902099518a549551925161ffff1990961690151561ff00191617610100921515929092029190911763ffff0000191662010000949093169390930291909117909655865193845290830191909152938101929092527fe08301321781ac43935a2099b2c3fd42de0a0ee87a519cac00e8c9cecd26ff12910160405180910390a250505050565b612257335f356001600160e01b031916612af4565b6122735760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805463ff00000019166301000000179055517f5e92c085dffcb69d025c31c9ed03d1869e4737ba81e8649c623398caa1b72f159190a250565b5f6122da335f356001600160e01b031916612af4565b6122f65760405162461bcd60e51b8152600401610cae90614950565b6002546001146123185760405162461bcd60e51b8152600401610cae90614976565b600280555f6123268661305d565b9050612336868686338786613270565b9150856001600160a01b03167f6f9b974223f85a1ae805c33b8b519039e2435481d949db1110de151a94d587af8660405161237391815260200190565b60405180910390a2506001600255949350505050565b61239e335f356001600160e01b031916612af4565b6123ba5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805460ff19169055517fae893dda71e2eee548f8291f458cceae4bd22b56a79906928591e4420444c0e99190a250565b61240d8383836136aa565b600454600160881b900460ff16801561244557506001600160a01b0381165f908152600660205260409020546301000000900460ff16155b1561247e57604051632821264f60e01b81526001600160a01b038085166004830152808416602483015282166044820152606401610cae565b6001600160a01b0383165f908152600660205260409020600101544210156124b95760405163f64059db60e01b815260040160405180910390fd5b505050565b6124d3335f356001600160e01b031916612af4565b6124ef5760405162461bcd60e51b8152600401610cae90614950565b806001600160801b03165f036125185760405163c80ed59560e01b815260040160405180910390fd5b63ffffffff83165f908152600860205260409020805461010071ffffffffffffffffffffffffffffffffff0019909116620100006001600160801b038516021717815561256e846001600160a01b038516612fd8565b6040805163ffffffff861681526001600160a01b03851660208201527f34fe916485e02ec88e487b0e611e5c9bacabba9e3eaae7a900aa08be8197d419910160405180910390a150505050565b6125d0335f356001600160e01b031916612af4565b6125ec5760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805463ff00000019169055517f1c2a701d65e1c6e2860263c884eae0b10db82e3ddd60640d53c7d53c6c998e799190a250565b61264c335f356001600160e01b031916612af4565b6126685760405162461bcd60e51b8152600401610cae90614950565b6001600160a01b0381165f81815260066020526040808220805462ffffff19169055517fae893dda71e2eee548f8291f458cceae4bd22b56a79906928591e4420444c0e99190a26040516001600160a01b038216907f039bcf51833310242b8b7c6aa0fbabf1bf2b5e5270807ee020f1920ef200666b905f90a26040516001600160a01b038216907f77cb944c14da76928795279d1519ce9150085a06e0a53c61d5a86fc4e0fd57c6905f90a250565b61272d335f356001600160e01b031916612af4565b6127495760405162461bcd60e51b8152600401610cae90614950565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa169063ca5eb5e1906024015f604051808303815f87803b1580156127a9575f80fd5b505af11580156127bb573d5f803e3d5ffd5b5050505050565b6127d7335f356001600160e01b031916612af4565b6127f35760405162461bcd60e51b8152600401610cae90614950565b63ffffffff81165f81815260086020908152604091829020805460ff19168155915192835290917f1cb867ed6a020e020ea220d4f48bb8e36552abf9095e093e377d33933f2b31e4910161169f565b604080518082019091526001600160601b03861681526001600160a01b03851660208201525f90816128738261374d565b905061288181878787613794565b98975050505050505050565b6001600160a01b0381165f9081526006602052604090205460ff16156128de57604051632821264f60e01b81526001600160a01b03821660048201525f602482018190526044820152606401610cae565b6001600160a01b0381165f908152600660205260409020600101544210156129195760405163f64059db60e01b815260040160405180910390fd5b50565b612931335f356001600160e01b031916612af4565b61294d5760405162461bcd60e51b8152600401610cae90614950565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6129ad335f356001600160e01b031916612af4565b6129c95760405162461bcd60e51b8152600401610cae90614950565b6002546001146129eb5760405162461bcd60e51b8152600401610cae90614976565b600280558973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601612a2e576040516316df5df960e31b815260040160405180910390fd5b5f612a388c61305d565b9050612a488c8c8c333386613270565b9250612a76338d8d86600460089054906101000a90046001600160401b03166001600160401b031689613512565b6001600160601b03831115612a9e576040516389588ab360e01b815260040160405180910390fd5b612aac838a8a8a8a8a612b9a565b505060016002559998505050505050505050565b5f602082018035906007908390612ad7908661454d565b63ffffffff16815260208101919091526040015f20541492915050565b6001545f906001600160a01b03168015801590612b7b575060405163b700961360e01b81526001600160a01b0382169063b700961390612b3c90879030908890600401614ac3565b602060405180830381865afa158015612b57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b7b9190614af0565b80612b9257505f546001600160a01b038581169116145b949350505050565b612ba5335f33612402565b6040516318457e6160e01b81525f600482018190526024820181905260448201523360648201526001600160601b03871660848201527f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f6001600160a01b0316906318457e619060a4015f604051808303815f87803b158015612c26575f80fd5b505af1158015612c38573d5f803e3d5ffd5b5050604080518082019091526001600160601b03891681526001600160a01b038816602082015291505f9050612c6d8261374d565b90505f612c7d8288888888613945565b6040516001600160601b038b1681529091506001600160a01b0389169082907fe0ec62d39b054dc2fd626dbc271483735df6e6fa1ef8389754bf8ab27a75eab290602001611ca1565b63ffffffff81165f9081526007602052604081205480611e2c5760405163f6ff4fb760e01b815263ffffffff84166004820152602401610cae565b5f600881612d1260208b018b61454d565b63ffffffff16815260208082019290925260409081015f208151606081018352905460ff808216151580845261010083049091161515948301949094526201000090046001600160801b0316918101919091529150612d9a57612d78602089018961454d565b6040516315b73a2960e21b815263ffffffff9091166004820152602401610cae565b5f612da78688018861477c565b9050612db38882613b4a565b505050505050505050565b6004545f90600160801b900460ff1615612deb5760405163e0f9e71d60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600360209081526040918290208251606081018452905460ff80821615158352610100820416151592820183905262010000900461ffff1692810192909252612e555760405163645fd19f60e11b815260040160405180910390fd5b845f03612e7557604051630ea3153160e21b815260040160405180910390fd5b604051634104b9ed60e11b81526001600160a01b038781166004830152612f2b917f0000000000000000000000002baf79bca4d48ee6890a09243483e458966fb9579091169063820973da90602401602060405180830381865afa158015612edf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f039190614b0b565b86907f00000000000000000000000000000000000000000000000000000000000f4240613c36565b915083821015612f4e576040516302620f6160e61b815260040160405180910390fd5b6040516318457e6160e01b81526001600160a01b037f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f16906318457e6190612fa29086908a90879033908c90600401614a90565b5f604051808303815f87803b158015612fb9575f80fd5b505af1158015612fcb573d5f803e3d5ffd5b5050505050949350505050565b63ffffffff82165f81815260076020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910161169f565b606061304d604080518082019091526009815268426173652056302e3160b81b602082015290565b6040516020016116c59190614b22565b604080516060810182525f8082526020820181905291810191909152600454600160801b900460ff16156130a45760405163e0f9e71d60e01b815260040160405180910390fd5b506001600160a01b0381165f908152600360209081526040918290208251606081018452905460ff8082161515808452610100830490911615159383019390935262010000900461ffff16928101929092526131135760405163645fd19f60e11b815260040160405180910390fd5b919050565b60405163d505accf60e01b81523360048201526001600160a01b037f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f81166024830152604482018790526064820186905260ff8516608483015260a4820184905260c4820183905287169063d505accf9060e4015f604051808303815f87803b1580156131a3575f80fd5b505af19250505080156131b4575060015b61326857604051636eb1769f60e11b81523360048201526001600160a01b037f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f8116602483015286919088169063dd62ed3e90604401602060405180830381865afa158015613225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132499190614b0b565b1015613268576040516301b8851f60e41b815260040160405180910390fd5b505050505050565b5f61327c8484336136aa565b600454600160901b90046001600160701b03165f8790036132b05760405163259be69560e11b815260040160405180910390fd5b604051634104b9ed60e11b81526001600160a01b038981166004830152613366917f00000000000000000000000000000000000000000000000000000000000f4240917f0000000000000000000000002baf79bca4d48ee6890a09243483e458966fb957169063820973da90602401602060405180830381865afa15801561333a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061335e9190614b0b565b899190613c36565b91505f836040015161ffff161161337d57816133a0565b6133a083604001516127106133929190614b5b565b839061ffff16612710613c36565b9150858210156133c35760405163097b2ad560e31b815260040160405180910390fd5b6001600160701b038181161461348657806001600160701b03167f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613439573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061345d9190614b0b565b6134679084614b7d565b11156134865760405163ed32f3bb60e01b815260040160405180910390fd5b604051631ceb5d1960e11b81526001600160a01b037f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f16906339d6ba32906134da9088908c908c908a908990600401614a90565b5f604051808303815f87803b1580156134f1575f80fd5b505af1158015613503573d5f803e3d5ffd5b50505050509695505050505050565b600480545f9190829061352d906001600160401b0316614b90565b82546001600160401b039182166101009390930a8381029202191617909155905082156135be5761355e8342614b7d565b6001600160a01b0388165f90815260066020908152604091829020600101929092555161359991899189918991899142918a918a9101614a53565b60408051601f1981840301815291815281516020928301205f84815260059093529120555b6040805182815260208101879052908101859052426060820152608081018490526001600160a01b0380841691888216918a16907fbd5bec50a3d7a5321d4e870bbb48c3589043dbcea81010e6de54a32733aef5929060a00160405180910390a450505050505050565b5f60405163095ea7b360e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806136a45760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610cae565b50505050565b6001600160a01b0383165f9081526006602052604090205460ff16806136ec57506001600160a01b0382165f90815260066020526040902054610100900460ff165b8061371457506001600160a01b0381165f9081526006602052604090205462010000900460ff165b156124b957604051632821264f60e01b81526001600160a01b038085166004830152808416602483015282166044820152606401610cae565b80515f906001600160601b03101561377857604051633524486360e01b815260040160405180910390fd5b81516020909201516001600160a01b031660a09290921b171790565b5f6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015906137f457507f00000000000000000000000000000000000000000000000000000000000000456001600160a01b0316826001600160a01b031614155b1561381257604051637f3cd08160e11b815260040160405180910390fd5b5f61381f8486018661454d565b63ffffffff81165f908152600860209081526040918290208251606081018452905460ff8082161515835261010082041615159282018390526201000090046001600160801b031692810192909252919250906138975760405163420eae3760e01b815263ffffffff83166004820152602401610cae565b5f876040516020016138ab91815260200190565b60405160208183030381529060405290505f6138d583604001515f6138ce613c51565b9190613c69565b90505f6139048584846001600160a01b038b1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415613cce565b90506001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14613934578060200151613937565b80515b9a9950505050505050505050565b5f806139538587018761454d565b63ffffffff81165f908152600860209081526040918290208251606081018452905460ff8082161515835261010082041615159282018390526201000090046001600160801b031692810192909252919250906139cb5760405163420eae3760e01b815263ffffffff83166004820152602401610cae565b5f886040516020016139df91815260200190565b60405160208183030381529060405290505f613a0283604001515f6138ce613c51565b90505f613a318584846001600160a01b038c1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415613cce565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03891601613a98578051871015613a9357805160405163f5ac3fa760e01b815263ffffffff87166004820152602481019190915260448101889052606401610cae565b613b2b565b7f00000000000000000000000000000000000000000000000000000000000000456001600160a01b0316886001600160a01b031603613b12578681602001511115613a9357602081015160405163f5ac3fa760e01b815263ffffffff87166004820152602481019190915260448101889052606401610cae565b604051637f3cd08160e11b815260040160405180910390fd5b5f613b398685858533613dac565b519c9b505050505050505050505050565b60408051808201825260a083901c8082526001600160a01b03808516602084018190529351631ceb5d1960e11b815292937f000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f909116926339d6ba3292613bb9925f928392839291600401614a90565b5f604051808303815f87803b158015613bd0575f80fd5b505af1158015613be2573d5f803e3d5ffd5b5050505080602001516001600160a01b0316837fb944fddc61d7fedb8b736790454ba972000703b0d21c7481d6dbf95b7c2cc2f1835f0151604051613c2991815260200190565b60405180910390a3505050565b5f825f190484118302158202613c4a575f80fd5b5091020490565b604051600360f01b60208201526060906022016116c5565b6060836003613c78825f613eb2565b61ffff1614613cab57613c8b815f613eb2565b604051633a51740d60e01b815261ffff9091166004820152602401610cae565b5f613cb68585613f0e565b9050613cc486600183613f87565b9695505050505050565b604080518082019091525f80825260208201527f000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa6001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001613d3089612cc6565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401613d65929190614bb5565b6040805180830381865afa158015613d7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613da39190614c85565b95945050505050565b613db46141b5565b5f613dc1845f0151613ff0565b602085015190915015613ddb57613ddb8460200151614017565b7f000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa6001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001613e2b8c612cc6565b81526020018a81526020018981526020015f8960200151111515815250866040518463ffffffff1660e01b8152600401613e66929190614bb5565b60806040518083038185885af1158015613e82573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613ea79190614c9f565b979650505050505050565b5f613ebe826002614b7d565b83511015613f055760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606401610cae565b50016002015190565b60606001600160801b03821615613f5657604080516001600160801b0319608086811b8216602084015285901b16603082015201604051602081830303815290604052613f80565b6040516001600160801b0319608085901b1660208201526030016040516020818303038152906040525b9392505050565b6060836003613f96825f613eb2565b61ffff1614613fa957613c8b815f613eb2565b846001613fb685516140f6565b613fc1906001614d10565b8686604051602001613fd7959493929190614d2b565b6040516020818303038152906040529150509392505050565b5f813414614013576040516304fb820960e51b8152346004820152602401610cae565b5090565b5f7f000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa6001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015614074573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140989190614d91565b90506001600160a01b0381166140c1576040516329b99a9560e11b815260040160405180910390fd5b6113436001600160a01b038216337f000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa85614124565b5f61ffff821115614013576040516306dfcc6560e41b81526010600482015260248101839052604401610cae565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806127bb5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610cae565b60405180606001604052805f80191681526020015f6001600160401b031681526020016141f360405180604001604052805f81526020015f81525090565b905290565b80356001600160601b0381168114613113575f80fd5b6001600160a01b0381168114612919575f80fd5b5f8083601f840112614232575f80fd5b5081356001600160401b03811115614248575f80fd5b60208301915083602082850101111561425f575f80fd5b9250929050565b5f805f805f8060a0878903121561427b575f80fd5b614284876141f8565b955060208701356142948161420e565b945060408701356001600160401b038111156142ae575f80fd5b6142ba89828a01614222565b90955093505060608701356142ce8161420e565b80925050608087013590509295509295509295565b6001600160401b0381168114612919575f80fd5b5f60208284031215614307575f80fd5b8135613f80816142e3565b5f60608284031215614322575f80fd5b50919050565b5f805f805f805f60e0888a03121561433e575f80fd5b6143488989614312565b96506060880135955060808801356001600160401b038082111561436a575f80fd5b6143768b838c01614222565b909750955060a08a0135915061438b8261420e565b90935060c089013590808211156143a0575f80fd5b506143ad8a828b01614222565b989b979a50959850939692959293505050565b803563ffffffff81168114613113575f80fd5b80356001600160801b0381168114613113575f80fd5b5f80604083850312156143fa575f80fd5b614403836143c0565b9150614411602084016143d3565b90509250929050565b5f805f806080858703121561442d575f80fd5b84356144388161420e565b9350602085013592506040850135915060608501356144568161420e565b939692955090935050565b5f60208284031215614471575f80fd5b8135613f808161420e565b5f806040838503121561448d575f80fd5b614496836143c0565b915060208301356144a68161420e565b809150509250929050565b5f80604083850312156144c2575f80fd5b6144cb836143c0565b946020939093013593505050565b8015158114612919575f80fd5b5f805f805f60a086880312156144fa575f80fd5b614503866143c0565b94506020860135614513816144d9565b93506040860135614523816144d9565b925060608601356145338161420e565b9150614541608087016143d3565b90509295509295909350565b5f6020828403121561455d575f80fd5b613f80826143c0565b5f5b83811015614580578181015183820152602001614568565b50505f910152565b5f815180845261459f816020860160208601614566565b601f01601f19169290920160200192915050565b602081525f613f806020830184614588565b5f602082840312156145d5575f80fd5b81356001600160401b038111156145ea575f80fd5b82016101808185031215613f80575f80fd5b803560ff81168114613113575f80fd5b5f805f805f805f80610100898b031215614624575f80fd5b883561462f8161420e565b975060208901359650604089013595506060890135945061465260808a016145fc565b935060a0890135925060c0890135915060e08901356146708161420e565b809150509295985092959890939650565b5f805f805f805f80610100898b031215614699575f80fd5b8835975060208901356146ab8161420e565b965060408901356146bb8161420e565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356146708161420e565b5f602082840312156146f7575f80fd5b81356001600160701b0381168114613f80575f80fd5b5f6020828403121561471d575f80fd5b8135613f80816144d9565b5f805f806080858703121561473b575f80fd5b84356147468161420e565b93506020850135614756816144d9565b92506040850135614766816144d9565b9150606085013561ffff81168114614456575f80fd5b5f6020828403121561478c575f80fd5b5035919050565b5f805f606084860312156147a5575f80fd5b83356147b08161420e565b925060208401356147c08161420e565b915060408401356147d08161420e565b809150509250925092565b5f805f606084860312156147ed575f80fd5b6147f6846143c0565b925060208401356148068161420e565b9150614814604085016143d3565b90509250925092565b5f805f805f60808688031215614831575f80fd5b61483a866141f8565b9450602086013561484a8161420e565b935060408601356001600160401b03811115614864575f80fd5b61487088828901614222565b90945092505060608601356148848161420e565b809150509295509295909350565b5f805f805f805f805f6101008a8c0312156148ab575f80fd5b89356148b68161420e565b985060208a0135975060408a0135965060608a01356148d48161420e565b955060808a01356001600160401b038111156148ee575f80fd5b6148fa8c828d01614222565b90965094505060a08a013561490e8161420e565b925060c08a0135915060e08a01356149258161420e565b809150509295985092959850929598565b5f60608284031215614946575f80fd5b613f808383614312565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b6f02630bcb2b92d32b937902b18171896160851b81525f82516149c4816010850160208701614566565b9190910160100192915050565b5f602082840312156149e1575f80fd5b613f80826145fc565b5f808335601e198436030181126149ff575f80fd5b8301803591506001600160401b03821115614a18575f80fd5b60200191503681900382131561425f575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115611e2c57611e2c614a2c565b6001600160a01b039788168152958716602087015260408601949094526060850192909252608084015260a083015290911660c082015260e00190565b6001600160a01b039586168152938516602085015260408401929092529092166060820152608081019190915260a00190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f60208284031215614b00575f80fd5b8151613f80816144d9565b5f60208284031215614b1b575f80fd5b5051919050565b71021b937b9b99021b430b4b7102b18171896160751b81525f8251614b4e816012850160208701614566565b9190910160120192915050565b61ffff828116828216039080821115614b7657614b76614a2c565b5092915050565b80820180821115611e2c57611e2c614a2c565b5f6001600160401b03808316818103614bab57614bab614a2c565b6001019392505050565b6040815263ffffffff8351166040820152602083015160608201525f604084015160a06080840152614bea60e0840182614588565b90506060850151603f198483030160a0850152614c078282614588565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b5f60408284031215614c3d575f80fd5b604051604081018181106001600160401b0382111715614c6b57634e487b7160e01b5f52604160045260245ffd5b604052825181526020928301519281019290925250919050565b5f60408284031215614c95575f80fd5b613f808383614c2d565b5f60808284031215614caf575f80fd5b604051606081018181106001600160401b0382111715614cdd57634e487b7160e01b5f52604160045260245ffd5b604052825181526020830151614cf2816142e3565b6020820152614d048460408501614c2d565b60408201529392505050565b61ffff818116838216019080821115614b7657614b76614a2c565b5f8651614d3c818460208b01614566565b6001600160f81b031960f888811b82169285019283526001600160f01b031960f089901b16600184015286901b1660038201528351614d82816004840160208801614566565b01600401979650505050505050565b5f60208284031215614da1575f80fd5b8151613f808161420e56fea2646970667358221220477ebdb11d2799972741aff7ee136ed98da4f1fcc999373f2c8f496a929fcb7964736f6c63430008150033
0x0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7f0000000000000000000000002baf79bca4d48ee6890a09243483e458966fb957000000000000000000000000da5ddd7270381a7c2717ad10d1c0ecb19e3cdfb2000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaa0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d0000000000000000000000000000000000000000000000000000000000000045
----Decoded View------------Arg [0] : _owner (address): 0x5F2F11ad8656439d5C14d9B351f8b09cDaC2A02dArg [1] : _vault (address): 0xE003287E34fF16A109477e84A0D271C5c3dc3c7fArg [2] : _accountant (address): 0x2BAF79Bca4D48eE6890a09243483E458966fB957Arg [3] : _weth (address): 0xda5dDd7270381A7C2717aD10D1c0ecB19e3CDFb2Arg [4] : _lzEndPoint (address): 0xcb566e3B6934Fa77258d68ea18E931fa75e1aaAaArg [5] : _delegate (address): 0x5F2F11ad8656439d5C14d9B351f8b09cDaC2A02dArg [6] : _lzToken (address): 0x0000000000000000000000000000000000000045
----Encoded View------------Arg [0] : 0x0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02dArg [1] : 0x000000000000000000000000e003287e34ff16a109477e84a0d271c5c3dc3c7fArg [2] : 0x0000000000000000000000002baf79bca4d48ee6890a09243483e458966fb957Arg [3] : 0x000000000000000000000000da5ddd7270381a7c2717ad10d1c0ecb19e3cdfb2Arg [4] : 0x000000000000000000000000cb566e3b6934fa77258d68ea18e931fa75e1aaaaArg [5] : 0x0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02dArg [6] : 0x0000000000000000000000000000000000000000000000000000000000000045