{ "_format": "hh-sol-artifact-1", "contractName": "FungibleTokenWrapper", "sourceName": "contracts/tokens/FungibleTokenWrapper.sol", "abi": [ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_feeRecipient", "type": "address" } ], "name": "FeeRecipientUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_feePercentage", "type": "uint16" } ], "name": "FeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_handler", "type": "address" } ], "name": "HandlerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "_isNativeAllowed", "type": "bool" } ], "name": "NativeAllowed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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": false, "internalType": "address", "name": "_tokenAddress", "type": "address" } ], "name": "TokenAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_tokenAddress", "type": "address" } ], "name": "TokenRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "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": "tokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Unwrapping", "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": "tokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "wrappingFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "afterFeeAmount", "type": "uint256" } ], "name": "Wrapping", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_limit", "type": "uint256" } ], "name": "WrappingLimitUpdated", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenAddress", "type": "address" }, { "internalType": "uint32", "name": "_nonce", "type": "uint32" } ], "name": "add", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feePercentage", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeRecipient", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_deposit", "type": "uint256" } ], "name": "getAmountToWrap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amountToWrap", "type": "uint256" } ], "name": "getFeeFromAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getProposalNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "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": [], "name": "handler", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "historicalTokens", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "historicallyValid", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_feePercentage", "type": "uint16" }, { "internalType": "address", "name": "_feeRecipient", "type": "address" }, { "internalType": "address", "name": "_handler", "type": "address" }, { "internalType": "uint256", "name": "_limit", "type": "uint256" }, { "internalType": "bool", "name": "_isNativeAllowed", "type": "bool" }, { "internalType": "address", "name": "_admin", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isNativeAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "isValidToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proposalNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenAddress", "type": "address" }, { "internalType": "uint32", "name": "_nonce", "type": "uint32" } ], "name": "remove", "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": "uint16", "name": "_feePercentage", "type": "uint16" }, { "internalType": "uint32", "name": "_nonce", "type": "uint32" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_feeRecipient", "type": "address" }, { "internalType": "uint32", "name": "_nonce", "type": "uint32" } ], "name": "setFeeRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_handler", "type": "address" } ], "name": "setHandler", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isNativeAllowed", "type": "bool" } ], "name": "setNativeAllowed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokens", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "unwrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "unwrapAndSendTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "unwrapFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_limit", "type": "uint256" } ], "name": "updateLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "valid", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "wrap", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "wrapFor", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "wrapForAndSendTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "wrappingLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b506040516200478838038062004788833981016040819052620000349162000305565b8181818181816005620000488382620003fd565b506006620000578282620003fd565b50506007805460ff191690555062000071600033620000db565b6200009d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000db565b620000c97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000db565b5050600160085550620004c992505050565b620000e78282620000eb565b5050565b6200010282826200012e60201b620024a31760201c565b60008281526001602090815260409091206200012991839062002527620001ce821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e7576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e5836001600160a01b038416620001ee565b90505b92915050565b60008181526001830160205260408120546200023757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001e8565b506000620001e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200026857600080fd5b81516001600160401b038082111562000285576200028562000240565b604051601f8301601f19908116603f01168101908282118183101715620002b057620002b062000240565b81604052838152602092508683858801011115620002cd57600080fd5b600091505b83821015620002f15785820183015181830184015290820190620002d2565b600093810190920192909252949350505050565b600080604083850312156200031957600080fd5b82516001600160401b03808211156200033157600080fd5b6200033f8683870162000256565b935060208501519150808211156200035657600080fd5b50620003658582860162000256565b9150509250929050565b600181811c908216806200038457607f821691505b602082108103620003a557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012957600081815260208120601f850160051c81016020861015620003d45750805b601f850160051c820191505b81811015620003f557828155600101620003e0565b505050505050565b81516001600160401b0381111562000419576200041962000240565b62000431816200042a84546200036f565b84620003ab565b602080601f831160018114620004695760008415620004505750858301515b600019600386901b1c1916600185901b178555620003f5565b600085815260208120601f198616915b828110156200049a5788860151825594840194600190910190840162000479565b5085821015620004b95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6142af80620004d96000396000f3fe60806040526004361061038c5760003560e01c806385c00ae8116101dc578063bac426d011610102578063ced72f87116100a0578063e63ab1e91161006f578063e63ab1e914610a73578063f63ebb4514610a95578063fae0959a14610ab5578063fc97a65214610ad557600080fd5b8063ced72f87146109f8578063d539139314610a11578063d547741f14610a33578063dd62ed3e14610a5357600080fd5b8063c2ae4720116100dc578063c2ae472014610982578063c80916d4146109a2578063ca15c873146109c2578063cc3c74a1146109e257600080fd5b8063bac426d01461092f578063bf376c7a1461094f578063c18764531461096257600080fd5b8063a001ecdd1161017a578063aa6ca80811610149578063aa6ca80814610893578063ac8a260c146108b5578063b1cba258146108e5578063b3e4083f1461091557600080fd5b8063a001ecdd14610810578063a217fddf1461083e578063a457c2d714610853578063a9059cbb1461087357600080fd5b80639010d07c116101b65780639010d07c1461079b57806391d14854146107bb57806395d89b41146107db57806396cd4dfe146107f057600080fd5b806385c00ae81461073b57806385d148341461075b5780638b5478b91461077b57600080fd5b8063313ce567116102c1578063469048401161025f57806370a082311161022e57806370a08231146106bd57806379cc6790146106f35780637b2e30d6146107135780638456cb591461072657600080fd5b806346904840146106275780634808285e146106655780634f64b2be146106855780635c975abb146106a557600080fd5b806339f476931161029b57806339f47693146105b25780633f4ba83a146105d257806340c10f19146105e757806342966c681461060757600080fd5b8063313ce5671461055657806336568abe14610572578063395093511461059257600080fd5b80631c4a14361161032e578063248a9ca311610308578063248a9ca3146104d3578063261c80b6146105035780632ca69388146105235780632f2ff15d1461053657600080fd5b80631c4a14361461047d5780631f9143821461049d57806323b872dd146104b357600080fd5b8063095ea7b31161036a578063095ea7b31461040a5780630b27fb9a1461042a578063158ef93e1461044957806318160ddd1461046857600080fd5b806301ffc9a71461039157806306fdde03146103c657806307184f1c146103e8575b600080fd5b34801561039d57600080fd5b506103b16103ac366004613787565b610af5565b60405190151581526020015b60405180910390f35b3480156103d257600080fd5b506103db610b20565b6040516103bd91906137d5565b3480156103f457600080fd5b50610408610403366004613831565b610bb2565b005b34801561041657600080fd5b506103b1610425366004613866565b610d43565b34801561043657600080fd5b50600a545b6040519081526020016103bd565b34801561045557600080fd5b506007546103b190610100900460ff1681565b34801561047457600080fd5b5060045461043b565b34801561048957600080fd5b50610408610498366004613831565b610d5b565b3480156104a957600080fd5b5061043b60115481565b3480156104bf57600080fd5b506103b16104ce366004613892565b610fac565b3480156104df57600080fd5b5061043b6104ee3660046138d3565b60009081526020819052604090206001015490565b34801561050f57600080fd5b5061040861051e366004613892565b610fd0565b610408610531366004613892565b611167565b34801561054257600080fd5b506104086105513660046138ec565b6112e8565b34801561056257600080fd5b50604051601281526020016103bd565b34801561057e57600080fd5b5061040861058d3660046138ec565b61130d565b34801561059e57600080fd5b506103b16105ad366004613866565b61138b565b3480156105be57600080fd5b506104086105cd366004613866565b6113ad565b3480156105de57600080fd5b5061040861150b565b3480156105f357600080fd5b50610408610602366004613866565b61159f565b34801561061357600080fd5b506104086106223660046138d3565b61162c565b34801561063357600080fd5b5060095461064d906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016103bd565b34801561067157600080fd5b5061040861068036600461391c565b611639565b34801561069157600080fd5b5061064d6106a03660046138d3565b61178b565b3480156106b157600080fd5b5060075460ff166103b1565b3480156106c957600080fd5b5061043b6106d836600461395e565b6001600160a01b031660009081526002602052604090205490565b3480156106ff57600080fd5b5061040861070e366004613866565b6117b5565b61040861072136600461397b565b6117ca565b34801561073257600080fd5b50610408611951565b34801561074757600080fd5b5061043b6107563660046138d3565b6119e3565b34801561076757600080fd5b5061064d6107763660046138d3565b611a05565b34801561078757600080fd5b506104086107963660046139dc565b611a15565b3480156107a757600080fd5b5061064d6107b63660046139f9565b611aae565b3480156107c757600080fd5b506103b16107d63660046138ec565b611acd565b3480156107e757600080fd5b506103db611af6565b3480156107fc57600080fd5b5061043b61080b3660046138d3565b611b05565b34801561081c57600080fd5b5060095461082b9061ffff1681565b60405161ffff90911681526020016103bd565b34801561084a57600080fd5b5061043b600081565b34801561085f57600080fd5b506103b161086e366004613866565b611b2b565b34801561087f57600080fd5b506103b161088e366004613866565b611ba6565b34801561089f57600080fd5b506108a8611bb4565b6040516103bd9190613a1b565b3480156108c157600080fd5b506103b16108d036600461395e565b600e6020526000908152604090205460ff1681565b3480156108f157600080fd5b506103b161090036600461395e565b600f6020526000908152604090205460ff1681565b34801561092157600080fd5b506010546103b19060ff1681565b34801561093b57600080fd5b5061040861094a36600461395e565b611c15565b61040861095d366004613866565b611cda565b34801561096e57600080fd5b506103b161097d36600461395e565b611e27565b34801561098e57600080fd5b5061040861099d366004613a7a565b611e68565b3480156109ae57600080fd5b50600b5461064d906001600160a01b031681565b3480156109ce57600080fd5b5061043b6109dd3660046138d3565b611fc1565b3480156109ee57600080fd5b5061043b600a5481565b348015610a0457600080fd5b5060095461ffff1661082b565b348015610a1d57600080fd5b5061043b60008051602061425a83398151915281565b348015610a3f57600080fd5b50610408610a4e3660046138ec565b611fd8565b348015610a5f57600080fd5b5061043b610a6e366004613a96565b611ffd565b348015610a7f57600080fd5b5061043b60008051602061423a83398151915281565b348015610aa157600080fd5b50610408610ab0366004613ac4565b612028565b348015610ac157600080fd5b50610408610ad03660046138d3565b612201565b348015610ae157600080fd5b50610408610af0366004613831565b612260565b60006001600160e01b03198216635a05180f60e01b1480610b1a5750610b1a8261253c565b92915050565b606060058054610b2f90613b3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5b90613b3b565b8015610ba85780601f10610b7d57610100808354040283529160200191610ba8565b820191906000526020600020905b815481529060010190602001808311610b8b57829003601f168201915b5050505050905090565b600b546001600160a01b03163314610be55760405162461bcd60e51b8152600401610bdc90613b75565b60405180910390fd5b600754610100900460ff16610c0c5760405162461bcd60e51b8152600401610bdc90613bd2565b8063ffffffff1680600a5410610c345760405162461bcd60e51b8152600401610bdc90613c09565b600a54610c42906001613c62565b811115610c615760405162461bcd60e51b8152600401610bdc90613c75565b600a8190556001600160a01b038316610ce25760405162461bcd60e51b815260206004820152603a60248201527f46756e6769626c65546f6b656e577261707065723a204665652052656369706960448201527f656e742063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610bdc565b6009805462010000600160b01b031916620100006001600160a01b038616908102919091179091556040519081527f7a7b5a0a132f9e0581eb8527f66eae9ee89c2a3e79d4ac7e41a1f1f4d48a7fc2906020015b60405180910390a1505050565b600033610d51818585612571565b5060019392505050565b600b546001600160a01b03163314610d855760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff16610dac5760405162461bcd60e51b8152600401610bdc90613bd2565b8063ffffffff1680600a5410610dd45760405162461bcd60e51b8152600401610bdc90613c09565b600a54610de2906001613c62565b811115610e015760405162461bcd60e51b8152600401610bdc90613c75565b600a8190556001600160a01b0383166000908152600e602052604090205460ff16610e825760405162461bcd60e51b815260206004820152602b60248201527f46756e6769626c65546f6b656e577261707065723a20546f6b656e2073686f7560448201526a1b19081899481d985b1a5960aa1b6064820152608401610bdc565b6000805b600c54811015610ee157846001600160a01b0316600c8281548110610ead57610ead613cd2565b6000918252602090912001546001600160a01b031603610ecf57809150610ee1565b80610ed981613ce8565b915050610e86565b50600c548110610f415760405162461bcd60e51b815260206004820152602560248201527f46756e6769626c65546f6b656e577261707065723a20546f6b656e206e6f7420604482015264199bdd5b9960da1b6064820152608401610bdc565b6001600160a01b0384166000908152600e60205260409020805460ff19169055610f6a81612695565b6040516001600160a01b03851681527f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd39060200160405180910390a150505050565b600033610fba858285612745565b610fc58585856127b9565b506001949350505050565b610fd861296f565b600754610100900460ff16610fff5760405162461bcd60e51b8152600401610bdc90613bd2565b61101760008051602061425a83398151915233611acd565b6110335760405162461bcd60e51b8152600401610bdc90613d01565b81816001600160a01b03821661108a57804710156110635760405162461bcd60e51b8152600401610bdc90613d44565b60105460ff166110855760405162461bcd60e51b8152600401610bdc90613d8d565b61114a565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f49190613df8565b10156111125760405162461bcd60e51b8152600401610bdc90613e11565b6001600160a01b0382166000908152600f602052604090205460ff1661114a5760405162461bcd60e51b8152600401610bdc90613e59565b611156858585886129c8565b50506111626001600855565b505050565b61116f61296f565b600754610100900460ff166111965760405162461bcd60e51b8152600401610bdc90613bd2565b6111ae60008051602061425a83398151915233611acd565b6111ca5760405162461bcd60e51b8152600401610bdc90613d01565b60095482906001600160a01b03620100009091048116908390831661122e5780156112075760405162461bcd60e51b8152600401610bdc90613ea7565b60105460ff166112295760405162461bcd60e51b8152600401610bdc90613f04565b611284565b341561124c5760405162461bcd60e51b8152600401610bdc90613f6d565b6001600160a01b0383166000908152600e602052604090205460ff166112845760405162461bcd60e51b8152600401610bdc90613fba565b6001600160a01b0382166112aa5760405162461bcd60e51b8152600401610bdc90613ffd565b6112b381612a8d565b6112cf5760405162461bcd60e51b8152600401610bdc9061404f565b6112db86868689612b06565b5050506111626001600855565b60008281526020819052604090206001015461130381612c51565b6111628383612c5b565b6001600160a01b038116331461137d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610bdc565b6113878282612c7d565b5050565b600033610d5181858561139e8383611ffd565b6113a89190613c62565b612571565b6113b561296f565b600754610100900460ff166113dc5760405162461bcd60e51b8152600401610bdc90613bd2565b81816001600160a01b038216611433578047101561140c5760405162461bcd60e51b8152600401610bdc90613d44565b60105460ff1661142e5760405162461bcd60e51b8152600401610bdc90613d8d565b6114f3565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149d9190613df8565b10156114bb5760405162461bcd60e51b8152600401610bdc90613e11565b6001600160a01b0382166000908152600f602052604090205460ff166114f35760405162461bcd60e51b8152600401610bdc90613e59565b6114ff338585336129c8565b50506113876001600855565b61152360008051602061423a83398151915233611acd565b6115955760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e7061757365000000000000006064820152608401610bdc565b61159d612c9f565b565b6115b760008051602061425a83398151915233611acd565b6116225760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610bdc565b6113878282612cf1565b6116363382612dbe565b50565b61164161296f565b600754610100900460ff166116685760405162461bcd60e51b8152600401610bdc90613bd2565b82826001600160a01b0382166116bf57804710156116985760405162461bcd60e51b8152600401610bdc90613d44565b60105460ff166116ba5760405162461bcd60e51b8152600401610bdc90613d8d565b61177f565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117299190613df8565b10156117475760405162461bcd60e51b8152600401610bdc90613e11565b6001600160a01b0382166000908152600f602052604090205460ff1661177f5760405162461bcd60e51b8152600401610bdc90613e59565b611156338686866129c8565b600c818154811061179b57600080fd5b6000918252602090912001546001600160a01b0316905081565b6117c0823383612745565b6113878282612dbe565b6117d261296f565b600754610100900460ff166117f95760405162461bcd60e51b8152600401610bdc90613bd2565b61181160008051602061425a83398151915233611acd565b61182d5760405162461bcd60e51b8152600401610bdc90613d01565b60095483906001600160a01b03620100009091048116908490831661189157801561186a5760405162461bcd60e51b8152600401610bdc90613ea7565b60105460ff1661188c5760405162461bcd60e51b8152600401610bdc90613f04565b6118e7565b34156118af5760405162461bcd60e51b8152600401610bdc90613f6d565b6001600160a01b0383166000908152600e602052604090205460ff166118e75760405162461bcd60e51b8152600401610bdc90613fba565b6001600160a01b03821661190d5760405162461bcd60e51b8152600401610bdc90613ffd565b61191681612a8d565b6119325760405162461bcd60e51b8152600401610bdc9061404f565b61193e87878787612b06565b50505061194b6001600855565b50505050565b61196960008051602061423a83398151915233611acd565b6119db5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f2070617573650000000000000000006064820152608401610bdc565b61159d612efe565b600954600090612710906119fb9061ffff1684614091565b610b1a91906140a8565b600d818154811061179b57600080fd5b600b546001600160a01b03163314611a3f5760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff16611a665760405162461bcd60e51b8152600401610bdc90613bd2565b6010805460ff19168215159081179091556040519081527f0ee33489a3708dd37659f79ff3c68b385fadf270ba08b0bd75ba882a9cbdceab906020015b60405180910390a150565b6000828152600160205260408120611ac69083612f3b565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b606060068054610b2f90613b3b565b600954600090611b1b9061ffff166127106140ca565b61ffff166119fb83612710614091565b60003381611b398286611ffd565b905083811015611b995760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bdc565b610fc58286868403612571565b600033610d518185856127b9565b6060600c805480602002602001604051908101604052809291908181526020018280548015610ba857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611bee575050505050905090565b600b546001600160a01b03163314611c3f5760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff16611c665760405162461bcd60e51b8152600401610bdc90613bd2565b6001600160a01b038116611c8c5760405162461bcd60e51b8152600401610bdc906140e5565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527ffe149843a4404b43699d446c99c9be2d7a5bfc8bd66e15ca4cfad5ca2811dd9b90602001611aa3565b611ce261296f565b600754610100900460ff16611d095760405162461bcd60e51b8152600401610bdc90613bd2565b60095482906001600160a01b036201000090910481169083908316611d6d578015611d465760405162461bcd60e51b8152600401610bdc90613ea7565b60105460ff16611d685760405162461bcd60e51b8152600401610bdc90613f04565b611dc3565b3415611d8b5760405162461bcd60e51b8152600401610bdc90613f6d565b6001600160a01b0383166000908152600e602052604090205460ff16611dc35760405162461bcd60e51b8152600401610bdc90613fba565b6001600160a01b038216611de95760405162461bcd60e51b8152600401610bdc90613ffd565b611df281612a8d565b611e0e5760405162461bcd60e51b8152600401610bdc9061404f565b611e1a33868633612b06565b5050506113876001600855565b60006001600160a01b038216611e425760105460ff16610b1a565b6001600160a01b0382166000908152600e602052604090205460ff16610b1a565b919050565b600b546001600160a01b03163314611e925760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff16611eb95760405162461bcd60e51b8152600401610bdc90613bd2565b8063ffffffff1680600a5410611ee15760405162461bcd60e51b8152600401610bdc90613c09565b600a54611eef906001613c62565b811115611f0e5760405162461bcd60e51b8152600401610bdc90613c75565b600a81905561271061ffff841610611f7d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6769626c65546f6b656e577261707065723a20496e76616c696420666560448201526b652070657263656e7461676560a01b6064820152608401610bdc565b6009805461ffff191661ffff85169081179091556040519081527fc8fcf8ee1425e7e60b8af83735e1eb516d5b9ef05bfd6eece552ebaeb7c75b4890602001610d36565b6000818152600160205260408120610b1a90612f47565b600082815260208190526040902060010154611ff381612c51565b6111628383612c7d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600754610100900460ff16156120805760405162461bcd60e51b815260206004820181905260248201527f496e697469616c697a65643a20416c726561647920696e697469616c697a65646044820152606401610bdc565b6001600160a01b0385166120f55760405162461bcd60e51b815260206004820152603660248201527f46756e6769626c65546f6b656e577261707065723a20466565205265636970696044820152750656e7420416464726573732063616e277420626520360541b6064820152608401610bdc565b6001600160a01b03841661211b5760405162461bcd60e51b8152600401610bdc906140e5565b6001600160a01b0381166121885760405162461bcd60e51b815260206004820152602e60248201527f46756e6769626c65546f6b656e577261707065723a2041646d696e204164647260448201526d06573732063616e277420626520360941b6064820152608401610bdc565b61219181612f51565b506007805461010061ff00199091161790556009805461ffff969096166001600160b01b031990961695909517620100006001600160a01b039586160217909455600b80546001600160a01b03191692909316919091179091556011556010805460ff1916911515919091179055565b600b546001600160a01b0316331461222b5760405162461bcd60e51b8152600401610bdc90613b75565b60118190556040518181527f14c192a37ba74e5a261a886dc0ea48af42ef0f8aaf19c3adfb61a21cfed3871a90602001611aa3565b600b546001600160a01b0316331461228a5760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff166122b15760405162461bcd60e51b8152600401610bdc90613bd2565b8063ffffffff1680600a54106122d95760405162461bcd60e51b8152600401610bdc90613c09565b600a546122e7906001613c62565b8111156123065760405162461bcd60e51b8152600401610bdc90613c75565b600a8190556001600160a01b0383166000908152600e602052604090205460ff161561238c5760405162461bcd60e51b815260206004820152602f60248201527f46756e6769626c65546f6b656e577261707065723a20546f6b656e2073686f7560448201526e1b19081b9bdd081899481d985b1a59608a1b6064820152608401610bdc565b600c8054600181019091557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b0385169081179091556000908152600f602052604090205460ff1661244f57600d805460018082019092557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0386169081179091556000908152600f60205260409020805460ff191690911790555b6001600160a01b0383166000818152600e6020908152604091829020805460ff1916600117905590519182527f784c8f4dbf0ffedd6e72c76501c545a70f8b203b30a26ce542bf92ba87c248a49101610d36565b6124ad8282611acd565b611387576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556124e33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611ac6836001600160a01b038416612f8c565b60006001600160e01b03198216637965db0b60e01b1480610b1a57506301ffc9a760e01b6001600160e01b0319831614610b1a565b6001600160a01b0383166125d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bdc565b6001600160a01b0382166126345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bdc565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600c80546126a590600190614135565b815481106126b5576126b5613cd2565b600091825260209091200154600c80546001600160a01b0390921691839081106126e1576126e1613cd2565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600c80548061272057612720614148565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006127518484611ffd565b9050600019811461194b57818110156127ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bdc565b61194b8484848403612571565b6001600160a01b03831661281d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bdc565b6001600160a01b03821661287f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bdc565b61288a838383612fdb565b6001600160a01b038316600090815260026020526040902054818110156129025760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bdc565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129629086815260200190565b60405180910390a361194b565b6002600854036129c15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bdc565b6002600855565b6129d28483612dbe565b6001600160a01b038316612a1c576040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015612a16573d6000803e3d6000fd5b50612a30565b612a306001600160a01b0384168284612fe6565b826001600160a01b0316816001600160a01b0316856001600160a01b03167fc7cf326ae4d946221176a457cc309d5d2c15f3547111d8cca36951076eee4d0885604051612a7f91815260200190565b60405180910390a450505050565b6000601154306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af49190613df8565b612afe9084613c62565b111592915050565b6000612b266001600160a01b03851615612b2057836119e3565b346119e3565b905060006001600160a01b03851615612b4857612b438285614135565b612b52565b612b528234614135565b90506001600160a01b038516612ba757600954604051620100009091046001600160a01b0316906108fc8415029084906000818181858888f19350505050158015612ba1573d6000803e3d6000fd5b50612bdf565b612bbc6001600160a01b038616873084613049565b600954612bdf906001600160a01b03878116918991620100009091041685613049565b612be98382612cf1565b846001600160a01b0316836001600160a01b0316876001600160a01b03167f33b746cfd20b944045b4330ae6f0c76d65eb4b3939a92f6c0a5dce4e9e9f99d98585604051612c41929190918252602082015260400190565b60405180910390a4505050505050565b6116368133613081565b612c6582826124a3565b60008281526001602052604090206111629082612527565b612c8782826130da565b6000828152600160205260409020611162908261313f565b612ca7613154565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216612d475760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bdc565b612d5360008383612fdb565b8060046000828254612d659190613c62565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216612e1e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bdc565b612e2a82600083612fdb565b6001600160a01b03821660009081526002602052604090205481811015612e9e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bdc565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b612f0661319d565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612cd43390565b6000611ac683836131e3565b6000610b1a825490565b612f6960008051602061425a8339815191528261320d565b612f7460008261320d565b61163660008051602061423a8339815191528261320d565b6000818152600183016020526040812054612fd357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b1a565b506000610b1a565b611162838383613217565b6040516001600160a01b03831660248201526044810182905261116290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261327d565b6040516001600160a01b038085166024830152831660448201526064810182905261194b9085906323b872dd60e01b90608401613012565b61308b8282611acd565b611387576130988161334f565b6130a3836020613361565b6040516020016130b492919061415e565b60408051601f198184030181529082905262461bcd60e51b8252610bdc916004016137d5565b6130e48282611acd565b15611387576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611ac6836001600160a01b0384166134fd565b60075460ff1661159d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610bdc565b60075460ff161561159d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610bdc565b60008260000182815481106131fa576131fa613cd2565b9060005260206000200154905092915050565b6113878282612c5b565b60075460ff16156111625760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610bdc565b60006132d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135f79092919063ffffffff16565b80519091501561116257808060200190518101906132f091906141d3565b6111625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bdc565b6060610b1a6001600160a01b03831660145b60606000613370836002614091565b61337b906002613c62565b67ffffffffffffffff811115613393576133936141f0565b6040519080825280601f01601f1916602001820160405280156133bd576020820181803683370190505b509050600360fc1b816000815181106133d8576133d8613cd2565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061340757613407613cd2565b60200101906001600160f81b031916908160001a905350600061342b846002614091565b613436906001613c62565b90505b60018111156134ae576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061346a5761346a613cd2565b1a60f81b82828151811061348057613480613cd2565b60200101906001600160f81b031916908160001a90535060049490941c936134a781614206565b9050613439565b508315611ac65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bdc565b600081815260018301602052604081205480156135e6576000613521600183614135565b855490915060009061353590600190614135565b905081811461359a57600086600001828154811061355557613555613cd2565b906000526020600020015490508087600001848154811061357857613578613cd2565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806135ab576135ab614148565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b1a565b6000915050610b1a565b5092915050565b6060613606848460008561360e565b949350505050565b60608247101561366f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bdc565b600080866001600160a01b0316858760405161368b919061421d565b60006040518083038185875af1925050503d80600081146136c8576040519150601f19603f3d011682016040523d82523d6000602084013e6136cd565b606091505b50915091506136de878383876136e9565b979650505050505050565b60608315613758578251600003613751576001600160a01b0385163b6137515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bdc565b5081613606565b613606838381511561376d5781518083602001fd5b8060405162461bcd60e51b8152600401610bdc91906137d5565b60006020828403121561379957600080fd5b81356001600160e01b031981168114611ac657600080fd5b60005b838110156137cc5781810151838201526020016137b4565b50506000910152565b60208152600082518060208401526137f48160408501602087016137b1565b601f01601f19169190910160400192915050565b6001600160a01b038116811461163657600080fd5b803563ffffffff81168114611e6357600080fd5b6000806040838503121561384457600080fd5b823561384f81613808565b915061385d6020840161381d565b90509250929050565b6000806040838503121561387957600080fd5b823561388481613808565b946020939093013593505050565b6000806000606084860312156138a757600080fd5b83356138b281613808565b925060208401356138c281613808565b929592945050506040919091013590565b6000602082840312156138e557600080fd5b5035919050565b600080604083850312156138ff57600080fd5b82359150602083013561391181613808565b809150509250929050565b60008060006060848603121561393157600080fd5b833561393c81613808565b925060208401359150604084013561395381613808565b809150509250925092565b60006020828403121561397057600080fd5b8135611ac681613808565b6000806000806080858703121561399157600080fd5b843561399c81613808565b935060208501356139ac81613808565b92506040850135915060608501356139c381613808565b939692955090935050565b801515811461163657600080fd5b6000602082840312156139ee57600080fd5b8135611ac6816139ce565b60008060408385031215613a0c57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613a5c5783516001600160a01b031683529284019291840191600101613a37565b50909695505050505050565b803561ffff81168114611e6357600080fd5b60008060408385031215613a8d57600080fd5b61384f83613a68565b60008060408385031215613aa957600080fd5b8235613ab481613808565b9150602083013561391181613808565b60008060008060008060c08789031215613add57600080fd5b613ae687613a68565b95506020870135613af681613808565b94506040870135613b0681613808565b9350606087013592506080870135613b1d816139ce565b915060a0870135613b2d81613808565b809150509295509295509295565b600181811c90821680613b4f57607f821691505b602082108103613b6f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526039908201527f46756e6769626c65546f6b656e577261707065723a204f6e6c792068616e646c60408201527f65722063616e2063616c6c20746869732066756e6374696f6e00000000000000606082015260800190565b6020808252601c908201527f496e697469616c697a65643a204e6f7420696e697469616c697a656400000000604082015260600190565b60208082526023908201527f50726f706f73616c4e6f6e6365547261636b65723a20496e76616c6964206e6f6040820152626e636560e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b1a57610b1a613c4c565b6020808252603a908201527f50726f706f73616c4e6f6e6365547261636b65723a204e6f6e6365206d75737460408201527f206e6f7420696e6372656d656e74206d6f7265207468616e2031000000000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201613cfa57613cfa613c4c565b5060010190565b60208082526023908201527f546f6b656e577261707065723a206d7573742068617665206d696e74657220726040820152626f6c6560e81b606082015260800190565b60208082526029908201527f546f6b656e577261707065723a20496e73756666696369656e74206e61746976604082015268652062616c616e636560b81b606082015260800190565b60208082526045908201527f546f6b656e577261707065723a204e617469766520756e7772617070696e672060408201527f6973206e6f7420616c6c6f77656420666f72207468697320746f6b656e20777260608201526430b83832b960d91b608082015260a00190565b600060208284031215613e0a57600080fd5b5051919050565b60208082526028908201527f546f6b656e577261707065723a20496e73756666696369656e742045524332306040820152672062616c616e636560c01b606082015260800190565b6020808252602e908201527f546f6b656e577261707065723a20496e76616c696420686973746f726963616c60408201526d20746f6b656e206164647265737360901b606082015260800190565b60208082526039908201527f546f6b656e577261707065723a20496e76616c696420616d6f756e742070726f60408201527f766964656420666f72206e6174697665207772617070696e6700000000000000606082015260800190565b60208082526043908201527f546f6b656e577261707065723a204e6174697665207772617070696e6720697360408201527f206e6f7420616c6c6f77656420666f72207468697320746f6b656e20777261706060820152623832b960e91b608082015260a00190565b6020808252602d908201527f546f6b656e577261707065723a20496e76616c69642076616c75652073656e7460408201526c20666f72207772617070696e6760981b606082015260800190565b60208082526023908201527f546f6b656e577261707065723a20496e76616c696420746f6b656e206164647260408201526265737360e81b606082015260800190565b60208082526032908201527f546f6b656e577261707065723a2046656520526563697069656e742063616e6e6040820152716f74206265207a65726f206164647265737360701b606082015260800190565b60208082526022908201527f546f6b656e577261707065723a20496e76616c696420746f6b656e20616d6f756040820152611b9d60f21b606082015260800190565b8082028115828204841417610b1a57610b1a613c4c565b6000826140c557634e487b7160e01b600052601260045260246000fd5b500490565b61ffff8281168282160390808211156135f0576135f0613c4c565b60208082526030908201527f46756e6769626c65546f6b656e577261707065723a2048616e646c657220416460408201526f064726573732063616e277420626520360841b606082015260800190565b81810381811115610b1a57610b1a613c4c565b634e487b7160e01b600052603160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516141968160178501602088016137b1565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516141c78160288401602088016137b1565b01602801949350505050565b6000602082840312156141e557600080fd5b8151611ac6816139ce565b634e487b7160e01b600052604160045260246000fd5b60008161421557614215613c4c565b506000190190565b6000825161422f8184602087016137b1565b919091019291505056fe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220cfa93c065d8df089ff1b30d808b84f1f2660335b4f1f8f02ed96a4dd1c86113064736f6c63430008120033", "deployedBytecode": "0x60806040526004361061038c5760003560e01c806385c00ae8116101dc578063bac426d011610102578063ced72f87116100a0578063e63ab1e91161006f578063e63ab1e914610a73578063f63ebb4514610a95578063fae0959a14610ab5578063fc97a65214610ad557600080fd5b8063ced72f87146109f8578063d539139314610a11578063d547741f14610a33578063dd62ed3e14610a5357600080fd5b8063c2ae4720116100dc578063c2ae472014610982578063c80916d4146109a2578063ca15c873146109c2578063cc3c74a1146109e257600080fd5b8063bac426d01461092f578063bf376c7a1461094f578063c18764531461096257600080fd5b8063a001ecdd1161017a578063aa6ca80811610149578063aa6ca80814610893578063ac8a260c146108b5578063b1cba258146108e5578063b3e4083f1461091557600080fd5b8063a001ecdd14610810578063a217fddf1461083e578063a457c2d714610853578063a9059cbb1461087357600080fd5b80639010d07c116101b65780639010d07c1461079b57806391d14854146107bb57806395d89b41146107db57806396cd4dfe146107f057600080fd5b806385c00ae81461073b57806385d148341461075b5780638b5478b91461077b57600080fd5b8063313ce567116102c1578063469048401161025f57806370a082311161022e57806370a08231146106bd57806379cc6790146106f35780637b2e30d6146107135780638456cb591461072657600080fd5b806346904840146106275780634808285e146106655780634f64b2be146106855780635c975abb146106a557600080fd5b806339f476931161029b57806339f47693146105b25780633f4ba83a146105d257806340c10f19146105e757806342966c681461060757600080fd5b8063313ce5671461055657806336568abe14610572578063395093511461059257600080fd5b80631c4a14361161032e578063248a9ca311610308578063248a9ca3146104d3578063261c80b6146105035780632ca69388146105235780632f2ff15d1461053657600080fd5b80631c4a14361461047d5780631f9143821461049d57806323b872dd146104b357600080fd5b8063095ea7b31161036a578063095ea7b31461040a5780630b27fb9a1461042a578063158ef93e1461044957806318160ddd1461046857600080fd5b806301ffc9a71461039157806306fdde03146103c657806307184f1c146103e8575b600080fd5b34801561039d57600080fd5b506103b16103ac366004613787565b610af5565b60405190151581526020015b60405180910390f35b3480156103d257600080fd5b506103db610b20565b6040516103bd91906137d5565b3480156103f457600080fd5b50610408610403366004613831565b610bb2565b005b34801561041657600080fd5b506103b1610425366004613866565b610d43565b34801561043657600080fd5b50600a545b6040519081526020016103bd565b34801561045557600080fd5b506007546103b190610100900460ff1681565b34801561047457600080fd5b5060045461043b565b34801561048957600080fd5b50610408610498366004613831565b610d5b565b3480156104a957600080fd5b5061043b60115481565b3480156104bf57600080fd5b506103b16104ce366004613892565b610fac565b3480156104df57600080fd5b5061043b6104ee3660046138d3565b60009081526020819052604090206001015490565b34801561050f57600080fd5b5061040861051e366004613892565b610fd0565b610408610531366004613892565b611167565b34801561054257600080fd5b506104086105513660046138ec565b6112e8565b34801561056257600080fd5b50604051601281526020016103bd565b34801561057e57600080fd5b5061040861058d3660046138ec565b61130d565b34801561059e57600080fd5b506103b16105ad366004613866565b61138b565b3480156105be57600080fd5b506104086105cd366004613866565b6113ad565b3480156105de57600080fd5b5061040861150b565b3480156105f357600080fd5b50610408610602366004613866565b61159f565b34801561061357600080fd5b506104086106223660046138d3565b61162c565b34801561063357600080fd5b5060095461064d906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016103bd565b34801561067157600080fd5b5061040861068036600461391c565b611639565b34801561069157600080fd5b5061064d6106a03660046138d3565b61178b565b3480156106b157600080fd5b5060075460ff166103b1565b3480156106c957600080fd5b5061043b6106d836600461395e565b6001600160a01b031660009081526002602052604090205490565b3480156106ff57600080fd5b5061040861070e366004613866565b6117b5565b61040861072136600461397b565b6117ca565b34801561073257600080fd5b50610408611951565b34801561074757600080fd5b5061043b6107563660046138d3565b6119e3565b34801561076757600080fd5b5061064d6107763660046138d3565b611a05565b34801561078757600080fd5b506104086107963660046139dc565b611a15565b3480156107a757600080fd5b5061064d6107b63660046139f9565b611aae565b3480156107c757600080fd5b506103b16107d63660046138ec565b611acd565b3480156107e757600080fd5b506103db611af6565b3480156107fc57600080fd5b5061043b61080b3660046138d3565b611b05565b34801561081c57600080fd5b5060095461082b9061ffff1681565b60405161ffff90911681526020016103bd565b34801561084a57600080fd5b5061043b600081565b34801561085f57600080fd5b506103b161086e366004613866565b611b2b565b34801561087f57600080fd5b506103b161088e366004613866565b611ba6565b34801561089f57600080fd5b506108a8611bb4565b6040516103bd9190613a1b565b3480156108c157600080fd5b506103b16108d036600461395e565b600e6020526000908152604090205460ff1681565b3480156108f157600080fd5b506103b161090036600461395e565b600f6020526000908152604090205460ff1681565b34801561092157600080fd5b506010546103b19060ff1681565b34801561093b57600080fd5b5061040861094a36600461395e565b611c15565b61040861095d366004613866565b611cda565b34801561096e57600080fd5b506103b161097d36600461395e565b611e27565b34801561098e57600080fd5b5061040861099d366004613a7a565b611e68565b3480156109ae57600080fd5b50600b5461064d906001600160a01b031681565b3480156109ce57600080fd5b5061043b6109dd3660046138d3565b611fc1565b3480156109ee57600080fd5b5061043b600a5481565b348015610a0457600080fd5b5060095461ffff1661082b565b348015610a1d57600080fd5b5061043b60008051602061425a83398151915281565b348015610a3f57600080fd5b50610408610a4e3660046138ec565b611fd8565b348015610a5f57600080fd5b5061043b610a6e366004613a96565b611ffd565b348015610a7f57600080fd5b5061043b60008051602061423a83398151915281565b348015610aa157600080fd5b50610408610ab0366004613ac4565b612028565b348015610ac157600080fd5b50610408610ad03660046138d3565b612201565b348015610ae157600080fd5b50610408610af0366004613831565b612260565b60006001600160e01b03198216635a05180f60e01b1480610b1a5750610b1a8261253c565b92915050565b606060058054610b2f90613b3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5b90613b3b565b8015610ba85780601f10610b7d57610100808354040283529160200191610ba8565b820191906000526020600020905b815481529060010190602001808311610b8b57829003601f168201915b5050505050905090565b600b546001600160a01b03163314610be55760405162461bcd60e51b8152600401610bdc90613b75565b60405180910390fd5b600754610100900460ff16610c0c5760405162461bcd60e51b8152600401610bdc90613bd2565b8063ffffffff1680600a5410610c345760405162461bcd60e51b8152600401610bdc90613c09565b600a54610c42906001613c62565b811115610c615760405162461bcd60e51b8152600401610bdc90613c75565b600a8190556001600160a01b038316610ce25760405162461bcd60e51b815260206004820152603a60248201527f46756e6769626c65546f6b656e577261707065723a204665652052656369706960448201527f656e742063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610bdc565b6009805462010000600160b01b031916620100006001600160a01b038616908102919091179091556040519081527f7a7b5a0a132f9e0581eb8527f66eae9ee89c2a3e79d4ac7e41a1f1f4d48a7fc2906020015b60405180910390a1505050565b600033610d51818585612571565b5060019392505050565b600b546001600160a01b03163314610d855760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff16610dac5760405162461bcd60e51b8152600401610bdc90613bd2565b8063ffffffff1680600a5410610dd45760405162461bcd60e51b8152600401610bdc90613c09565b600a54610de2906001613c62565b811115610e015760405162461bcd60e51b8152600401610bdc90613c75565b600a8190556001600160a01b0383166000908152600e602052604090205460ff16610e825760405162461bcd60e51b815260206004820152602b60248201527f46756e6769626c65546f6b656e577261707065723a20546f6b656e2073686f7560448201526a1b19081899481d985b1a5960aa1b6064820152608401610bdc565b6000805b600c54811015610ee157846001600160a01b0316600c8281548110610ead57610ead613cd2565b6000918252602090912001546001600160a01b031603610ecf57809150610ee1565b80610ed981613ce8565b915050610e86565b50600c548110610f415760405162461bcd60e51b815260206004820152602560248201527f46756e6769626c65546f6b656e577261707065723a20546f6b656e206e6f7420604482015264199bdd5b9960da1b6064820152608401610bdc565b6001600160a01b0384166000908152600e60205260409020805460ff19169055610f6a81612695565b6040516001600160a01b03851681527f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd39060200160405180910390a150505050565b600033610fba858285612745565b610fc58585856127b9565b506001949350505050565b610fd861296f565b600754610100900460ff16610fff5760405162461bcd60e51b8152600401610bdc90613bd2565b61101760008051602061425a83398151915233611acd565b6110335760405162461bcd60e51b8152600401610bdc90613d01565b81816001600160a01b03821661108a57804710156110635760405162461bcd60e51b8152600401610bdc90613d44565b60105460ff166110855760405162461bcd60e51b8152600401610bdc90613d8d565b61114a565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f49190613df8565b10156111125760405162461bcd60e51b8152600401610bdc90613e11565b6001600160a01b0382166000908152600f602052604090205460ff1661114a5760405162461bcd60e51b8152600401610bdc90613e59565b611156858585886129c8565b50506111626001600855565b505050565b61116f61296f565b600754610100900460ff166111965760405162461bcd60e51b8152600401610bdc90613bd2565b6111ae60008051602061425a83398151915233611acd565b6111ca5760405162461bcd60e51b8152600401610bdc90613d01565b60095482906001600160a01b03620100009091048116908390831661122e5780156112075760405162461bcd60e51b8152600401610bdc90613ea7565b60105460ff166112295760405162461bcd60e51b8152600401610bdc90613f04565b611284565b341561124c5760405162461bcd60e51b8152600401610bdc90613f6d565b6001600160a01b0383166000908152600e602052604090205460ff166112845760405162461bcd60e51b8152600401610bdc90613fba565b6001600160a01b0382166112aa5760405162461bcd60e51b8152600401610bdc90613ffd565b6112b381612a8d565b6112cf5760405162461bcd60e51b8152600401610bdc9061404f565b6112db86868689612b06565b5050506111626001600855565b60008281526020819052604090206001015461130381612c51565b6111628383612c5b565b6001600160a01b038116331461137d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610bdc565b6113878282612c7d565b5050565b600033610d5181858561139e8383611ffd565b6113a89190613c62565b612571565b6113b561296f565b600754610100900460ff166113dc5760405162461bcd60e51b8152600401610bdc90613bd2565b81816001600160a01b038216611433578047101561140c5760405162461bcd60e51b8152600401610bdc90613d44565b60105460ff1661142e5760405162461bcd60e51b8152600401610bdc90613d8d565b6114f3565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149d9190613df8565b10156114bb5760405162461bcd60e51b8152600401610bdc90613e11565b6001600160a01b0382166000908152600f602052604090205460ff166114f35760405162461bcd60e51b8152600401610bdc90613e59565b6114ff338585336129c8565b50506113876001600855565b61152360008051602061423a83398151915233611acd565b6115955760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e7061757365000000000000006064820152608401610bdc565b61159d612c9f565b565b6115b760008051602061425a83398151915233611acd565b6116225760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610bdc565b6113878282612cf1565b6116363382612dbe565b50565b61164161296f565b600754610100900460ff166116685760405162461bcd60e51b8152600401610bdc90613bd2565b82826001600160a01b0382166116bf57804710156116985760405162461bcd60e51b8152600401610bdc90613d44565b60105460ff166116ba5760405162461bcd60e51b8152600401610bdc90613d8d565b61177f565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117299190613df8565b10156117475760405162461bcd60e51b8152600401610bdc90613e11565b6001600160a01b0382166000908152600f602052604090205460ff1661177f5760405162461bcd60e51b8152600401610bdc90613e59565b611156338686866129c8565b600c818154811061179b57600080fd5b6000918252602090912001546001600160a01b0316905081565b6117c0823383612745565b6113878282612dbe565b6117d261296f565b600754610100900460ff166117f95760405162461bcd60e51b8152600401610bdc90613bd2565b61181160008051602061425a83398151915233611acd565b61182d5760405162461bcd60e51b8152600401610bdc90613d01565b60095483906001600160a01b03620100009091048116908490831661189157801561186a5760405162461bcd60e51b8152600401610bdc90613ea7565b60105460ff1661188c5760405162461bcd60e51b8152600401610bdc90613f04565b6118e7565b34156118af5760405162461bcd60e51b8152600401610bdc90613f6d565b6001600160a01b0383166000908152600e602052604090205460ff166118e75760405162461bcd60e51b8152600401610bdc90613fba565b6001600160a01b03821661190d5760405162461bcd60e51b8152600401610bdc90613ffd565b61191681612a8d565b6119325760405162461bcd60e51b8152600401610bdc9061404f565b61193e87878787612b06565b50505061194b6001600855565b50505050565b61196960008051602061423a83398151915233611acd565b6119db5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f2070617573650000000000000000006064820152608401610bdc565b61159d612efe565b600954600090612710906119fb9061ffff1684614091565b610b1a91906140a8565b600d818154811061179b57600080fd5b600b546001600160a01b03163314611a3f5760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff16611a665760405162461bcd60e51b8152600401610bdc90613bd2565b6010805460ff19168215159081179091556040519081527f0ee33489a3708dd37659f79ff3c68b385fadf270ba08b0bd75ba882a9cbdceab906020015b60405180910390a150565b6000828152600160205260408120611ac69083612f3b565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b606060068054610b2f90613b3b565b600954600090611b1b9061ffff166127106140ca565b61ffff166119fb83612710614091565b60003381611b398286611ffd565b905083811015611b995760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bdc565b610fc58286868403612571565b600033610d518185856127b9565b6060600c805480602002602001604051908101604052809291908181526020018280548015610ba857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611bee575050505050905090565b600b546001600160a01b03163314611c3f5760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff16611c665760405162461bcd60e51b8152600401610bdc90613bd2565b6001600160a01b038116611c8c5760405162461bcd60e51b8152600401610bdc906140e5565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527ffe149843a4404b43699d446c99c9be2d7a5bfc8bd66e15ca4cfad5ca2811dd9b90602001611aa3565b611ce261296f565b600754610100900460ff16611d095760405162461bcd60e51b8152600401610bdc90613bd2565b60095482906001600160a01b036201000090910481169083908316611d6d578015611d465760405162461bcd60e51b8152600401610bdc90613ea7565b60105460ff16611d685760405162461bcd60e51b8152600401610bdc90613f04565b611dc3565b3415611d8b5760405162461bcd60e51b8152600401610bdc90613f6d565b6001600160a01b0383166000908152600e602052604090205460ff16611dc35760405162461bcd60e51b8152600401610bdc90613fba565b6001600160a01b038216611de95760405162461bcd60e51b8152600401610bdc90613ffd565b611df281612a8d565b611e0e5760405162461bcd60e51b8152600401610bdc9061404f565b611e1a33868633612b06565b5050506113876001600855565b60006001600160a01b038216611e425760105460ff16610b1a565b6001600160a01b0382166000908152600e602052604090205460ff16610b1a565b919050565b600b546001600160a01b03163314611e925760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff16611eb95760405162461bcd60e51b8152600401610bdc90613bd2565b8063ffffffff1680600a5410611ee15760405162461bcd60e51b8152600401610bdc90613c09565b600a54611eef906001613c62565b811115611f0e5760405162461bcd60e51b8152600401610bdc90613c75565b600a81905561271061ffff841610611f7d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6769626c65546f6b656e577261707065723a20496e76616c696420666560448201526b652070657263656e7461676560a01b6064820152608401610bdc565b6009805461ffff191661ffff85169081179091556040519081527fc8fcf8ee1425e7e60b8af83735e1eb516d5b9ef05bfd6eece552ebaeb7c75b4890602001610d36565b6000818152600160205260408120610b1a90612f47565b600082815260208190526040902060010154611ff381612c51565b6111628383612c7d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600754610100900460ff16156120805760405162461bcd60e51b815260206004820181905260248201527f496e697469616c697a65643a20416c726561647920696e697469616c697a65646044820152606401610bdc565b6001600160a01b0385166120f55760405162461bcd60e51b815260206004820152603660248201527f46756e6769626c65546f6b656e577261707065723a20466565205265636970696044820152750656e7420416464726573732063616e277420626520360541b6064820152608401610bdc565b6001600160a01b03841661211b5760405162461bcd60e51b8152600401610bdc906140e5565b6001600160a01b0381166121885760405162461bcd60e51b815260206004820152602e60248201527f46756e6769626c65546f6b656e577261707065723a2041646d696e204164647260448201526d06573732063616e277420626520360941b6064820152608401610bdc565b61219181612f51565b506007805461010061ff00199091161790556009805461ffff969096166001600160b01b031990961695909517620100006001600160a01b039586160217909455600b80546001600160a01b03191692909316919091179091556011556010805460ff1916911515919091179055565b600b546001600160a01b0316331461222b5760405162461bcd60e51b8152600401610bdc90613b75565b60118190556040518181527f14c192a37ba74e5a261a886dc0ea48af42ef0f8aaf19c3adfb61a21cfed3871a90602001611aa3565b600b546001600160a01b0316331461228a5760405162461bcd60e51b8152600401610bdc90613b75565b600754610100900460ff166122b15760405162461bcd60e51b8152600401610bdc90613bd2565b8063ffffffff1680600a54106122d95760405162461bcd60e51b8152600401610bdc90613c09565b600a546122e7906001613c62565b8111156123065760405162461bcd60e51b8152600401610bdc90613c75565b600a8190556001600160a01b0383166000908152600e602052604090205460ff161561238c5760405162461bcd60e51b815260206004820152602f60248201527f46756e6769626c65546f6b656e577261707065723a20546f6b656e2073686f7560448201526e1b19081b9bdd081899481d985b1a59608a1b6064820152608401610bdc565b600c8054600181019091557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b0385169081179091556000908152600f602052604090205460ff1661244f57600d805460018082019092557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0386169081179091556000908152600f60205260409020805460ff191690911790555b6001600160a01b0383166000818152600e6020908152604091829020805460ff1916600117905590519182527f784c8f4dbf0ffedd6e72c76501c545a70f8b203b30a26ce542bf92ba87c248a49101610d36565b6124ad8282611acd565b611387576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556124e33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611ac6836001600160a01b038416612f8c565b60006001600160e01b03198216637965db0b60e01b1480610b1a57506301ffc9a760e01b6001600160e01b0319831614610b1a565b6001600160a01b0383166125d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bdc565b6001600160a01b0382166126345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bdc565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600c80546126a590600190614135565b815481106126b5576126b5613cd2565b600091825260209091200154600c80546001600160a01b0390921691839081106126e1576126e1613cd2565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600c80548061272057612720614148565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006127518484611ffd565b9050600019811461194b57818110156127ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bdc565b61194b8484848403612571565b6001600160a01b03831661281d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bdc565b6001600160a01b03821661287f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bdc565b61288a838383612fdb565b6001600160a01b038316600090815260026020526040902054818110156129025760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bdc565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129629086815260200190565b60405180910390a361194b565b6002600854036129c15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bdc565b6002600855565b6129d28483612dbe565b6001600160a01b038316612a1c576040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015612a16573d6000803e3d6000fd5b50612a30565b612a306001600160a01b0384168284612fe6565b826001600160a01b0316816001600160a01b0316856001600160a01b03167fc7cf326ae4d946221176a457cc309d5d2c15f3547111d8cca36951076eee4d0885604051612a7f91815260200190565b60405180910390a450505050565b6000601154306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af49190613df8565b612afe9084613c62565b111592915050565b6000612b266001600160a01b03851615612b2057836119e3565b346119e3565b905060006001600160a01b03851615612b4857612b438285614135565b612b52565b612b528234614135565b90506001600160a01b038516612ba757600954604051620100009091046001600160a01b0316906108fc8415029084906000818181858888f19350505050158015612ba1573d6000803e3d6000fd5b50612bdf565b612bbc6001600160a01b038616873084613049565b600954612bdf906001600160a01b03878116918991620100009091041685613049565b612be98382612cf1565b846001600160a01b0316836001600160a01b0316876001600160a01b03167f33b746cfd20b944045b4330ae6f0c76d65eb4b3939a92f6c0a5dce4e9e9f99d98585604051612c41929190918252602082015260400190565b60405180910390a4505050505050565b6116368133613081565b612c6582826124a3565b60008281526001602052604090206111629082612527565b612c8782826130da565b6000828152600160205260409020611162908261313f565b612ca7613154565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216612d475760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bdc565b612d5360008383612fdb565b8060046000828254612d659190613c62565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216612e1e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bdc565b612e2a82600083612fdb565b6001600160a01b03821660009081526002602052604090205481811015612e9e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bdc565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b612f0661319d565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612cd43390565b6000611ac683836131e3565b6000610b1a825490565b612f6960008051602061425a8339815191528261320d565b612f7460008261320d565b61163660008051602061423a8339815191528261320d565b6000818152600183016020526040812054612fd357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b1a565b506000610b1a565b611162838383613217565b6040516001600160a01b03831660248201526044810182905261116290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261327d565b6040516001600160a01b038085166024830152831660448201526064810182905261194b9085906323b872dd60e01b90608401613012565b61308b8282611acd565b611387576130988161334f565b6130a3836020613361565b6040516020016130b492919061415e565b60408051601f198184030181529082905262461bcd60e51b8252610bdc916004016137d5565b6130e48282611acd565b15611387576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611ac6836001600160a01b0384166134fd565b60075460ff1661159d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610bdc565b60075460ff161561159d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610bdc565b60008260000182815481106131fa576131fa613cd2565b9060005260206000200154905092915050565b6113878282612c5b565b60075460ff16156111625760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610bdc565b60006132d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135f79092919063ffffffff16565b80519091501561116257808060200190518101906132f091906141d3565b6111625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bdc565b6060610b1a6001600160a01b03831660145b60606000613370836002614091565b61337b906002613c62565b67ffffffffffffffff811115613393576133936141f0565b6040519080825280601f01601f1916602001820160405280156133bd576020820181803683370190505b509050600360fc1b816000815181106133d8576133d8613cd2565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061340757613407613cd2565b60200101906001600160f81b031916908160001a905350600061342b846002614091565b613436906001613c62565b90505b60018111156134ae576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061346a5761346a613cd2565b1a60f81b82828151811061348057613480613cd2565b60200101906001600160f81b031916908160001a90535060049490941c936134a781614206565b9050613439565b508315611ac65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bdc565b600081815260018301602052604081205480156135e6576000613521600183614135565b855490915060009061353590600190614135565b905081811461359a57600086600001828154811061355557613555613cd2565b906000526020600020015490508087600001848154811061357857613578613cd2565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806135ab576135ab614148565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b1a565b6000915050610b1a565b5092915050565b6060613606848460008561360e565b949350505050565b60608247101561366f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bdc565b600080866001600160a01b0316858760405161368b919061421d565b60006040518083038185875af1925050503d80600081146136c8576040519150601f19603f3d011682016040523d82523d6000602084013e6136cd565b606091505b50915091506136de878383876136e9565b979650505050505050565b60608315613758578251600003613751576001600160a01b0385163b6137515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bdc565b5081613606565b613606838381511561376d5781518083602001fd5b8060405162461bcd60e51b8152600401610bdc91906137d5565b60006020828403121561379957600080fd5b81356001600160e01b031981168114611ac657600080fd5b60005b838110156137cc5781810151838201526020016137b4565b50506000910152565b60208152600082518060208401526137f48160408501602087016137b1565b601f01601f19169190910160400192915050565b6001600160a01b038116811461163657600080fd5b803563ffffffff81168114611e6357600080fd5b6000806040838503121561384457600080fd5b823561384f81613808565b915061385d6020840161381d565b90509250929050565b6000806040838503121561387957600080fd5b823561388481613808565b946020939093013593505050565b6000806000606084860312156138a757600080fd5b83356138b281613808565b925060208401356138c281613808565b929592945050506040919091013590565b6000602082840312156138e557600080fd5b5035919050565b600080604083850312156138ff57600080fd5b82359150602083013561391181613808565b809150509250929050565b60008060006060848603121561393157600080fd5b833561393c81613808565b925060208401359150604084013561395381613808565b809150509250925092565b60006020828403121561397057600080fd5b8135611ac681613808565b6000806000806080858703121561399157600080fd5b843561399c81613808565b935060208501356139ac81613808565b92506040850135915060608501356139c381613808565b939692955090935050565b801515811461163657600080fd5b6000602082840312156139ee57600080fd5b8135611ac6816139ce565b60008060408385031215613a0c57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613a5c5783516001600160a01b031683529284019291840191600101613a37565b50909695505050505050565b803561ffff81168114611e6357600080fd5b60008060408385031215613a8d57600080fd5b61384f83613a68565b60008060408385031215613aa957600080fd5b8235613ab481613808565b9150602083013561391181613808565b60008060008060008060c08789031215613add57600080fd5b613ae687613a68565b95506020870135613af681613808565b94506040870135613b0681613808565b9350606087013592506080870135613b1d816139ce565b915060a0870135613b2d81613808565b809150509295509295509295565b600181811c90821680613b4f57607f821691505b602082108103613b6f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526039908201527f46756e6769626c65546f6b656e577261707065723a204f6e6c792068616e646c60408201527f65722063616e2063616c6c20746869732066756e6374696f6e00000000000000606082015260800190565b6020808252601c908201527f496e697469616c697a65643a204e6f7420696e697469616c697a656400000000604082015260600190565b60208082526023908201527f50726f706f73616c4e6f6e6365547261636b65723a20496e76616c6964206e6f6040820152626e636560e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b1a57610b1a613c4c565b6020808252603a908201527f50726f706f73616c4e6f6e6365547261636b65723a204e6f6e6365206d75737460408201527f206e6f7420696e6372656d656e74206d6f7265207468616e2031000000000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201613cfa57613cfa613c4c565b5060010190565b60208082526023908201527f546f6b656e577261707065723a206d7573742068617665206d696e74657220726040820152626f6c6560e81b606082015260800190565b60208082526029908201527f546f6b656e577261707065723a20496e73756666696369656e74206e61746976604082015268652062616c616e636560b81b606082015260800190565b60208082526045908201527f546f6b656e577261707065723a204e617469766520756e7772617070696e672060408201527f6973206e6f7420616c6c6f77656420666f72207468697320746f6b656e20777260608201526430b83832b960d91b608082015260a00190565b600060208284031215613e0a57600080fd5b5051919050565b60208082526028908201527f546f6b656e577261707065723a20496e73756666696369656e742045524332306040820152672062616c616e636560c01b606082015260800190565b6020808252602e908201527f546f6b656e577261707065723a20496e76616c696420686973746f726963616c60408201526d20746f6b656e206164647265737360901b606082015260800190565b60208082526039908201527f546f6b656e577261707065723a20496e76616c696420616d6f756e742070726f60408201527f766964656420666f72206e6174697665207772617070696e6700000000000000606082015260800190565b60208082526043908201527f546f6b656e577261707065723a204e6174697665207772617070696e6720697360408201527f206e6f7420616c6c6f77656420666f72207468697320746f6b656e20777261706060820152623832b960e91b608082015260a00190565b6020808252602d908201527f546f6b656e577261707065723a20496e76616c69642076616c75652073656e7460408201526c20666f72207772617070696e6760981b606082015260800190565b60208082526023908201527f546f6b656e577261707065723a20496e76616c696420746f6b656e206164647260408201526265737360e81b606082015260800190565b60208082526032908201527f546f6b656e577261707065723a2046656520526563697069656e742063616e6e6040820152716f74206265207a65726f206164647265737360701b606082015260800190565b60208082526022908201527f546f6b656e577261707065723a20496e76616c696420746f6b656e20616d6f756040820152611b9d60f21b606082015260800190565b8082028115828204841417610b1a57610b1a613c4c565b6000826140c557634e487b7160e01b600052601260045260246000fd5b500490565b61ffff8281168282160390808211156135f0576135f0613c4c565b60208082526030908201527f46756e6769626c65546f6b656e577261707065723a2048616e646c657220416460408201526f064726573732063616e277420626520360841b606082015260800190565b81810381811115610b1a57610b1a613c4c565b634e487b7160e01b600052603160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516141968160178501602088016137b1565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516141c78160288401602088016137b1565b01602801949350505050565b6000602082840312156141e557600080fd5b8151611ac6816139ce565b634e487b7160e01b600052604160045260246000fd5b60008161421557614215613c4c565b506000190190565b6000825161422f8184602087016137b1565b919091019291505056fe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220cfa93c065d8df089ff1b30d808b84f1f2660335b4f1f8f02ed96a4dd1c86113064736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }