Files
linea-monorepo/contracts/local-deployments-artifacts/dynamic-artifacts/TokenBridge.json
Andrei A. 390d6ff860 Feat/122 Add TokenBridge e2e tests (#210)
* fix: add mutex in account manager to avoid nonce issue

* fix: optimize global setup

* Limiting number of concurrent traces API requests for the local stack to avoid occasional OOM-s

* Limiting number of verticles for Traces API node

* Add E2E TokenBridge tests

* fixing test and adding concurency

* fixing test and adding concurency

* fixing test and adding concurency

* fixing test and adding concurency

* fixing nonce management

* deploying l2token for the L2 -> L1 test

* adjusting accounts for L2->L1 test

* adjusting l2TestContractAddress

* use nonce management for L1->L2 test

* adjusting the TestERC20 contract and tests

* rebasing with fix/133-improve-e2e-tests-performance

* fix: update jest config to exit even if there are open handles

* Trying out Besu untuned and raising limit per endpoint to 2 for traces

* Trying out Besu untuned and raising limit per endpoint to 2 for traces and Shomei node

* Using besu untuned for arithmetization as well

* Compile once and parallelise setRemoteTokenBridge

* feat: deploy smart contracts from artifacts + change e2e tests setup

* fix: update pnpm

* fix: remove compile contracts gradle task

* fix: remove compileContracts gradle task

* fix: refactor genesis generator dockerfile + downgrade l1-el-node besu version

* fix: move abi from e2e folder to contract folder + refactor contracts deployments scripts

* feat: add deployment script from artifacts for LineaRollupV6

* update pnpm version in get-started.md

* fix: update console log in deployment scripts

* fix: update besu version + fix deployment scripts

* correct addresses

* fix import

* use abi and bytecode for deployments

* use upgradable beacon for BridgedToken ABI deploys

* use saved abi and bytecode for TestERC20 deploy

* correct deployBridgedTokenAndTokenBridge casing

* optimize token bridge e2e calls

* use explicit message event data

* use precomputed nonces for e2e stack

---------

Co-authored-by: VGau <victorien.gauch@consensys.net>
Co-authored-by: Victorien Gauch <85494462+VGau@users.noreply.github.com>
Co-authored-by: Roman <4833306+Filter94@users.noreply.github.com>
Co-authored-by: thedarkjester <grant.southey@consensys.net>
Co-authored-by: The Dark Jester <thedarkjester@users.noreply.github.com>
2024-10-31 18:03:53 +01:00

1475 lines
127 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "TokenBridge",
"sourceName": "contracts/tokenBridge/TokenBridge.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "AlreadyBridgedToken",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "AlreadyBrigedToNativeTokenSet",
"type": "error"
},
{
"inputs": [],
"name": "ArrayLengthsDoNotMatch",
"type": "error"
},
{
"inputs": [],
"name": "CallerIsNotMessageService",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "DecimalsAreUnknown",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "permitData",
"type": "bytes4"
},
{
"internalType": "bytes4",
"name": "permitSelector",
"type": "bytes4"
}
],
"name": "InvalidPermitData",
"type": "error"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
}
],
"name": "IsNotPaused",
"type": "error"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
}
],
"name": "IsPaused",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "NativeToBridgedTokenAlreadySet",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "NotReserved",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "PermitNotAllowingBridge",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "PermitNotFromSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "remoteTokenBridge",
"type": "address"
}
],
"name": "RemoteTokenBridgeAlreadySet",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "ReservedToken",
"type": "error"
},
{
"inputs": [],
"name": "SenderNotAuthorized",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "StatusAddressNotAllowed",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "TokenNotDeployed",
"type": "error"
},
{
"inputs": [],
"name": "ZeroAddressNotAllowed",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ZeroAmountNotAllowed",
"type": "error"
},
{
"inputs": [],
"name": "ZeroHashNotAllowed",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "nativeToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "bridgedToken",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "BridgingFinalized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "nativeToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "bridgedToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "BridgingFinalizedV2",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "BridgingInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "BridgingInitiatedV2",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "nativeToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "customContract",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "setBy",
"type": "address"
}
],
"name": "CustomContractSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address[]",
"name": "tokens",
"type": "address[]"
},
{
"indexed": true,
"internalType": "address",
"name": "confirmedBy",
"type": "address"
}
],
"name": "DeploymentConfirmed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newMessageService",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "oldMessageService",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "setBy",
"type": "address"
}
],
"name": "MessageServiceUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "NewToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "bridgedToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "nativeToken",
"type": "address"
}
],
"name": "NewTokenDeployed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "PauseTypeRoleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "messageSender",
"type": "address"
},
{
"indexed": true,
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "remoteSender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "setter",
"type": "address"
}
],
"name": "RemoteSenderSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "remoteTokenBridge",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "setBy",
"type": "address"
}
],
"name": "RemoteTokenBridgeSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "ReservationRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "TokenDeployed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "TokenReserved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "enum IPauseManager.PauseType",
"name": "unPauseType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "UnPauseTypeRoleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "messageSender",
"type": "address"
},
{
"indexed": true,
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
}
],
"name": "UnPaused",
"type": "event"
},
{
"inputs": [],
"name": "CONTRACT_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PAUSE_ALL_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PAUSE_COMPLETE_TOKEN_BRIDGING_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PAUSE_INITIATE_TOKEN_BRIDGING_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REMOVE_RESERVED_TOKEN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SET_CUSTOM_CONTRACT_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SET_MESSAGE_SERVICE_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SET_REMOTE_TOKENBRIDGE_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SET_RESERVED_TOKEN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNPAUSE_ALL_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNPAUSE_COMPLETE_TOKEN_BRIDGING_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNPAUSE_INITIATE_TOKEN_BRIDGING_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_recipient",
"type": "address"
}
],
"name": "bridgeToken",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_recipient",
"type": "address"
},
{
"internalType": "bytes",
"name": "_permitData",
"type": "bytes"
}
],
"name": "bridgeTokenWithPermit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "bridgedToNativeToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_nativeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "_chainId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_tokenMetadata",
"type": "bytes"
}
],
"name": "completeBridging",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_tokens",
"type": "address[]"
}
],
"name": "confirmDeployment",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "defaultAdmin",
"type": "address"
},
{
"internalType": "address",
"name": "messageService",
"type": "address"
},
{
"internalType": "address",
"name": "tokenBeacon",
"type": "address"
},
{
"internalType": "uint256",
"name": "sourceChainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "targetChainId",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "reservedTokens",
"type": "address[]"
},
{
"components": [
{
"internalType": "address",
"name": "addressWithRole",
"type": "address"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPermissionsManager.RoleAddress[]",
"name": "roleAddresses",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPauseManager.PauseTypeRole[]",
"name": "pauseTypeRoles",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPauseManager.PauseTypeRole[]",
"name": "unpauseTypeRoles",
"type": "tuple[]"
}
],
"internalType": "struct ITokenBridge.InitializationData",
"name": "_initializationData",
"type": "tuple"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "_pauseType",
"type": "uint8"
}
],
"name": "isPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "messageService",
"outputs": [
{
"internalType": "contract IMessageService",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nativeToBridgedToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "_pauseType",
"type": "uint8"
}
],
"name": "pauseByType",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "pauseType",
"type": "bytes32"
}
],
"name": "pauseTypeStatuses",
"outputs": [
{
"internalType": "bool",
"name": "pauseStatus",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_defaultAdmin",
"type": "address"
},
{
"components": [
{
"internalType": "address",
"name": "addressWithRole",
"type": "address"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPermissionsManager.RoleAddress[]",
"name": "_roleAddresses",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPauseManager.PauseTypeRole[]",
"name": "_pauseTypeRoles",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "pauseType",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"internalType": "struct IPauseManager.PauseTypeRole[]",
"name": "_unpauseTypeRoles",
"type": "tuple[]"
}
],
"name": "reinitializePauseTypesAndPermissions",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "remoteSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "removeReserved",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_nativeToken",
"type": "address"
},
{
"internalType": "address",
"name": "_targetContract",
"type": "address"
}
],
"name": "setCustomContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_nativeTokens",
"type": "address[]"
}
],
"name": "setDeployed",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_messageService",
"type": "address"
}
],
"name": "setMessageService",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_remoteTokenBridge",
"type": "address"
}
],
"name": "setRemoteTokenBridge",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "setReserved",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "sourceChainId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetChainId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokenBeacon",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IPauseManager.PauseType",
"name": "_pauseType",
"type": "uint8"
}
],
"name": "unPauseByType",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615f4880620000f36000396000f3fe6080604052600436106200030b5760003560e01c806391d148541162000197578063ca41a24711620000e7578063d547741f1162000095578063e4d27451116200006c578063e4d274511462000a4e578063edc42a221462000a73578063fe3c50a01462000a9857600080fd5b8063d547741f14620009ed578063dfa96efb1462000a12578063e196fb5d1462000a2957600080fd5b8063ccf5a77c11620000ca578063ccf5a77c1462000962578063cdd914c51462000992578063cf4a720814620009b757600080fd5b8063ca41a24714620008e6578063cc5782f6146200092e57600080fd5b8063b3232bdf1162000145578063be46096f1162000128578063be46096f1462000855578063c483d838146200087a578063c986752a14620008b057600080fd5b8063b3232bdf146200080b578063bc61e733146200083057600080fd5b8063a217fddf116200017a578063a217fddf14620007a0578063a676e8ab14620007b7578063a6ef995f14620007dc57600080fd5b806391d1485414620007135780639ac25d08146200076a57600080fd5b80632f2ff15d116200025f578063522ea81a116200020d5780636a906b8011620001e45780636a906b80146200067857806380efb43a14620006ae5780638dae45dd14620006e457600080fd5b8063522ea81a14620005f55780635626fc25146200060c5780635a06a42a146200064257600080fd5b806336568abe116200024257806336568abe146200055f57806338b9033314620005845780634bf98dce14620005de57600080fd5b80632f2ff15d14620005045780633551237b146200052957600080fd5b80631544298e11620002bd578063248a9ca311620002a0578063248a9ca314620004755780632a564f3414620004a95780632e4c3fff14620004ce57600080fd5b80631544298e14620004375780631754f301146200045057600080fd5b80630f6f86ec11620002f25780630f6f86ec14620003715780631065a39914620003ea578063146ffb26146200040f57600080fd5b806301941d39146200031057806301ffc9a71462000337575b600080fd5b3480156200031d57600080fd5b50620003356200032f36600462004aff565b62000ace565b005b3480156200034457600080fd5b506200035c6200035636600462004bb8565b62000ca5565b60405190151581526020015b60405180910390f35b3480156200037e57600080fd5b50620003c46200039036600462004bfc565b61010860209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000368565b348015620003f757600080fd5b50620003356200040936600462004c2f565b62000d3f565b3480156200041c57600080fd5b506200042861010b5481565b60405190815260200162000368565b3480156200044457600080fd5b506200042861010a5481565b3480156200045d57600080fd5b50620003356200046f36600462004c52565b62000e54565b3480156200048257600080fd5b50620004286200049436600462004c85565b60009081526097602052604090206001015490565b348015620004b657600080fd5b5062000335620004c836600462004c9f565b62001237565b348015620004db57600080fd5b50620004287f8a7b208fd13ab36d18025be4f62b53d46aeb2cbe8958d2e13de74c040dddcddd81565b3480156200051157600080fd5b50620003356200052336600462004bfc565b62001496565b3480156200053657600080fd5b50620004287f19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a3581565b3480156200056c57600080fd5b50620003356200057e36600462004bfc565b620014bf565b3480156200059157600080fd5b50620005cf6040518060400160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525081565b60405162000368919062004d8b565b62000335620005ef36600462004e21565b62001576565b620003356200060636600462004ee0565b62001812565b3480156200061957600080fd5b50620004287f46e34517dc946faf87aabe65eb5b4fa06b974e5c8d72c5df73b9fb6ff7b6d80281565b3480156200064f57600080fd5b50620004287f50962b2d10066f5051f78d5ea04a3ab09b9c87dd1002962f0b1e30e66eeb80a581565b3480156200068557600080fd5b50620004287fd8b4c34c2ec1f3194471108c64ad2beda340c0337ee4ca35592f9ef270f4228b81565b348015620006bb57600080fd5b50620004287fbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b2481565b348015620006f157600080fd5b5060c954620003c49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200072057600080fd5b506200035c6200073236600462004bfc565b600091825260976020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156200077757600080fd5b50620004287f56bdc3c9ec86cb7db110a7699b2ade72f0b8819727d9f7d906b012641505fa7781565b348015620007ad57600080fd5b5062000428600081565b348015620007c457600080fd5b5062000335620007d636600462004f27565b62001f2e565b348015620007e957600080fd5b5060ca54620003c49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200081857600080fd5b50620003356200082a36600462004f47565b6200201a565b3480156200083d57600080fd5b506200035c6200084f36600462004c2f565b6200252b565b3480156200086257600080fd5b50620003356200087436600462004f27565b62002553565b3480156200088757600080fd5b50620004287feaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d81565b348015620008bd57600080fd5b50620004287f550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe81565b348015620008f357600080fd5b50620003c46200090536600462004f27565b6101096020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156200093b57600080fd5b506200035c6200094d36600462004c85565b60d56020526000908152604090205460ff1681565b3480156200096f57600080fd5b5061010754620003c49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200099f57600080fd5b5062000335620009b136600462004f27565b62002649565b348015620009c457600080fd5b50620004287f3900d9d72d5177a154375317154fdc0e08377e3134a8a5d21cadccf831cc231c81565b348015620009fa57600080fd5b506200033562000a0c36600462004bfc565b6200280e565b6200033562000a2336600462004fcb565b62002837565b34801562000a3657600080fd5b506200033562000a4836600462004c2f565b6200285f565b34801562000a5b57600080fd5b506200033562000a6d36600462005046565b6200294d565b34801562000a8057600080fd5b506200033562000a9236600462004f27565b62002d87565b34801562000aa557600080fd5b50620004287f77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce0081565b600054600290610100900460ff1615801562000af1575060005460ff8083169116105b62000b83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff83161761010017905573ffffffffffffffffffffffffffffffffffffffff881662000c02576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000c0f60008962002f10565b6000606555600060d55562000c2362003006565b62000c3185858585620030ab565b62000c3d8787620033a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148062000d3957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60d8600082600881111562000d585762000d58620050ca565b600881111562000d6c5762000d6c620050ca565b81526020019081526020016000205462000d86816200358a565b62000d91826200252b565b62000dcc57816040517f1865965400000000000000000000000000000000000000000000000000000000815260040162000b7a919062005135565b81600881111562000de15762000de1620050ca565b60d68054600190921b19909116905581600881111562000e055762000e05620050ca565b7fd071d2b85dec4489435b541d2f0e2570db09b09db9efd8703948d44a433df65a335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25050565b8173ffffffffffffffffffffffffffffffffffffffff811662000ea3576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff811662000ef2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe62000f1e816200358a565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152610109602052604090205486911615158062000f8c575061010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff85811685529252909120541615155b1562000fdd576040517f12f3df0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240162000b7a565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526101096020526040902054161562001057576040517ff8fb7c2700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260240162000b7a565b73ffffffffffffffffffffffffffffffffffffffff8516610222148062001095575073ffffffffffffffffffffffffffffffffffffffff8516610333145b80620010b8575073ffffffffffffffffffffffffffffffffffffffff8516610111145b1562001109576040517fd8ce8acb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260240162000b7a565b61010b5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168552925290912054161562001191576040517f022bc84100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816600482015260240162000b7a565b60008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808c168086529184528285208054918c167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155808652610109909452828520805490911682179055905133937f844cb5c635052898ad92bea4ece14519111765d835105e76aa1f77ad0d0aa81f91a450505050505050565b60c95473ffffffffffffffffffffffffffffffffffffffff16331462001289576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff93841693909216916367e404ce916004808201926020929091908290030181865afa15801562001301573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001327919062005145565b73ffffffffffffffffffffffffffffffffffffffff161462001375576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015620014915761010a5460009081526101086020526040812061033391858585818110620013ad57620013ad62005165565b9050602002016020810190620013c4919062004f27565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790558282828181106200142f576200142f62005165565b905060200201602081019062001446919062004f27565b73ffffffffffffffffffffffffffffffffffffffff167f91d24864a084ab70b268a1f865e757ca12006cf298d763b6be697302ef86498c60405160405180910390a260010162001378565b505050565b600082815260976020526040902060010154620014b3816200358a565b62001491838362002f10565b73ffffffffffffffffffffffffffffffffffffffff8116331462001566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840162000b7a565b62001572828262003599565b5050565b60005b81518110156200169a57600061010960008484815181106200159f576200159f62005165565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683529082019290925260400160002054169050806200164957828281518110620015f157620015f162005165565b60200260200101516040517fa5ea89da00000000000000000000000000000000000000000000000000000000815260040162000b7a919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b808383815181106200165f576200165f62005165565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015250806200169181620051c3565b91505062001579565b5060c95460ca5460405173ffffffffffffffffffffffffffffffffffffffff92831692639f3ce55a9234929116908290620016da908790602401620051fe565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2a564f3400000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526200178b939291906004016200525a565b6000604051808303818588803b158015620017a557600080fd5b505af1158015620017ba573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff167f59eab5b5f813ac9e0c10035dfb55b5e3419eff53c0f7a869fb3c22400ea036d682604051620018079190620051fe565b60405180910390a250565b8273ffffffffffffffffffffffffffffffffffffffff811662001861576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff8116620018b0576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8380600003620018f0576040517f4618044a0000000000000000000000000000000000000000000000000000000081526004810182905260240162000b7a565b620018fa62003655565b620019066007620036ca565b61010a5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808c168552925290912054167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeef8101620019b0576040517f6dad9c7800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015260240162000b7a565b73ffffffffffffffffffffffffffffffffffffffff80891660009081526101096020526040812054909116906060821562001a79576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018b905273ffffffffffffffffffffffffffffffffffffffff8c1690639dc29fac90604401600060405180830381600087803b15801562001a5457600080fd5b505af115801562001a69573d6000803e3d6000fd5b5050505061010b54915062001d35565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa15801562001ae7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b0d91906200529a565b905062001b3373ffffffffffffffffffffffffffffffffffffffff8d1633308e62003765565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8e16906370a0823190602401602060405180830381865afa15801562001ba0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bc691906200529a565b62001bd29190620052b4565b9a508b935073ffffffffffffffffffffffffffffffffffffffff851662001cc957610222610108600088815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b73ffffffffffffffffffffffffffffffffffffffff167f0f53e2a811b6fd2d6cd965fd6c27b44fb924ca39f7a7f321115705c22366d62360405160405180910390a25b73ffffffffffffffffffffffffffffffffffffffff85166103331462001d305762001cf48c62003843565b62001cff8d62003963565b62001d0a8e62003a70565b60405160200162001d1e93929190620052ca565b60405160208183030381529060405291505b859250505b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f3ce55a3460ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634878f8f898960405160240162001db395949392919062005307565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe4d2745100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815262001e64939291906004016200525a565b6000604051808303818588803b15801562001e7e57600080fd5b505af115801562001e93573d6000803e3d6000fd5b50505050508a73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8780a94875b70464f8ac6c28851501d32e7fd4ee574e4b94beb28923a3c42d9c8d60405162001f0f91815260200190565b60405180910390a4505050505062001f2660018055565b505050505050565b7fbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b2462001f5a816200358a565b60ca5473ffffffffffffffffffffffffffffffffffffffff161562001fc85760ca546040517f94fbfd2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240162000b7a565b62001fd38262003bb6565b604051339073ffffffffffffffffffffffffffffffffffffffff8416907fb044c1a1a05a729c402def784b4e4cb01612ff03eee6f0beb3eba0f0606260a190600090a35050565b6200202c604082016020830162004f27565b73ffffffffffffffffffffffffffffffffffffffff81166200207a576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200208c606083016040840162004f27565b73ffffffffffffffffffffffffffffffffffffffff8116620020da576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615808015620020fb5750600054600160ff909116105b80620021175750303b15801562002117575060005460ff166001145b620021a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840162000b7a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200220457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6200222d6200221760e08601866200534e565b620022276101008801886200534e565b620030ab565b6200224962002243604086016020870162004f27565b62003c76565b6200225362003006565b6200226e600062002268602087018762004f27565b62002f10565b620022876200228160c08601866200534e565b620033a7565b62002299606085016040860162004f27565b61010780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055606084013561010a55608084013561010b5560005b6200230360a0860186620053b9565b9050811015620024c05760006200231e60a0870187620053b9565b8381811062002331576200233162005165565b905060200201602081019062002348919062004f27565b73ffffffffffffffffffffffffffffffffffffffff160362002396576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010a5460009081526101086020526040812061011191620023bc60a0890189620053b9565b85818110620023cf57620023cf62005165565b9050602002016020810190620023e6919062004f27565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556200244b60a0860186620053b9565b828181106200245e576200245e62005165565b905060200201602081019062002475919062004f27565b73ffffffffffffffffffffffffffffffffffffffff167f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe960405160405180910390a2600101620022f4565b5080156200252557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000816008811115620025425762002542620050ca565b60d654600190911b16151592915050565b8073ffffffffffffffffffffffffffffffffffffffff8116620025a2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce00620025ce816200358a565b60c9805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560405191169133918391907fc96d462e42a71473da49a1d58c1754b9b2d319786692d621dc7f921331c517e990600090a450505050565b8073ffffffffffffffffffffffffffffffffffffffff811662002698576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8083166000908152610109602052604090205483911615158062002706575061010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff85811685529252909120541615155b1562002757576040517f12f3df0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240162000b7a565b7feaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d62002783816200358a565b61010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816808552925280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166101111790555190917f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe991a250505050565b6000828152609760205260409020600101546200282b816200358a565b62001491838362003599565b80156200284b576200284b85838362003da4565b6200285885858562001812565b5050505050565b60d76000826008811115620028785762002878620050ca565b60088111156200288c576200288c620050ca565b815260200190815260200160002054620028a6816200358a565b620028b1826200252b565b15620028ed57816040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b7a919062005135565b816008811115620029025762002902620050ca565b60d68054600190921b9091179055816008811115620029255762002925620050ca565b7f534f879afd40abb4e39f8e1b77a316be4c8e3521d9cf5a3a3db8959d574d45593362000e28565b6200295762003655565b60c95473ffffffffffffffffffffffffffffffffffffffff163314620029a9576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff93841693909216916367e404ce916004808201926020929091908290030181865afa15801562002a21573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a47919062005145565b73ffffffffffffffffffffffffffffffffffffffff161462002a95576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600862002aa281620036ca565b60008481526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808c1685529252822054169061022282148062002afd575073ffffffffffffffffffffffffffffffffffffffff8216610333145b1562002b2c5762002b2673ffffffffffffffffffffffffffffffffffffffff8a16888a62004075565b62002cfb565b508073ffffffffffffffffffffffffffffffffffffffff811662002c705762002b5b89868661010a54620040cd565b90508861010960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080610108600061010b54815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018a90528216906340c10f1990604401600060405180830381600087803b15801562002ce157600080fd5b505af115801562002cf6573d6000803e3d6000fd5b505050505b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f6ed06519caca659cdefa71015c79a561928d3cf8cc4a3e9739fde9fb5fb38d648b60405162002d7291815260200190565b60405180910390a450505062001f2660018055565b8073ffffffffffffffffffffffffffffffffffffffff811662002dd6576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a3562002e02816200358a565b61010a5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8881168552925290912054166101111462002e8d576040517f82f5d0a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240162000b7a565b60008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f0145163d8d460d1ab21463758d147fdfe79d4b57c81ca3d1439996104ae6895991a250505050565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166200157257600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905562002fa83390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff166200309f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b620030a962004231565b565b600054610100900460ff1662003144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b8260005b81811015620032745785858281811062003166576200316662005165565b9050604002016020013560d7600088888581811062003189576200318962005165565b620031a1926020604090920201908101915062004c2f565b6008811115620031b557620031b5620050ca565b6008811115620031c957620031c9620050ca565b81526020810191909152604001600020557f33aa8fd1ce49e1761bc8d27fd53414bfefc45d690feed0ce55019d7d3aec609186868381811062003210576200321062005165565b62003228926020604090920201908101915062004c2f565b8787848181106200323d576200323d62005165565b905060400201602001356040516200325792919062005424565b60405180910390a1806200326b81620051c3565b91505062003148565b5081905060005b8181101562001f265783838281811062003299576200329962005165565b9050604002016020013560d86000868685818110620032bc57620032bc62005165565b620032d4926020604090920201908101915062004c2f565b6008811115620032e857620032e8620050ca565b6008811115620032fc57620032fc620050ca565b81526020810191909152604001600020557fe7bf4b8dc0c17a52dc9e52323a3ab61cb2079db35f969125b1f8a3d984c6f6c284848381811062003343576200334362005165565b6200335b926020604090920201908101915062004c2f565b85858481811062003370576200337062005165565b905060400201602001356040516200338a92919062005424565b60405180910390a1806200339e81620051c3565b9150506200327b565b600054610100900460ff1662003440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b8060005b818110156200252557600084848381811062003464576200346462005165565b6200347c926020604090920201908101915062004f27565b73ffffffffffffffffffffffffffffffffffffffff1603620034ca576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838382818110620034df57620034df62005165565b905060400201602001356000801b0362003525576040517f0742d05300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620035758484838181106200353e576200353e62005165565b905060400201602001358585848181106200355d576200355d62005165565b62002268926020604090920201908101915062004f27565b806200358181620051c3565b91505062003444565b620035968133620042ca565b50565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156200157257600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600260015403620036c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000b7a565b6002600155565b60d654816008811115620036e257620036e2620050ca565b6001901b8116156200372457816040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b7a919062005135565b6002811615620015725760016040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b7a919062005135565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620025259085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200438d565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06fdde03000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff861691620038c7919062005441565b600060405180830381855afa9150503d806000811462003904576040519150601f19603f3d011682016040523d82523d6000602084013e62003909565b606091505b50915091508162003950576040518060400160405280600781526020017f4e4f5f4e414d45000000000000000000000000000000000000000000000000008152506200395b565b6200395b81620044a3565b949350505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f95d89b41000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff861691620039e7919062005441565b600060405180830381855afa9150503d806000811462003a24576040519150601f19603f3d011682016040523d82523d6000602084013e62003a29565b606091505b50915091508162003950576040518060400160405280600981526020017f4e4f5f53594d424f4c00000000000000000000000000000000000000000000008152506200395b565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff86169162003af3919062005441565b600060405180830381855afa9150503d806000811462003b30576040519150601f19603f3d011682016040523d82523d6000602084013e62003b35565b606091505b509150915081801562003b49575080516020145b1562003b6557808060200190518101906200395b91906200546f565b6040517fb5a2f1c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240162000b7a565b60018055565b73ffffffffffffffffffffffffffffffffffffffff811662003c04576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040513391907fe68b208814fdb633b222cd15e73d5a27fb4ef9eef4cae78c623bc27702141d2890600090a350565b600054610100900460ff1662003d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b73ffffffffffffffffffffffffffffffffffffffff811662003d5d576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fd505accf0000000000000000000000000000000000000000000000000000000062003dd56004600084866200548f565b62003de091620054bb565b7fffffffff00000000000000000000000000000000000000000000000000000000161462003ea15762003e186004600083856200548f565b62003e2391620054bb565b6040517fcf9e29460000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201527fd505accf00000000000000000000000000000000000000000000000000000000602482015260440162000b7a565b600080808080808062003eb8886004818c6200548f565b81019062003ec7919062005504565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462003f54576040517f200688cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816600482015260240162000b7a565b73ffffffffffffffffffffffffffffffffffffffff8616301462003fbd576040517f2911594800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260240162000b7a565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff8b169063d505accf9060e401600060405180830381600087803b1580156200405057600080fd5b505af115801562004065573d6000803e3d6000fd5b5050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052620014919084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401620037c0565b60008181526020859052604081206101075460405173ffffffffffffffffffffffffffffffffffffffff90911690620041069062004a7f565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190526000908201526060018190604051809103906000f590508015801562004153573d6000803e3d6000fd5b50905060008080620041688688018862005621565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16631624f6c68484846040518463ffffffff1660e01b8152600401620041ad93929190620052ca565b600060405180830381600087803b158015620041c857600080fd5b505af1158015620041dd573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff808c169350871691507fd5d4920bb61e6141c8499d50a7bd617dae2b1818c9d6b995d3f2ba4975e32ea490600090a3505050949350505050565b600054610100900460ff1662003bb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1662001572576200430d8162004676565b6200431a83602062004696565b6040516020016200432d92919062005697565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825262000b7a9160040162004d8b565b6000620043f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620048fe9092919063ffffffff16565b9050805160001480620044155750808060200190518101906200441591906200571c565b62001491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840162000b7a565b60606040825110620044c5578180602001905181019062000d39919062005740565b81516020146200450857505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b60005b6020811080156200455657508281815181106200452c576200452c62005165565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b1562004565576001016200450b565b80600003620045a957505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff811115620045c757620045c762004da0565b6040519080825280601f01601f191660200182016040528015620045f2576020820181803683370190505b50905060005b828110156200466e5784818151811062004616576200461662005165565b602001015160f81c60f81b82828151811062004636576200463662005165565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101620045f8565b509392505050565b606062000d3973ffffffffffffffffffffffffffffffffffffffff831660145b60606000620046a7836002620057b7565b620046b4906002620057d1565b67ffffffffffffffff811115620046cf57620046cf62004da0565b6040519080825280601f01601f191660200182016040528015620046fa576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811062004734576200473462005165565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106200479a576200479a62005165565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000620047d8846002620057b7565b620047e5906001620057d1565b90505b60018111156200488c577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106200482a576200482a62005165565b1a60f81b82828151811062004843576200484362005165565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936200488481620057e7565b9050620047e8565b508315620048f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000b7a565b9392505050565b60606200395b8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405162004935919062005441565b60006040518083038185875af1925050503d806000811462004974576040519150601f19603f3d011682016040523d82523d6000602084013e62004979565b606091505b50915091506200498c8783838762004997565b979650505050505050565b6060831562004a3257825160000362004a2a5773ffffffffffffffffffffffffffffffffffffffff85163b62004a2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000b7a565b50816200395b565b6200395b838381511562004a495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b7a919062004d8b565b6106f3806200582083390190565b73ffffffffffffffffffffffffffffffffffffffff811681146200359657600080fd5b60008083601f84011262004ac357600080fd5b50813567ffffffffffffffff81111562004adc57600080fd5b6020830191508360208260061b850101111562004af857600080fd5b9250929050565b60008060008060008060006080888a03121562004b1b57600080fd5b873562004b288162004a8d565b9650602088013567ffffffffffffffff8082111562004b4657600080fd5b62004b548b838c0162004ab0565b909850965060408a013591508082111562004b6e57600080fd5b62004b7c8b838c0162004ab0565b909650945060608a013591508082111562004b9657600080fd5b5062004ba58a828b0162004ab0565b989b979a50959850939692959293505050565b60006020828403121562004bcb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114620048f757600080fd5b6000806040838503121562004c1057600080fd5b82359150602083013562004c248162004a8d565b809150509250929050565b60006020828403121562004c4257600080fd5b813560098110620048f757600080fd5b6000806040838503121562004c6657600080fd5b823562004c738162004a8d565b9150602083013562004c248162004a8d565b60006020828403121562004c9857600080fd5b5035919050565b6000806020838503121562004cb357600080fd5b823567ffffffffffffffff8082111562004ccc57600080fd5b818501915085601f83011262004ce157600080fd5b81358181111562004cf157600080fd5b8660208260051b850101111562004d0757600080fd5b60209290920196919550909350505050565b60005b8381101562004d3657818101518382015260200162004d1c565b50506000910152565b6000815180845262004d5981602086016020860162004d19565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000620048f7602083018462004d3f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562004e195762004e1962004da0565b604052919050565b6000602080838503121562004e3557600080fd5b823567ffffffffffffffff8082111562004e4e57600080fd5b818501915085601f83011262004e6357600080fd5b81358181111562004e785762004e7862004da0565b8060051b915062004e8b84830162004dcf565b818152918301840191848101908884111562004ea657600080fd5b938501935b8385101562004ed4578435925062004ec38362004a8d565b828252938501939085019062004eab565b98975050505050505050565b60008060006060848603121562004ef657600080fd5b833562004f038162004a8d565b925060208401359150604084013562004f1c8162004a8d565b809150509250925092565b60006020828403121562004f3a57600080fd5b8135620048f78162004a8d565b60006020828403121562004f5a57600080fd5b813567ffffffffffffffff81111562004f7257600080fd5b82016101208185031215620048f757600080fd5b60008083601f84011262004f9957600080fd5b50813567ffffffffffffffff81111562004fb257600080fd5b60208301915083602082850101111562004af857600080fd5b60008060008060006080868803121562004fe457600080fd5b853562004ff18162004a8d565b94506020860135935060408601356200500a8162004a8d565b9250606086013567ffffffffffffffff8111156200502757600080fd5b620050358882890162004f86565b969995985093965092949392505050565b60008060008060008060a087890312156200506057600080fd5b86356200506d8162004a8d565b9550602087013594506040870135620050868162004a8d565b935060608701359250608087013567ffffffffffffffff811115620050aa57600080fd5b620050b889828a0162004f86565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6009811062005131577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6020810162000d398284620050f9565b6000602082840312156200515857600080fd5b8151620048f78162004a8d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620051f757620051f762005194565b5060010190565b6020808252825182820181905260009190848201906040850190845b818110156200524e57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016200521a565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600062005291606083018462004d3f565b95945050505050565b600060208284031215620052ad57600080fd5b5051919050565b8181038181111562000d395762000d3962005194565b606081526000620052df606083018662004d3f565b8281036020840152620052f3818662004d3f565b91505060ff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835286602084015280861660408401525083606083015260a060808301526200498c60a083018462004d3f565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126200538457600080fd5b83018035915067ffffffffffffffff821115620053a057600080fd5b6020019150600681901b360382131562004af857600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112620053ef57600080fd5b83018035915067ffffffffffffffff8211156200540b57600080fd5b6020019150600581901b360382131562004af857600080fd5b60408101620054348285620050f9565b8260208301529392505050565b600082516200545581846020870162004d19565b9190910192915050565b60ff811681146200359657600080fd5b6000602082840312156200548257600080fd5b8151620048f7816200545f565b60008085851115620054a057600080fd5b83861115620054ae57600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015620054fc5780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a0312156200552057600080fd5b87356200552d8162004a8d565b965060208801356200553f8162004a8d565b9550604088013594506060880135935060808801356200555f816200545f565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562005599576200559962004da0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112620055d757600080fd5b8135620055ee620055e8826200557c565b62004dcf565b8181528460208386010111156200560457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156200563757600080fd5b833567ffffffffffffffff808211156200565057600080fd5b6200565e87838801620055c5565b945060208601359150808211156200567557600080fd5b506200568486828701620055c5565b925050604084013562004f1c816200545f565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351620056d181601785016020880162004d19565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516200571081602884016020880162004d19565b01602801949350505050565b6000602082840312156200572f57600080fd5b81518015158114620048f757600080fd5b6000602082840312156200575357600080fd5b815167ffffffffffffffff8111156200576b57600080fd5b8201601f810184136200577d57600080fd5b80516200578e620055e8826200557c565b818152856020838501011115620057a457600080fd5b6200529182602083016020860162004d19565b808202811582820484141762000d395762000d3962005194565b8082018082111562000d395762000d3962005194565b600081620057f957620057f962005194565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe60806040526040516106f33803806106f383398101604081905261002291610420565b61002e82826000610035565b505061054a565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e0565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104e0565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f83836040518060600160405280602781526020016106cc602791396102a6565b9392505050565b6060600080856001600160a01b0316856040516102c391906104fb565b600060405180830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b5090925090506103158683838761031f565b9695505050505050565b6060831561038e578251600003610387576001600160a01b0385163b6103875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610157565b5081610398565b61039883836103a0565b949350505050565b8151156103b05781518083602001fd5b8060405162461bcd60e51b81526004016101579190610517565b80516001600160a01b03811681146103e157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156104175781810151838201526020016103ff565b50506000910152565b6000806040838503121561043357600080fd5b61043c836103ca565b60208401519092506001600160401b038082111561045957600080fd5b818501915085601f83011261046d57600080fd5b81518181111561047f5761047f6103e6565b604051601f8201601f19908116603f011681019083821181831017156104a7576104a76103e6565b816040528281528860208487010111156104c057600080fd5b6104d18360208301602088016103fc565b80955050505050509250929050565b6000602082840312156104f257600080fd5b61029f826103ca565b6000825161050d8184602087016103fc565b9190910192915050565b60208152600082518060208401526105368160408501602087016103fc565b601f01601f19169190910160400192915050565b610173806105596000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100dc565b565b60006100697fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610100565b905090565b3660008037600080366000845af43d6000803e8080156100fb573d6000f35b3d6000fd5b60006020828403121561011257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461013657600080fd5b939250505056fea2646970667358221220487f6f370ed71b7026944bbfbeff4c6a8abfbc1f686dbaab6010959808b5814564736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220de9804b67318a6cdb529d18b92fd51bf5512166da05a44c81a9aaec12a7bc66b64736f6c63430008130033",
"deployedBytecode": "0x6080604052600436106200030b5760003560e01c806391d148541162000197578063ca41a24711620000e7578063d547741f1162000095578063e4d27451116200006c578063e4d274511462000a4e578063edc42a221462000a73578063fe3c50a01462000a9857600080fd5b8063d547741f14620009ed578063dfa96efb1462000a12578063e196fb5d1462000a2957600080fd5b8063ccf5a77c11620000ca578063ccf5a77c1462000962578063cdd914c51462000992578063cf4a720814620009b757600080fd5b8063ca41a24714620008e6578063cc5782f6146200092e57600080fd5b8063b3232bdf1162000145578063be46096f1162000128578063be46096f1462000855578063c483d838146200087a578063c986752a14620008b057600080fd5b8063b3232bdf146200080b578063bc61e733146200083057600080fd5b8063a217fddf116200017a578063a217fddf14620007a0578063a676e8ab14620007b7578063a6ef995f14620007dc57600080fd5b806391d1485414620007135780639ac25d08146200076a57600080fd5b80632f2ff15d116200025f578063522ea81a116200020d5780636a906b8011620001e45780636a906b80146200067857806380efb43a14620006ae5780638dae45dd14620006e457600080fd5b8063522ea81a14620005f55780635626fc25146200060c5780635a06a42a146200064257600080fd5b806336568abe116200024257806336568abe146200055f57806338b9033314620005845780634bf98dce14620005de57600080fd5b80632f2ff15d14620005045780633551237b146200052957600080fd5b80631544298e11620002bd578063248a9ca311620002a0578063248a9ca314620004755780632a564f3414620004a95780632e4c3fff14620004ce57600080fd5b80631544298e14620004375780631754f301146200045057600080fd5b80630f6f86ec11620002f25780630f6f86ec14620003715780631065a39914620003ea578063146ffb26146200040f57600080fd5b806301941d39146200031057806301ffc9a71462000337575b600080fd5b3480156200031d57600080fd5b50620003356200032f36600462004aff565b62000ace565b005b3480156200034457600080fd5b506200035c6200035636600462004bb8565b62000ca5565b60405190151581526020015b60405180910390f35b3480156200037e57600080fd5b50620003c46200039036600462004bfc565b61010860209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000368565b348015620003f757600080fd5b50620003356200040936600462004c2f565b62000d3f565b3480156200041c57600080fd5b506200042861010b5481565b60405190815260200162000368565b3480156200044457600080fd5b506200042861010a5481565b3480156200045d57600080fd5b50620003356200046f36600462004c52565b62000e54565b3480156200048257600080fd5b50620004286200049436600462004c85565b60009081526097602052604090206001015490565b348015620004b657600080fd5b5062000335620004c836600462004c9f565b62001237565b348015620004db57600080fd5b50620004287f8a7b208fd13ab36d18025be4f62b53d46aeb2cbe8958d2e13de74c040dddcddd81565b3480156200051157600080fd5b50620003356200052336600462004bfc565b62001496565b3480156200053657600080fd5b50620004287f19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a3581565b3480156200056c57600080fd5b50620003356200057e36600462004bfc565b620014bf565b3480156200059157600080fd5b50620005cf6040518060400160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525081565b60405162000368919062004d8b565b62000335620005ef36600462004e21565b62001576565b620003356200060636600462004ee0565b62001812565b3480156200061957600080fd5b50620004287f46e34517dc946faf87aabe65eb5b4fa06b974e5c8d72c5df73b9fb6ff7b6d80281565b3480156200064f57600080fd5b50620004287f50962b2d10066f5051f78d5ea04a3ab09b9c87dd1002962f0b1e30e66eeb80a581565b3480156200068557600080fd5b50620004287fd8b4c34c2ec1f3194471108c64ad2beda340c0337ee4ca35592f9ef270f4228b81565b348015620006bb57600080fd5b50620004287fbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b2481565b348015620006f157600080fd5b5060c954620003c49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200072057600080fd5b506200035c6200073236600462004bfc565b600091825260976020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156200077757600080fd5b50620004287f56bdc3c9ec86cb7db110a7699b2ade72f0b8819727d9f7d906b012641505fa7781565b348015620007ad57600080fd5b5062000428600081565b348015620007c457600080fd5b5062000335620007d636600462004f27565b62001f2e565b348015620007e957600080fd5b5060ca54620003c49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200081857600080fd5b50620003356200082a36600462004f47565b6200201a565b3480156200083d57600080fd5b506200035c6200084f36600462004c2f565b6200252b565b3480156200086257600080fd5b50620003356200087436600462004f27565b62002553565b3480156200088757600080fd5b50620004287feaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d81565b348015620008bd57600080fd5b50620004287f550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe81565b348015620008f357600080fd5b50620003c46200090536600462004f27565b6101096020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156200093b57600080fd5b506200035c6200094d36600462004c85565b60d56020526000908152604090205460ff1681565b3480156200096f57600080fd5b5061010754620003c49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200099f57600080fd5b5062000335620009b136600462004f27565b62002649565b348015620009c457600080fd5b50620004287f3900d9d72d5177a154375317154fdc0e08377e3134a8a5d21cadccf831cc231c81565b348015620009fa57600080fd5b506200033562000a0c36600462004bfc565b6200280e565b6200033562000a2336600462004fcb565b62002837565b34801562000a3657600080fd5b506200033562000a4836600462004c2f565b6200285f565b34801562000a5b57600080fd5b506200033562000a6d36600462005046565b6200294d565b34801562000a8057600080fd5b506200033562000a9236600462004f27565b62002d87565b34801562000aa557600080fd5b50620004287f77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce0081565b600054600290610100900460ff1615801562000af1575060005460ff8083169116105b62000b83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff83161761010017905573ffffffffffffffffffffffffffffffffffffffff881662000c02576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000c0f60008962002f10565b6000606555600060d55562000c2362003006565b62000c3185858585620030ab565b62000c3d8787620033a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148062000d3957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60d8600082600881111562000d585762000d58620050ca565b600881111562000d6c5762000d6c620050ca565b81526020019081526020016000205462000d86816200358a565b62000d91826200252b565b62000dcc57816040517f1865965400000000000000000000000000000000000000000000000000000000815260040162000b7a919062005135565b81600881111562000de15762000de1620050ca565b60d68054600190921b19909116905581600881111562000e055762000e05620050ca565b7fd071d2b85dec4489435b541d2f0e2570db09b09db9efd8703948d44a433df65a335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25050565b8173ffffffffffffffffffffffffffffffffffffffff811662000ea3576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff811662000ef2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe62000f1e816200358a565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152610109602052604090205486911615158062000f8c575061010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff85811685529252909120541615155b1562000fdd576040517f12f3df0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240162000b7a565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526101096020526040902054161562001057576040517ff8fb7c2700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260240162000b7a565b73ffffffffffffffffffffffffffffffffffffffff8516610222148062001095575073ffffffffffffffffffffffffffffffffffffffff8516610333145b80620010b8575073ffffffffffffffffffffffffffffffffffffffff8516610111145b1562001109576040517fd8ce8acb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260240162000b7a565b61010b5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168552925290912054161562001191576040517f022bc84100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816600482015260240162000b7a565b60008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808c168086529184528285208054918c167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155808652610109909452828520805490911682179055905133937f844cb5c635052898ad92bea4ece14519111765d835105e76aa1f77ad0d0aa81f91a450505050505050565b60c95473ffffffffffffffffffffffffffffffffffffffff16331462001289576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff93841693909216916367e404ce916004808201926020929091908290030181865afa15801562001301573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001327919062005145565b73ffffffffffffffffffffffffffffffffffffffff161462001375576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015620014915761010a5460009081526101086020526040812061033391858585818110620013ad57620013ad62005165565b9050602002016020810190620013c4919062004f27565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790558282828181106200142f576200142f62005165565b905060200201602081019062001446919062004f27565b73ffffffffffffffffffffffffffffffffffffffff167f91d24864a084ab70b268a1f865e757ca12006cf298d763b6be697302ef86498c60405160405180910390a260010162001378565b505050565b600082815260976020526040902060010154620014b3816200358a565b62001491838362002f10565b73ffffffffffffffffffffffffffffffffffffffff8116331462001566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840162000b7a565b62001572828262003599565b5050565b60005b81518110156200169a57600061010960008484815181106200159f576200159f62005165565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683529082019290925260400160002054169050806200164957828281518110620015f157620015f162005165565b60200260200101516040517fa5ea89da00000000000000000000000000000000000000000000000000000000815260040162000b7a919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b808383815181106200165f576200165f62005165565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015250806200169181620051c3565b91505062001579565b5060c95460ca5460405173ffffffffffffffffffffffffffffffffffffffff92831692639f3ce55a9234929116908290620016da908790602401620051fe565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2a564f3400000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526200178b939291906004016200525a565b6000604051808303818588803b158015620017a557600080fd5b505af1158015620017ba573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff167f59eab5b5f813ac9e0c10035dfb55b5e3419eff53c0f7a869fb3c22400ea036d682604051620018079190620051fe565b60405180910390a250565b8273ffffffffffffffffffffffffffffffffffffffff811662001861576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff8116620018b0576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8380600003620018f0576040517f4618044a0000000000000000000000000000000000000000000000000000000081526004810182905260240162000b7a565b620018fa62003655565b620019066007620036ca565b61010a5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808c168552925290912054167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeef8101620019b0576040517f6dad9c7800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015260240162000b7a565b73ffffffffffffffffffffffffffffffffffffffff80891660009081526101096020526040812054909116906060821562001a79576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018b905273ffffffffffffffffffffffffffffffffffffffff8c1690639dc29fac90604401600060405180830381600087803b15801562001a5457600080fd5b505af115801562001a69573d6000803e3d6000fd5b5050505061010b54915062001d35565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa15801562001ae7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b0d91906200529a565b905062001b3373ffffffffffffffffffffffffffffffffffffffff8d1633308e62003765565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8e16906370a0823190602401602060405180830381865afa15801562001ba0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bc691906200529a565b62001bd29190620052b4565b9a508b935073ffffffffffffffffffffffffffffffffffffffff851662001cc957610222610108600088815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b73ffffffffffffffffffffffffffffffffffffffff167f0f53e2a811b6fd2d6cd965fd6c27b44fb924ca39f7a7f321115705c22366d62360405160405180910390a25b73ffffffffffffffffffffffffffffffffffffffff85166103331462001d305762001cf48c62003843565b62001cff8d62003963565b62001d0a8e62003a70565b60405160200162001d1e93929190620052ca565b60405160208183030381529060405291505b859250505b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f3ce55a3460ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634878f8f898960405160240162001db395949392919062005307565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe4d2745100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815262001e64939291906004016200525a565b6000604051808303818588803b15801562001e7e57600080fd5b505af115801562001e93573d6000803e3d6000fd5b50505050508a73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8780a94875b70464f8ac6c28851501d32e7fd4ee574e4b94beb28923a3c42d9c8d60405162001f0f91815260200190565b60405180910390a4505050505062001f2660018055565b505050505050565b7fbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b2462001f5a816200358a565b60ca5473ffffffffffffffffffffffffffffffffffffffff161562001fc85760ca546040517f94fbfd2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240162000b7a565b62001fd38262003bb6565b604051339073ffffffffffffffffffffffffffffffffffffffff8416907fb044c1a1a05a729c402def784b4e4cb01612ff03eee6f0beb3eba0f0606260a190600090a35050565b6200202c604082016020830162004f27565b73ffffffffffffffffffffffffffffffffffffffff81166200207a576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200208c606083016040840162004f27565b73ffffffffffffffffffffffffffffffffffffffff8116620020da576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615808015620020fb5750600054600160ff909116105b80620021175750303b15801562002117575060005460ff166001145b620021a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840162000b7a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200220457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6200222d6200221760e08601866200534e565b620022276101008801886200534e565b620030ab565b6200224962002243604086016020870162004f27565b62003c76565b6200225362003006565b6200226e600062002268602087018762004f27565b62002f10565b620022876200228160c08601866200534e565b620033a7565b62002299606085016040860162004f27565b61010780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055606084013561010a55608084013561010b5560005b6200230360a0860186620053b9565b9050811015620024c05760006200231e60a0870187620053b9565b8381811062002331576200233162005165565b905060200201602081019062002348919062004f27565b73ffffffffffffffffffffffffffffffffffffffff160362002396576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010a5460009081526101086020526040812061011191620023bc60a0890189620053b9565b85818110620023cf57620023cf62005165565b9050602002016020810190620023e6919062004f27565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556200244b60a0860186620053b9565b828181106200245e576200245e62005165565b905060200201602081019062002475919062004f27565b73ffffffffffffffffffffffffffffffffffffffff167f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe960405160405180910390a2600101620022f4565b5080156200252557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000816008811115620025425762002542620050ca565b60d654600190911b16151592915050565b8073ffffffffffffffffffffffffffffffffffffffff8116620025a2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce00620025ce816200358a565b60c9805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560405191169133918391907fc96d462e42a71473da49a1d58c1754b9b2d319786692d621dc7f921331c517e990600090a450505050565b8073ffffffffffffffffffffffffffffffffffffffff811662002698576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8083166000908152610109602052604090205483911615158062002706575061010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff85811685529252909120541615155b1562002757576040517f12f3df0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240162000b7a565b7feaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d62002783816200358a565b61010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816808552925280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166101111790555190917f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe991a250505050565b6000828152609760205260409020600101546200282b816200358a565b62001491838362003599565b80156200284b576200284b85838362003da4565b6200285885858562001812565b5050505050565b60d76000826008811115620028785762002878620050ca565b60088111156200288c576200288c620050ca565b815260200190815260200160002054620028a6816200358a565b620028b1826200252b565b15620028ed57816040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b7a919062005135565b816008811115620029025762002902620050ca565b60d68054600190921b9091179055816008811115620029255762002925620050ca565b7f534f879afd40abb4e39f8e1b77a316be4c8e3521d9cf5a3a3db8959d574d45593362000e28565b6200295762003655565b60c95473ffffffffffffffffffffffffffffffffffffffff163314620029a9576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff93841693909216916367e404ce916004808201926020929091908290030181865afa15801562002a21573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a47919062005145565b73ffffffffffffffffffffffffffffffffffffffff161462002a95576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600862002aa281620036ca565b60008481526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808c1685529252822054169061022282148062002afd575073ffffffffffffffffffffffffffffffffffffffff8216610333145b1562002b2c5762002b2673ffffffffffffffffffffffffffffffffffffffff8a16888a62004075565b62002cfb565b508073ffffffffffffffffffffffffffffffffffffffff811662002c705762002b5b89868661010a54620040cd565b90508861010960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080610108600061010b54815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018a90528216906340c10f1990604401600060405180830381600087803b15801562002ce157600080fd5b505af115801562002cf6573d6000803e3d6000fd5b505050505b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f6ed06519caca659cdefa71015c79a561928d3cf8cc4a3e9739fde9fb5fb38d648b60405162002d7291815260200190565b60405180910390a450505062001f2660018055565b8073ffffffffffffffffffffffffffffffffffffffff811662002dd6576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a3562002e02816200358a565b61010a5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8881168552925290912054166101111462002e8d576040517f82f5d0a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240162000b7a565b60008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f0145163d8d460d1ab21463758d147fdfe79d4b57c81ca3d1439996104ae6895991a250505050565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166200157257600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905562002fa83390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff166200309f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b620030a962004231565b565b600054610100900460ff1662003144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b8260005b81811015620032745785858281811062003166576200316662005165565b9050604002016020013560d7600088888581811062003189576200318962005165565b620031a1926020604090920201908101915062004c2f565b6008811115620031b557620031b5620050ca565b6008811115620031c957620031c9620050ca565b81526020810191909152604001600020557f33aa8fd1ce49e1761bc8d27fd53414bfefc45d690feed0ce55019d7d3aec609186868381811062003210576200321062005165565b62003228926020604090920201908101915062004c2f565b8787848181106200323d576200323d62005165565b905060400201602001356040516200325792919062005424565b60405180910390a1806200326b81620051c3565b91505062003148565b5081905060005b8181101562001f265783838281811062003299576200329962005165565b9050604002016020013560d86000868685818110620032bc57620032bc62005165565b620032d4926020604090920201908101915062004c2f565b6008811115620032e857620032e8620050ca565b6008811115620032fc57620032fc620050ca565b81526020810191909152604001600020557fe7bf4b8dc0c17a52dc9e52323a3ab61cb2079db35f969125b1f8a3d984c6f6c284848381811062003343576200334362005165565b6200335b926020604090920201908101915062004c2f565b85858481811062003370576200337062005165565b905060400201602001356040516200338a92919062005424565b60405180910390a1806200339e81620051c3565b9150506200327b565b600054610100900460ff1662003440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b8060005b818110156200252557600084848381811062003464576200346462005165565b6200347c926020604090920201908101915062004f27565b73ffffffffffffffffffffffffffffffffffffffff1603620034ca576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838382818110620034df57620034df62005165565b905060400201602001356000801b0362003525576040517f0742d05300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620035758484838181106200353e576200353e62005165565b905060400201602001358585848181106200355d576200355d62005165565b62002268926020604090920201908101915062004f27565b806200358181620051c3565b91505062003444565b620035968133620042ca565b50565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156200157257600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600260015403620036c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000b7a565b6002600155565b60d654816008811115620036e257620036e2620050ca565b6001901b8116156200372457816040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b7a919062005135565b6002811615620015725760016040517fc0a71b5800000000000000000000000000000000000000000000000000000000815260040162000b7a919062005135565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620025259085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200438d565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06fdde03000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff861691620038c7919062005441565b600060405180830381855afa9150503d806000811462003904576040519150601f19603f3d011682016040523d82523d6000602084013e62003909565b606091505b50915091508162003950576040518060400160405280600781526020017f4e4f5f4e414d45000000000000000000000000000000000000000000000000008152506200395b565b6200395b81620044a3565b949350505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f95d89b41000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff861691620039e7919062005441565b600060405180830381855afa9150503d806000811462003a24576040519150601f19603f3d011682016040523d82523d6000602084013e62003a29565b606091505b50915091508162003950576040518060400160405280600981526020017f4e4f5f53594d424f4c00000000000000000000000000000000000000000000008152506200395b565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff86169162003af3919062005441565b600060405180830381855afa9150503d806000811462003b30576040519150601f19603f3d011682016040523d82523d6000602084013e62003b35565b606091505b509150915081801562003b49575080516020145b1562003b6557808060200190518101906200395b91906200546f565b6040517fb5a2f1c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240162000b7a565b60018055565b73ffffffffffffffffffffffffffffffffffffffff811662003c04576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040513391907fe68b208814fdb633b222cd15e73d5a27fb4ef9eef4cae78c623bc27702141d2890600090a350565b600054610100900460ff1662003d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b73ffffffffffffffffffffffffffffffffffffffff811662003d5d576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fd505accf0000000000000000000000000000000000000000000000000000000062003dd56004600084866200548f565b62003de091620054bb565b7fffffffff00000000000000000000000000000000000000000000000000000000161462003ea15762003e186004600083856200548f565b62003e2391620054bb565b6040517fcf9e29460000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201527fd505accf00000000000000000000000000000000000000000000000000000000602482015260440162000b7a565b600080808080808062003eb8886004818c6200548f565b81019062003ec7919062005504565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462003f54576040517f200688cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816600482015260240162000b7a565b73ffffffffffffffffffffffffffffffffffffffff8616301462003fbd576040517f2911594800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260240162000b7a565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff8b169063d505accf9060e401600060405180830381600087803b1580156200405057600080fd5b505af115801562004065573d6000803e3d6000fd5b5050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052620014919084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401620037c0565b60008181526020859052604081206101075460405173ffffffffffffffffffffffffffffffffffffffff90911690620041069062004a7f565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190526000908201526060018190604051809103906000f590508015801562004153573d6000803e3d6000fd5b50905060008080620041688688018862005621565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16631624f6c68484846040518463ffffffff1660e01b8152600401620041ad93929190620052ca565b600060405180830381600087803b158015620041c857600080fd5b505af1158015620041dd573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff808c169350871691507fd5d4920bb61e6141c8499d50a7bd617dae2b1818c9d6b995d3f2ba4975e32ea490600090a3505050949350505050565b600054610100900460ff1662003bb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000b7a565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1662001572576200430d8162004676565b6200431a83602062004696565b6040516020016200432d92919062005697565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825262000b7a9160040162004d8b565b6000620043f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620048fe9092919063ffffffff16565b9050805160001480620044155750808060200190518101906200441591906200571c565b62001491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840162000b7a565b60606040825110620044c5578180602001905181019062000d39919062005740565b81516020146200450857505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b60005b6020811080156200455657508281815181106200452c576200452c62005165565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b1562004565576001016200450b565b80600003620045a957505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff811115620045c757620045c762004da0565b6040519080825280601f01601f191660200182016040528015620045f2576020820181803683370190505b50905060005b828110156200466e5784818151811062004616576200461662005165565b602001015160f81c60f81b82828151811062004636576200463662005165565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101620045f8565b509392505050565b606062000d3973ffffffffffffffffffffffffffffffffffffffff831660145b60606000620046a7836002620057b7565b620046b4906002620057d1565b67ffffffffffffffff811115620046cf57620046cf62004da0565b6040519080825280601f01601f191660200182016040528015620046fa576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811062004734576200473462005165565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106200479a576200479a62005165565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000620047d8846002620057b7565b620047e5906001620057d1565b90505b60018111156200488c577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106200482a576200482a62005165565b1a60f81b82828151811062004843576200484362005165565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936200488481620057e7565b9050620047e8565b508315620048f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000b7a565b9392505050565b60606200395b8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405162004935919062005441565b60006040518083038185875af1925050503d806000811462004974576040519150601f19603f3d011682016040523d82523d6000602084013e62004979565b606091505b50915091506200498c8783838762004997565b979650505050505050565b6060831562004a3257825160000362004a2a5773ffffffffffffffffffffffffffffffffffffffff85163b62004a2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000b7a565b50816200395b565b6200395b838381511562004a495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b7a919062004d8b565b6106f3806200582083390190565b73ffffffffffffffffffffffffffffffffffffffff811681146200359657600080fd5b60008083601f84011262004ac357600080fd5b50813567ffffffffffffffff81111562004adc57600080fd5b6020830191508360208260061b850101111562004af857600080fd5b9250929050565b60008060008060008060006080888a03121562004b1b57600080fd5b873562004b288162004a8d565b9650602088013567ffffffffffffffff8082111562004b4657600080fd5b62004b548b838c0162004ab0565b909850965060408a013591508082111562004b6e57600080fd5b62004b7c8b838c0162004ab0565b909650945060608a013591508082111562004b9657600080fd5b5062004ba58a828b0162004ab0565b989b979a50959850939692959293505050565b60006020828403121562004bcb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114620048f757600080fd5b6000806040838503121562004c1057600080fd5b82359150602083013562004c248162004a8d565b809150509250929050565b60006020828403121562004c4257600080fd5b813560098110620048f757600080fd5b6000806040838503121562004c6657600080fd5b823562004c738162004a8d565b9150602083013562004c248162004a8d565b60006020828403121562004c9857600080fd5b5035919050565b6000806020838503121562004cb357600080fd5b823567ffffffffffffffff8082111562004ccc57600080fd5b818501915085601f83011262004ce157600080fd5b81358181111562004cf157600080fd5b8660208260051b850101111562004d0757600080fd5b60209290920196919550909350505050565b60005b8381101562004d3657818101518382015260200162004d1c565b50506000910152565b6000815180845262004d5981602086016020860162004d19565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000620048f7602083018462004d3f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562004e195762004e1962004da0565b604052919050565b6000602080838503121562004e3557600080fd5b823567ffffffffffffffff8082111562004e4e57600080fd5b818501915085601f83011262004e6357600080fd5b81358181111562004e785762004e7862004da0565b8060051b915062004e8b84830162004dcf565b818152918301840191848101908884111562004ea657600080fd5b938501935b8385101562004ed4578435925062004ec38362004a8d565b828252938501939085019062004eab565b98975050505050505050565b60008060006060848603121562004ef657600080fd5b833562004f038162004a8d565b925060208401359150604084013562004f1c8162004a8d565b809150509250925092565b60006020828403121562004f3a57600080fd5b8135620048f78162004a8d565b60006020828403121562004f5a57600080fd5b813567ffffffffffffffff81111562004f7257600080fd5b82016101208185031215620048f757600080fd5b60008083601f84011262004f9957600080fd5b50813567ffffffffffffffff81111562004fb257600080fd5b60208301915083602082850101111562004af857600080fd5b60008060008060006080868803121562004fe457600080fd5b853562004ff18162004a8d565b94506020860135935060408601356200500a8162004a8d565b9250606086013567ffffffffffffffff8111156200502757600080fd5b620050358882890162004f86565b969995985093965092949392505050565b60008060008060008060a087890312156200506057600080fd5b86356200506d8162004a8d565b9550602087013594506040870135620050868162004a8d565b935060608701359250608087013567ffffffffffffffff811115620050aa57600080fd5b620050b889828a0162004f86565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6009811062005131577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6020810162000d398284620050f9565b6000602082840312156200515857600080fd5b8151620048f78162004a8d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620051f757620051f762005194565b5060010190565b6020808252825182820181905260009190848201906040850190845b818110156200524e57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016200521a565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600062005291606083018462004d3f565b95945050505050565b600060208284031215620052ad57600080fd5b5051919050565b8181038181111562000d395762000d3962005194565b606081526000620052df606083018662004d3f565b8281036020840152620052f3818662004d3f565b91505060ff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835286602084015280861660408401525083606083015260a060808301526200498c60a083018462004d3f565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126200538457600080fd5b83018035915067ffffffffffffffff821115620053a057600080fd5b6020019150600681901b360382131562004af857600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112620053ef57600080fd5b83018035915067ffffffffffffffff8211156200540b57600080fd5b6020019150600581901b360382131562004af857600080fd5b60408101620054348285620050f9565b8260208301529392505050565b600082516200545581846020870162004d19565b9190910192915050565b60ff811681146200359657600080fd5b6000602082840312156200548257600080fd5b8151620048f7816200545f565b60008085851115620054a057600080fd5b83861115620054ae57600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015620054fc5780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a0312156200552057600080fd5b87356200552d8162004a8d565b965060208801356200553f8162004a8d565b9550604088013594506060880135935060808801356200555f816200545f565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562005599576200559962004da0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112620055d757600080fd5b8135620055ee620055e8826200557c565b62004dcf565b8181528460208386010111156200560457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156200563757600080fd5b833567ffffffffffffffff808211156200565057600080fd5b6200565e87838801620055c5565b945060208601359150808211156200567557600080fd5b506200568486828701620055c5565b925050604084013562004f1c816200545f565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351620056d181601785016020880162004d19565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516200571081602884016020880162004d19565b01602801949350505050565b6000602082840312156200572f57600080fd5b81518015158114620048f757600080fd5b6000602082840312156200575357600080fd5b815167ffffffffffffffff8111156200576b57600080fd5b8201601f810184136200577d57600080fd5b80516200578e620055e8826200557c565b818152856020838501011115620057a457600080fd5b6200529182602083016020860162004d19565b808202811582820484141762000d395762000d3962005194565b8082018082111562000d395762000d3962005194565b600081620057f957620057f962005194565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe60806040526040516106f33803806106f383398101604081905261002291610420565b61002e82826000610035565b505061054a565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e0565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104e0565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f83836040518060600160405280602781526020016106cc602791396102a6565b9392505050565b6060600080856001600160a01b0316856040516102c391906104fb565b600060405180830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b5090925090506103158683838761031f565b9695505050505050565b6060831561038e578251600003610387576001600160a01b0385163b6103875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610157565b5081610398565b61039883836103a0565b949350505050565b8151156103b05781518083602001fd5b8060405162461bcd60e51b81526004016101579190610517565b80516001600160a01b03811681146103e157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156104175781810151838201526020016103ff565b50506000910152565b6000806040838503121561043357600080fd5b61043c836103ca565b60208401519092506001600160401b038082111561045957600080fd5b818501915085601f83011261046d57600080fd5b81518181111561047f5761047f6103e6565b604051601f8201601f19908116603f011681019083821181831017156104a7576104a76103e6565b816040528281528860208487010111156104c057600080fd5b6104d18360208301602088016103fc565b80955050505050509250929050565b6000602082840312156104f257600080fd5b61029f826103ca565b6000825161050d8184602087016103fc565b9190910192915050565b60208152600082518060208401526105368160408501602087016103fc565b601f01601f19169190910160400192915050565b610173806105596000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100dc565b565b60006100697fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610100565b905090565b3660008037600080366000845af43d6000803e8080156100fb573d6000f35b3d6000fd5b60006020828403121561011257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461013657600080fd5b939250505056fea2646970667358221220487f6f370ed71b7026944bbfbeff4c6a8abfbc1f686dbaab6010959808b5814564736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220de9804b67318a6cdb529d18b92fd51bf5512166da05a44c81a9aaec12a7bc66b64736f6c63430008130033",
"linkReferences": {},
"deployedLinkReferences": {}
}