{
  "_format": "hh-sol-artifact-1",
  "contractName": "WrappedWIT",
  "sourceName": "contracts/WrappedWIT.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IWitOracleRadonRequestFactory",
          "name": "_witOracleRadonRequestFactory",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_witCustodianBech32",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ECDSAInvalidSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "ECDSAInvalidSignatureLength",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "ECDSAInvalidSignatureS",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidSpender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "ERC2612ExpiredSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC2612InvalidSigner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "currentNonce",
          "type": "uint256"
        }
      ],
      "name": "InvalidAccountNonce",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidShortString",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "str",
          "type": "string"
        }
      ],
      "name": "StringTooLong",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "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": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "CrosschainBurn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "CrosschainMint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmPrevCurator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmNewCurator",
          "type": "address"
        }
      ],
      "name": "CuratorshipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EIP712DomainChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "witCustodianUnwrapper",
          "type": "string"
        }
      ],
      "name": "NewCustodianUnwrapper",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "Witnet.Timestamp",
          "name": "timestamp",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "Witnet.TransactionHash",
          "name": "witDrtHash",
          "type": "bytes32"
        }
      ],
      "name": "ReserveUpdate",
      "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": "evmSender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "witRecipient",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "Unwrapped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "witSender",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmRecipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "Witnet.TransactionHash",
          "name": "witVttHash",
          "type": "bytes32"
        }
      ],
      "name": "Wrapped",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "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": "value",
          "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": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "crosschainBurn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "crosschainMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "eip712Domain",
      "outputs": [
        {
          "internalType": "bytes1",
          "name": "fields",
          "type": "bytes1"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "version",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "verifyingContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "extensions",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "evmCurator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.TransactionHash",
          "name": "_witnetValueTransferTransactionHash",
          "type": "bytes32"
        }
      ],
      "name": "getWrapTransactionLastQueryId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.TransactionHash",
          "name": "_witnetValueTransferTransactionHash",
          "type": "bytes32"
        }
      ],
      "name": "getWrapTransactionStatus",
      "outputs": [
        {
          "internalType": "enum IWrappedWIT.WrappingStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.TransactionHash[]",
          "name": "_hashes",
          "type": "bytes32[]"
        }
      ],
      "name": "getWrapTransactionStatuses",
      "outputs": [
        {
          "internalType": "enum IWrappedWIT.WrappingStatus[]",
          "name": "_statuses",
          "type": "uint8[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_evmCurator",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_witCustodianUnwrapperBech32",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "report",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "proof",
          "type": "bytes"
        }
      ],
      "name": "pushDataReport",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "queryResult",
          "type": "bytes"
        }
      ],
      "name": "reportWitOracleQueryResult",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        }
      ],
      "name": "reportableFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_witCustodianUnwrapperBech32",
          "type": "string"
        }
      ],
      "name": "settleWitCustodianUnwrapper",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "_witRpcProviders",
          "type": "string[]"
        }
      ],
      "name": "settleWitOracleCrossChainRpcProviders",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "minWitnesses",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "baseFeeOverhead100",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "unitaryRewardNanowits",
              "type": "uint64"
            },
            {
              "internalType": "uint24",
              "name": "responseCallbackGasLimit",
              "type": "uint24"
            }
          ],
          "internalType": "struct IWrappedWIT.WitOracleSettings",
          "name": "_settings",
          "type": "tuple"
        }
      ],
      "name": "settleWitOracleSettings",
      "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": [],
      "name": "totalReserveSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalUnwraps",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalWraps",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newCurator",
          "type": "address"
        }
      ],
      "name": "transferCuratorship",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "value",
          "type": "uint64"
        },
        {
          "internalType": "string",
          "name": "witRecipientBech32",
          "type": "string"
        }
      ],
      "name": "unwrap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "evmUnwrapId",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witCustodianUnwrapper",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witCustodianWrapper",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracle",
      "outputs": [
        {
          "internalType": "contract WitOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleCrossChainProofOfInclusionTemplate",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRequestModal",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleCrossChainProofOfReserveTemplate",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRequestModal",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleCrossChainRpcProviders",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "witOracleEstimateWrappingFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleProofOfReserveLastUpdate",
      "outputs": [
        {
          "internalType": "Witnet.Timestamp",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleProofOfReserveRadonBytecode",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleProofOfReserveRadonHash",
      "outputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleQuerySettings",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "minWitnesses",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "baseFeeOverhead100",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "unitaryRewardNanowits",
              "type": "uint64"
            },
            {
              "internalType": "uint24",
              "name": "responseCallbackGasLimit",
              "type": "uint24"
            }
          ],
          "internalType": "struct IWrappedWIT.WitOracleSettings",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.TransactionHash",
          "name": "_witnetValueTransferTransactionHash",
          "type": "bytes32"
        }
      ],
      "name": "wrap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_witOracleQueryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x61020060405234801561001157600080fd5b5060405161697f38038061697f83398101604081905261003091611130565b6040518060400160405280600b81526020016a15dc985c1c19590bd5d25560aa1b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600b81526020016a15dc985c1c19590815d25560aa1b8152506040518060400160405280600381526020016215d25560ea1b81525081600390816100be919061127b565b5060046100cb828261127b565b506100db91508390506005610593565b610120526100ea816006610593565b61014052815160208084019190912060e052815190820120610100524660a05261017760e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0525061018e81466001146105c6565b6001600160601b0319166101c052805160208201206101e052604080516001808252818301909252600091816020015b6101c66110b7565b8152602001906001900390816101be57905050905060405180604001604052806040518060400160405280600c81526020016b436f6e74656e742d5479706560a01b81525081526020016040518060400160405280601e81526020017f6170706c69636174696f6e2f6a736f6e3b636861727365743d5554462d3800008152508152508160008151811061025c5761025c611339565b6020026020010181905250826001600160a01b031663c96e201f6040518060800160405280600360048111156102945761029461134f565b81526020016040518060800160405280604a8152602001616935604a913981526020018481526020016040518060400160405280600f81526020016e83187782186666726573756c74186960881b81525081525060405180604001604052806002600b8111156103065761030661134f565b8152602001600060405190808252806020026020018201604052801561035357816020015b60408051808201909152600081526060602082015281526020019060019003908161032b5790505b508152506040518363ffffffff1660e01b815260040161037492919061143a565b6020604051808303816000875af1158015610393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b79190611535565b6001600160a01b039081166101805260408051608081019091529084169063c96e201f9080600381526020016040518060a00160405280606b81526020016167ca606b913981526020018481526020016040518060400160405280600f81526020016e83187782186666726573756c74186960881b81525081525060405180604001604052806002600b8111156104505761045061134f565b8152602001600060405190808252806020026020018201604052801561049d57816020015b6040805180820190915260008152606060208201528152602001906001900390816104755790505b508152506040518363ffffffff1660e01b81526004016104be92919061143a565b6020604051808303816000875af11580156104dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105019190611535565b6001600160a01b03166101a0816001600160a01b031681525050826001600160a01b0316631014d3756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d9190611535565b6001600160a01b031661016052506115fc915050565b60006020835110156105af576105a883610684565b90506105c0565b816105ba848261127b565b5060ff90505b92915050565b6000816105d457602b6105d7565b602a5b60ff1683511461062e5760405162461bcd60e51b815260206004820152601660248201527f4265636833323a20696e76616c6964206c656e6774680000000000000000000060448201526064015b60405180910390fd5b61067a838361065957604051806040016040528060048152602001631d1dda5d60e21b8152506106c2565b604051806040016040528060038152602001621dda5d60ea1b8152506106c2565b60601b9392505050565b600080829050601f815111156106af578260405163305a27a960e01b81526004016106259190611559565b80516106ba8261156c565b179392505050565b60008060006106f2856040516020016106db9190611590565b60408051601f198184030181529190526001610745565b915091506107208460405160200161070a9190611590565b60408051601f1981840301815291905283610ae4565b6000610730826005600884610b45565b905061073b81610b5c565b9695505050505050565b6060806000605a8551111561079c5760405162461bcd60e51b815260206004820152601d60248201527f4265636833323a20696e76616c696420737472696e67206c656e6774680000006044820152606401610625565b60005b85518110156108a05760008682815181106107bc576107bc611339565b016020015160f81c9050602181108015906107db5750607e8160ff1611155b61081c5760405162461bcd60e51b81526020600482015260126024820152712132b1b419991d103bb937b7339031b430b960711b6044820152606401610625565b60301960ff8216016108975782158015610837575060018210155b8015610847575086518260070111155b6108935760405162461bcd60e51b815260206004820152601660248201527f4265636833323a2077726f6e6720706f73206f662031000000000000000000006044820152606401610625565b8192505b5060010161079f565b50806001600160401b038111156108b9576108b96110f6565b6040519080825280601f01601f1916602001820160405280156108e3576020820181803683370190505b50925060005b8181101561093f5785818151811061090357610903611339565b602001015160f81c60f81b84828151811061092057610920611339565b60200101906001600160f81b031916908160001a9053506001016108e9565b50600181865103036001600160401b0381111561095e5761095e6110f6565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50915060005b8251811015610a7a5760006040518061012001604052806101008152602001616835610100913987848401600101815181106109cb576109cb611339565b0160200151815160f89190911c9081106109e7576109e7611339565b01602001516001600160f81b03199081169150819003610a495760405162461bcd60e51b815260206004820152601c60248201527f4265636833323a2062797465206e6f7420696e20616c706861626574000000006044820152606401610625565b8060f81c848381518110610a5f57610a5f611339565b60ff909216602092830291909101909101525060010161098d565b50610a86838386610bb7565b610ad25760405162461bcd60e51b815260206004820152601660248201527f4265636833323a2077726f6e6720636865636b73756d000000000000000000006044820152606401610625565b50805160051901815290939092509050565b8080519060200120828051906020012014610b415760405162461bcd60e51b815260206004820152601460248201527f4265636833323a20687270206d69736d617463680000000000000000000000006044820152606401610625565b5050565b6060610b5385858585610ce5565b95945050505050565b60008151601414610baf5760405162461bcd60e51b815260206004820152601b60248201527f4265636833323a20696e76616c69642064617461206c656e67746800000000006044820152606401610625565b506014015190565b600080610bc385610ebc565b9050600084518251016001600160401b03811115610be357610be36110f6565b604051908082528060200260200182016040528015610c0c578160200160208202803683370190505b50905060005b8251811015610c6757828181518110610c2d57610c2d611339565b602002602001015160ff16828281518110610c4a57610c4a611339565b63ffffffff90921660209283029190910190910152600101610c12565b5060005b8551811015610cc357858181518110610c8657610c86611339565b602002602001015160ff16828451830181518110610ca657610ca6611339565b63ffffffff90921660209283029190910190910152600101610c6b565b5063ffffffff8416610cd482610fbd565b63ffffffff16149695505050505050565b606060008080610cf8600180881b6115ac565b905060005b8851811015610df5576000898281518110610d1a57610d1a611339565b6020908102919091010151905060ff8082168a1c1615610da25760405162461bcd60e51b815260206004820152603660248201527f4265636833323a2076616c7565206d757374206265206e6f6e2d6e656761746960448201527f766520616e642066697420696e2066726f6d62697473000000000000000000006064820152608401610625565b93881b60ff85161793928801925b878410610dec576040519388900393610dd690879087871c861660f81b906020016115cd565b6040516020818303038152906040529550610db0565b50600101610cfd565b508415610e3d578115610e38578381610e0e84896115ac565b85901b1660f81b604051602001610e269291906115cd565b60405160208183030381529060405293505b610eb1565b86821080610e57575080610e5183886115ac565b84901b16155b610eb15760405162461bcd60e51b815260206004820152602560248201527f4265636833323a20696e76616c69642070616464696e67206f722076616c75656044820152642073697a6560d81b6064820152608401610625565b505050949350505050565b606081518251016001016001600160401b03811115610edd57610edd6110f6565b604051908082528060200260200182016040528015610f06578160200160208202803683370190505b50905060005b8251811015610fb7576005838281518110610f2957610f29611339565b602001015160f81c60f81b60f81c60ff16901c828281518110610f4e57610f4e611339565b602002602001019060ff16908160ff1681525050828181518110610f7457610f74611339565b602001015160f81c60f81b60f81c601f16828451830160010181518110610f9d57610f9d611339565b60ff90921660209283029190910190910152600101610f0c565b50919050565b6040805160a081018252633b6a57b281526326508e6d6020820152631ea119fa91810191909152633d4233dd6060820152632a1462b36080820152600090600190825b84518163ffffffff1610156110ae57600060198463ffffffff16901c9050858263ffffffff168151811061103657611036611339565b60200260200101516005856301ffffff1663ffffffff16901b18935060005b60058163ffffffff1610156110a457600163ffffffff8381169083161c8116900361109c57838163ffffffff166005811061109257611092611339565b6020020151851894505b600101611055565b5050600101611000565b50909392505050565b60405180604001604052806002905b60608152602001906001900390816110c65790505090565b6001600160a01b03811681146110f357600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561112757818101518382015260200161110f565b50506000910152565b6000806040838503121561114357600080fd5b825161114e816110de565b60208401519092506001600160401b0381111561116a57600080fd5b8301601f8101851361117b57600080fd5b80516001600160401b03811115611194576111946110f6565b604051601f8201601f19908116603f011681016001600160401b03811182821017156111c2576111c26110f6565b6040528181528282016020018710156111da57600080fd5b6111eb82602083016020860161110c565b8093505050509250929050565b600181811c9082168061120c57607f821691505b602082108103610fb757634e487b7160e01b600052602260045260246000fd5b601f82111561127657806000526020600020601f840160051c810160208510156112535750805b601f840160051c820191505b81811015611273576000815560010161125f565b50505b505050565b81516001600160401b03811115611294576112946110f6565b6112a8816112a284546111f8565b8461122c565b6020601f8211600181146112dc57600083156112c45750848201515b600019600385901b1c1916600184901b178455611273565b600084815260208120601f198516915b8281101561130c57878501518255602094850194600190920191016112ec565b508482101561132a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845261137d81602086016020860161110c565b601f01601f19169290920160200192915050565b6000604083018251600c81106113a9576113a961134f565b84526020838101516040828701528051928390526060600584901b8701810193919092019186019060005b8181101561142e57878503605f1901835283518051600a81106113f9576113f961134f565b8087525060208101519050604060208701526114186040870182611365565b95505060209384019392909201916001016113d4565b50929695505050505050565b6040815260008351600581106114525761145261134f565b604083015260208401516080606084015261147060c0840182611365565b6040860151848203603f19016080860152805180835291925060209081019181840191600582901b85010160005b828110156114ff57858203601f190184528451826040810160005b60028110156114e75785820383526114d2828551611365565b602094850194939093019291506001016114b9565b5060209788019796909601959350505060010161149e565b506060890151878203603f190160a0890152945061151d8186611365565b9450505050508281036020840152610b538185611391565b60006020828403121561154757600080fd5b8151611552816110de565b9392505050565b6020815260006115526020830184611365565b80516020808301519190811015610fb75760001960209190910360031b1b16919050565b600082516115a281846020870161110c565b9190910192915050565b818103818111156105c057634e487b7160e01b600052601160045260246000fd5b600083516115df81846020880161110c565b6001600160f81b0319939093169190920190815260010192915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516150f06116da60003960008181611b23015261247d0152600081816112ef01526117fd01526000818161087f0152610b350152600081816103cc01526127de0152600081816103220152818161048901528181610b0d01528181610cf70152818161157c015281816116f0015281816119e10152611bdb015260006123a301526000612376015260006122a40152600061227c015260006121d7015260006122010152600061222b01526150f06000f3fe6080604052600436106102675760003560e01c806377cc7a3a11610144578063acb734bb116100b6578063dd62ed3e1161007a578063dd62ed3e146107c7578063ddb2bf5c1461080d578063ea9e96a61461082d578063f399e22e1461084d578063f69a00b61461086d578063fec53a14146108a157600080fd5b8063acb734bb1461073d578063b3f120a114610752578063c65a20f014610767578063d505accf14610787578063d6f29e81146107a757600080fd5b806391f4f96c1161010857806391f4f96c1461067957806395d89b411461068e578063a41942a4146106a3578063a53cb851146106c3578063a9059cbb146106f0578063aa22dc331461071057600080fd5b806377cc7a3a1461058e5780637ecebe00146105ae57806384b0196e146105ce578063873234cf146105f65780638a510f271461065957600080fd5b806330315dc4116101dd5780635f029ebe116101a15780635f029ebe146104ce5780636aaa54cf146104e15780636d0d6a7e146104f65780636df0627e1461051657806370a082311461053657806371d41eb31461056c57600080fd5b806330315dc41461040e578063313ce5671461043b5780633644e5151461045757806347a10e561461046c578063520a5495146104b957600080fd5b8063147040de1161022f578063147040de1461034457806318160ddd1461035957806318bf50771461037857806323b872dd1461039a57806327ae6883146103ba5780632b8c49e3146103ee57600080fd5b806301367f731461026c57806301ffc9a71461029e57806306fdde03146102ce578063095ea7b3146102f05780631014d37514610310575b600080fd5b34801561027857600080fd5b506102816108b6565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102aa57600080fd5b506102be6102b9366004613d2a565b6108cf565b6040519015158152602001610295565b3480156102da57600080fd5b506102e3610906565b6040516102959190613da4565b3480156102fc57600080fd5b506102be61030b366004613dcc565b610998565b34801561031c57600080fd5b506102817f000000000000000000000000000000000000000000000000000000000000000081565b34801561035057600080fd5b506102e36109b0565b34801561036557600080fd5b506002545b604051908152602001610295565b34801561038457600080fd5b50610398610393366004613dcc565b6109dd565b005b3480156103a657600080fd5b506102be6103b5366004613df8565b610a35565b3480156103c657600080fd5b506102817f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fa57600080fd5b50610398610409366004613dcc565b610a59565b34801561041a57600080fd5b50610423610aa9565b6040516001600160401b039091168152602001610295565b34801561044757600080fd5b5060405160098152602001610295565b34801561046357600080fd5b5061036a610ac9565b34801561047857600080fd5b506102be610487366004613e39565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b3480156104c557600080fd5b5061036a610ad3565b61036a6104dc366004613e56565b610af6565b3480156104ed57600080fd5b5061036a610c12565b34801561050257600080fd5b50610398610511366004613eb7565b610c35565b34801561052257600080fd5b50610398610531366004613f28565b610f15565b34801561054257600080fd5b5061036a610551366004613e39565b6001600160a01b031660009081526020819052604090205490565b34801561057857600080fd5b50610581610ff5565b6040516102959190613f93565b34801561059a57600080fd5b5061036a6105a9366004613e56565b6110d7565b3480156105ba57600080fd5b5061036a6105c9366004613e39565b6110f5565b3480156105da57600080fd5b506105e3611113565b6040516102959796959493929190613fa6565b34801561060257600080fd5b5061060b611159565b6040516102959190600060808201905061ffff835116825261ffff60208401511660208301526001600160401b03604084015116604083015262ffffff606084015116606083015292915050565b34801561066557600080fd5b5061036a61067436600461405e565b6111d8565b34801561068557600080fd5b5061036a611436565b34801561069a57600080fd5b506102e3611452565b3480156106af57600080fd5b506103986106be366004613e39565b611461565b3480156106cf57600080fd5b506106e36106de366004613e56565b611522565b60405161029591906140a8565b3480156106fc57600080fd5b506102be61070b366004613dcc565b61161c565b34801561071c57600080fd5b5061073061072b3660046140b6565b61162a565b604051610295919061412b565b34801561074957600080fd5b506102e36116ec565b34801561075e57600080fd5b506102e36117ed565b34801561077357600080fd5b50610398610782366004614176565b611826565b34801561079357600080fd5b506103986107a23660046141c6565b6118a2565b3480156107b357600080fd5b506103986107c2366004614237565b6119dc565b3480156107d357600080fd5b5061036a6107e2366004614269565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081957600080fd5b5061036a610828366004613e56565b611bd4565b34801561083957600080fd5b5061039861084836600461436e565b611c00565b34801561085957600080fd5b5061039861086836600461448b565b611c85565b34801561087957600080fd5b506102817f000000000000000000000000000000000000000000000000000000000000000081565b3480156108ad57600080fd5b5061036a611fc2565b60006108c0611fd5565b546001600160a01b0316919050565b60006001600160e01b03198216630cccc66560e21b148061090057506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060038054610915906144ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610941906144ab565b801561098e5780601f106109635761010080835404028352916020019161098e565b820191906000526020600020905b81548152906001019060200180831161097157829003601f168201915b5050505050905090565b6000336109a6818585611ff9565b5060019392505050565b60606109d8600146146109c1611fd5565b6002015460601b6001600160601b03191690612006565b905090565b6109e633612057565b6109f08282612086565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b600033610a438582856120bc565b610a4e858585612135565b506001949350505050565b610a6233612057565b610a6c8282612194565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610a29565b6000610ab3611fd5565b54600160c01b90046001600160401b0316919050565b60006109d86121ca565b6000610add611fd5565b60010154600160401b90046001600160401b0316919050565b604051633752120b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001660248201526044810182905260009073__$928ef700fe09700756683be525388ce8a3$__90633752120b90606401602060405180830381865af4158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc491906144df565b90506000198103610c0d5760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481b5a5b9d195960921b60448201526064015b60405180910390fd5b919050565b6000610c1c611fd5565b60010154600160801b90046001600160401b0316919050565b610c92610c40611fd5565b6003015461ffff16610c586080860160608701614508565b61ffff16101560405180604001604052806016815260200175696e73756666696369656e74207769746e657373657360501b8152506122f8565b610cdd610cad610ca0611fd5565b6005015460208601351490565b604051806040016040528060128152602001710d2dcecc2d8d2c840e4c2c8dedc40d0c2e6d60731b8152506122f8565b604051633686b53f60e11b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636d0d6a7e90610d3090879087908790600401614593565b6000604051808303816000875af1158015610d4f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d7791908101906147aa565b6040516367c4440f60e01b815290915073__$928ef700fe09700756683be525388ce8a3$__906367c4440f90610db1908490600401614861565b602060405180830381865af4925050508015610dea575060408051601f3d908101601f19168201909252610de79181019061494e565b60015b610e5e57610df661496b565b806308c379a003610e245750610e0a614986565b80610e155750610e26565b610e1e81612302565b50610f0f565b505b3d808015610e50576040519150601f19603f3d011682016040523d82523d6000602084013e610e55565b606091505b50610e1e612339565b60608083015160408085015181516001600160401b0380871682529093166020840152908201527f8a01b18bdca3d556adc5e6a85f562b83d2c1933f166e93421ff507cfccb09a07910160405180910390a180610eb9611fd5565b600101805467ffffffffffffffff19166001600160401b03929092169190911790556060820151610ee8611fd5565b80546001600160401b0392909216600160c01b026001600160c01b03909216919091179055505b50505050565b610f1d611fd5565b546001600160a01b0316336001600160a01b031614610f4e576040516282b42960e81b815260040160405180910390fd5b6003610f5d6020830183614508565b61ffff1610158015610f8357506032610f7c6040830160208401614508565b61ffff1611155b8015610fab5750630bebc200610f9f6060830160408401614a09565b6001600160401b031610155b8015610fce575062033450610fc66080830160608401614a37565b62ffffff1610155b610fda57610fda614a54565b80610fe3611fd5565b600301610ff08282614a6a565b505050565b6060610fff611fd5565b600401805480602002602001604051908101604052809291908181526020016000905b828210156110ce578382906000526020600020018054611041906144ab565b80601f016020809104026020016040519081016040528092919081815260200182805461106d906144ab565b80156110ba5780601f1061108f576101008083540402835291602001916110ba565b820191906000526020600020905b81548152906001019060200180831161109d57829003601f168201915b505050505081526020019060010190611022565b50505050905090565b60006110e1611fd5565b600092835260060160205250604090205490565b6001600160a01b038116600090815260076020526040812054610900565b60006060806000806000606061112761236f565b61112f61239c565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b604080516080810182526000808252602082018190529181018290526060810191909152611185611fd5565b604080516080810182526003929092015461ffff808216845262010000820416602084015264010000000081046001600160401b031691830191909152600160601b900462ffffff166060820152919050565b60006001600160401b0384166111ed33610551565b10156112305760405162461bcd60e51b81526020600482015260126024820152716e6f7420656e6f7567682062616c616e636560701b6044820152606401610c04565b600061123a611fd5565b600101546001600160401b039081169150851681101561129c5760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f7420756e777261702074686174206d7563680000000000000000006044820152606401610c04565b60006112e285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250504660011491506123c99050565b90506001600160601b03197f00000000000000000000000000000000000000000000000000000000000000008116908216036113545760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610c04565b61135e8683614b32565b611366611fd5565b600101805467ffffffffffffffff19166001600160401b039283161790556113919033908816612194565b611399611fd5565b60010180546008906113ba90600160401b90046001600160401b0316614b51565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031692507f0ac1547df8510f30b54430e0e4e1e93ce326490aec9cebf0f78b8faa55dc1ded6114103390565b86868987604051611425959493929190614b7c565b60405180910390a150509392505050565b6000611440611fd5565b600101546001600160401b0316919050565b606060048054610915906144ab565b611469611fd5565b546001600160a01b0316336001600160a01b03161461149a576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166114b0576114b0614a54565b806001600160a01b03166114c2611fd5565b546040516001600160a01b03909116907fc63757acc12b39558fe5b88c5393e4b0353ffddaae3a2d07e121a8fc62d39c3790600090a380611501611fd5565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60008061152d611fd5565b6000848152600691909101602052604081205491508190036115525750600092915050565b60001981036115645750600392915050565b6001604051631bc1eaf360e21b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636f07abcc90602401602060405180830381865afa1580156115cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ef9190614bbe565b60068111156116005761160061407e565b1461160c57600261160f565b60015b9392505050565b50919050565b6000336109a6818585612135565b6060816001600160401b03811115611644576116446142a2565b60405190808252806020026020018201604052801561166d578160200160208202803683370190505b50905060005b828110156116e55761169c84848381811061169057611690614bdf565b90506020020135611522565b8282815181106116ae576116ae614bdf565b602002602001019060038111156116c7576116c761407e565b908160038111156116da576116da61407e565b905250600101611673565b5092915050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561174c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117709190614bf5565b6001600160a01b0316638a227764611786611fd5565b600501546040518263ffffffff1660e01b81526004016117a891815260200190565b600060405180830381865afa1580156117c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109d89190810190614c12565b60606109d86001600160601b03197f00000000000000000000000000000000000000000000000000000000000000001646600114612006565b61182e611fd5565b546001600160a01b0316336001600160a01b03161461185f576040516282b42960e81b815260040160405180910390fd5b61189e82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247b92505050565b5050565b834211156118c65760405163313c898160e11b815260048101859052602401610c04565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886119138c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061196e82612635565b9050600061197e82878787612662565b9050896001600160a01b0316816001600160a01b0316146119c5576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610c04565b6119d08a8a8a611ff9565b50505050505050505050565b611a377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146040518060400160405280600e81526020016d696e76616c6964206f7261636c6560901b8152506122f8565b604051635d933eb760e01b815273__$928ef700fe09700756683be525388ce8a3$__90635d933eb790611a7290869086908690600401614c4e565b600060405180830381865af4925050508015611ab057506040513d6000823e601f3d908101601f19168201604052611aad9190810190614c68565b60015b611b1e57611abc61496b565b806308c379a003611ae45750611ad0614986565b80611adb5750611ae6565b610f0f81612302565b505b3d808015611b10576040519150601f19603f3d011682016040523d82523d6000602084013e611b15565b606091505b50610f0f612339565b611b7a7f00000000000000000000000000000000000000000000000000000000000000008580519060200120146040518060400160405280601181526020017034b73b30b634b21031bab9ba37b234b0b760791b8152506122f8565b611b8d82826001600160401b0316612086565b7fbae099c209765c02c309f0fac06aec3ac516a3cc60d09f1a3da4b52d673d28a383838388604051611bc29493929190614d02565b60405180910390a15050505050505050565b60006109007f000000000000000000000000000000000000000000000000000000000000000083612690565b611c08611fd5565b546001600160a01b0316336001600160a01b031614611c39576040516282b42960e81b815260040160405180910390fd5b6000815111611c4a57611c4a614a54565b80611c53611fd5565b6004019080519060200190611c69929190613c6d565b50611c8281611c7d600146146109c1611fd5565b612753565b50565b6000611c8f612869565b805490915060ff600160401b82041615906001600160401b0316600081158015611cb65750825b90506000826001600160401b03166001148015611cd25750303b155b905081158015611ce0575080155b15611cfe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d2857845460ff60401b1916600160401b1785555b87611d31611fd5565b80546001600160a01b0319166001600160a01b03928316179055604051908916906000907fc63757acc12b39558fe5b88c5393e4b0353ffddaae3a2d07e121a8fc62d39c37908290a3604051806080016040528060014614611d94576003611d97565b600c5b61ffff168152602001611dac600a6032614d59565b61ffff168152630bebc200602082015262033450604090910152611dce611fd5565b8151600391909101805460208085015160408087015160609097015162ffffff16600160601b0262ffffff60601b196001600160401b0390981664010000000002979097166effffffffffffffffffffff000000001961ffff938416620100000263ffffffff19909616939097169290921793909317949094169390931793909317905581516001808252818401909352600092909182015b6060815260200190600190039081611e6757905050905060014614611ec1576040518060400160405280601d81526020017f68747470733a2f2f7270632d746573746e65742e7769746e65742e696f000000815250611ef8565b6040518060400160405280601881526020017f68747470733a2f2f7270632d30312e7769746e65742e696f00000000000000008152505b81600081518110611f0b57611f0b614bdf565b602002602001018190525080611f1f611fd5565b6004019080519060200190611f35929190613c6d565b50611f7588888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247b92505050565b508315611fb857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611bc2565b5050505050505050565b6000611fcc611fd5565b60050154905090565b7f6116473658e87b023e7f215d122c0048f3d7a669d8df94a5565f0c95871c58f990565b610ff08383836001612892565b606061160f8360601c8361203657604051806040016040528060048152602001631d1dda5d60e21b815250612967565b604051806040016040528060038152602001621dda5d60ea1b815250612967565b6001600160a01b0381166028602160991b0114611c82576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166120b05760405163ec442f0560e01b815260006004820152602401610c04565b61189e6000838361299b565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811015610f0f578181101561212657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610c04565b610f0f84848484036000612892565b6001600160a01b03831661215f57604051634b637e8f60e11b815260006004820152602401610c04565b6001600160a01b0382166121895760405163ec442f0560e01b815260006004820152602401610c04565b610ff083838361299b565b6001600160a01b0382166121be57604051634b637e8f60e11b815260006004820152602401610c04565b61189e8260008361299b565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561222357507f000000000000000000000000000000000000000000000000000000000000000046145b1561224d57507f000000000000000000000000000000000000000000000000000000000000000090565b6109d8604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b90565b8161189e5761189e815b806040516020016123139190614d7d565b60408051601f198184030181529082905262461bcd60e51b8252610c0491600401613da4565b61236d604051806040016040528060138152602001723ab73430b7323632b21032bc31b2b83a34b7b760691b815250612302565b565b60606109d87f00000000000000000000000000000000000000000000000000000000000000006005612ac5565b60606109d87f00000000000000000000000000000000000000000000000000000000000000006006612ac5565b6000816123d757602b6123da565b602a5b60ff168351146124255760405162461bcd60e51b8152602060048201526016602482015275084cac6d066647440d2dcecc2d8d2c840d8cadccee8d60531b6044820152606401610c04565b612471838361245057604051806040016040528060048152602001631d1dda5d60e21b815250612b70565b604051806040016040528060038152602001621dda5d60ea1b815250612b70565b60601b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000008180519060200120036124ea5760405162461bcd60e51b81526020600482015260166024820152753ab730b1b1b2b83a30b13632903ab73bb930b83832b960511b6044820152606401610c04565b7faf2313438cf7747b4740d0822c1e7683638361ace0daa8f1c4d5a15d57f4ef04816040516125199190613da4565b60405180910390a161252e81600146146123c9565b612536611fd5565b60020180546001600160a01b03191660609290921c919091179055611c8261255c611fd5565b600401805480602002602001604051908101604052809291908181526020016000905b8282101561262b57838290600052602060002001805461259e906144ab565b80601f01602080910402602001604051908101604052809291908181526020018280546125ca906144ab565b80156126175780601f106125ec57610100808354040283529160200191612617565b820191906000526020600020905b8154815290600101906020018083116125fa57829003601f168201915b50505050508152602001906001019061257f565b5050505082612753565b60006109006126426121ca565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061267488888888612bf2565b9250925092506126848282612cc1565b50909695505050505050565b6040516305e742ef60e01b81526004810182905262035b6060248201526000906064906001600160a01b038516906305e742ef90604401602060405180830381865afa1580156126e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270891906144df565b7f6116473658e87b023e7f215d122c0048f3d7a669d8df94a5565f0c95871c58fc5461273f9062010000900461ffff166064614db1565b6127499190614dc4565b61160f9190614ddb565b60408051600280825260608201909252600091816020015b606081526020019060019003908161276b57905050905061278a6117ed565b8160008151811061279d5761279d614bdf565b602002602001018190525081816001815181106127bc576127bc614bdf565b6020908102919091010152604051633c389c6f60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f0e271bc906128159084908790600401614def565b6020604051808303816000875af1158015612834573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285891906144df565b612860611fd5565b60050155505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610900565b6001600160a01b0384166128bc5760405163e602df0560e01b815260006004820152602401610c04565b6001600160a01b0383166128e657604051634a1406b160e11b815260006004820152602401610c04565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610f0f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161295991815260200190565b60405180910390a350505050565b604051606083811b6001600160601b03191660208301529061160f9060340160405160208183030381529060405283612d7a565b6001600160a01b0383166129c65780600260008282546129bb9190614db1565b90915550612a389050565b6001600160a01b03831660009081526020819052604090205481811015612a195760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610c04565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216612a5457600280548290039055612a73565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ab891815260200190565b60405180910390a3505050565b606060ff8314612adf57612ad883612dc8565b9050610900565b818054612aeb906144ab565b80601f0160208091040260200160405190810160405280929190818152602001828054612b17906144ab565b8015612b645780601f10612b3957610100808354040283529160200191612b64565b820191906000526020600020905b815481529060010190602001808311612b4757829003601f168201915b50505050509050610900565b6000806000612b9f85604051602001612b899190614e14565b6040516020818303038152906040526001612e07565b91509150612bcc84604051602001612bb79190614e14565b60405160208183030381529060405283613198565b6000612bdd826005600860006131ec565b9050612be8816131fa565b9695505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612c2d5750600091506003905082612cb7565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612c81573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612cad57506000925060019150829050612cb7565b9250600091508190505b9450945094915050565b6000826003811115612cd557612cd561407e565b03612cde575050565b6001826003811115612cf257612cf261407e565b03612d105760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612d2457612d2461407e565b03612d455760405163fce698f760e01b815260048101829052602401610c04565b6003826003811115612d5957612d5961407e565b0361189e576040516335e2f38360e21b815260048101829052602401610c04565b6060600082604051602001612d8f9190614e14565b60405160208183030381529060405290506000612db185600860056001613255565b9050612dbf8282600161331d565b95945050505050565b60606000612dd5836135ae565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6060806000605a85511115612e5e5760405162461bcd60e51b815260206004820152601d60248201527f4265636833323a20696e76616c696420737472696e67206c656e6774680000006044820152606401610c04565b60005b8551811015612f5b576000868281518110612e7e57612e7e614bdf565b016020015160f81c905060218110801590612e9d5750607e8160ff1611155b612ede5760405162461bcd60e51b81526020600482015260126024820152712132b1b419991d103bb937b7339031b430b960711b6044820152606401610c04565b60301960ff821601612f525782158015612ef9575060018210155b8015612f09575086518260070111155b612f4e5760405162461bcd60e51b81526020600482015260166024820152754265636833323a2077726f6e6720706f73206f66203160501b6044820152606401610c04565b8192505b50600101612e61565b50806001600160401b03811115612f7457612f746142a2565b6040519080825280601f01601f191660200182016040528015612f9e576020820181803683370190505b50925060005b81811015612ffa57858181518110612fbe57612fbe614bdf565b602001015160f81c60f81b848281518110612fdb57612fdb614bdf565b60200101906001600160f81b031916908160001a905350600101612fa4565b50600181865103036001600160401b03811115613019576130196142a2565b604051908082528060200260200182016040528015613042578160200160208202803683370190505b50915060005b82518110156131355760006040518061012001604052806101008152602001614f9b6101009139878484016001018151811061308657613086614bdf565b0160200151815160f89190911c9081106130a2576130a2614bdf565b01602001516001600160f81b031990811691508190036131045760405162461bcd60e51b815260206004820152601c60248201527f4265636833323a2062797465206e6f7420696e20616c706861626574000000006044820152606401610c04565b8060f81c84838151811061311a5761311a614bdf565b60ff9092166020928302919091019091015250600101613048565b506131418383866135d6565b6131865760405162461bcd60e51b81526020600482015260166024820152754265636833323a2077726f6e6720636865636b73756d60501b6044820152606401610c04565b50805160051901815290939092509050565b808051906020012082805190602001201461189e5760405162461bcd60e51b8152602060048201526014602482015273084cac6d066647440d0e4e040dad2e6dac2e8c6d60631b6044820152606401610c04565b6060612dbf85858585613704565b6000815160141461324d5760405162461bcd60e51b815260206004820152601b60248201527f4265636833323a20696e76616c69642064617461206c656e67746800000000006044820152606401610c04565b506014015190565b6060600085516001600160401b03811115613272576132726142a2565b60405190808252806020026020018201604052801561329b578160200160208202803683370190505b50905060005b81518163ffffffff16101561331057868163ffffffff16815181106132c8576132c8614bdf565b602001015160f81c60f81b60f81c828263ffffffff16815181106132ee576132ee614bdf565b60ff9092166020928302919091019091015261330981614e30565b90506132a1565b50612be881868686613704565b6060600061332c8585856138d4565b9050600081518551875101016001016001600160401b03811115613352576133526142a2565b6040519080825280601f01601f19166020018201604052801561337c576020820181803683370190505b50905060005b86518110156133d95786818151811061339d5761339d614bdf565b602001015160f81c60f81b8282815181106133ba576133ba614bdf565b60200101906001600160f81b031916908160001a905350600101613382565b50603160f81b818751815181106133f2576133f2614bdf565b60200101906001600160f81b031916908160001a905350855160010160005b86518110156134d957600087828151811061342e5761342e614bdf565b016020908101516040805180820190915282815260008051602061509b8339815191529083015260f81c91508110156134d05760405180604001604052806020815260200160008051602061509b8339815191528152508160ff168151811061349957613499614bdf565b602001015160f81c60f81b84848401815181106134b8576134b8614bdf565b60200101906001600160f81b031916908160001a9053505b50600101613411565b5085510160005b83518110156126845760008482815181106134fd576134fd614bdf565b6020026020010151905060405180604001604052806020815260200160008051602061509b833981519152815250518160ff1610156135a55760405180604001604052806020815260200160008051602061509b8339815191528152508160ff168151811061356e5761356e614bdf565b602001015160f81c60f81b848484018151811061358d5761358d614bdf565b60200101906001600160f81b031916908160001a9053505b506001016134e0565b600060ff8216601f81111561090057604051632cd44ac360e21b815260040160405180910390fd5b6000806135e285613a78565b9050600084518251016001600160401b03811115613602576136026142a2565b60405190808252806020026020018201604052801561362b578160200160208202803683370190505b50905060005b82518110156136865782818151811061364c5761364c614bdf565b602002602001015160ff1682828151811061366957613669614bdf565b63ffffffff90921660209283029190910190910152600101613631565b5060005b85518110156136e2578581815181106136a5576136a5614bdf565b602002602001015160ff168284518301815181106136c5576136c5614bdf565b63ffffffff9092166020928302919091019091015260010161368a565b508363ffffffff166136f382613b73565b63ffffffff16149695505050505050565b606060008080613717600180881b614e4c565b905060005b885181101561380d57600089828151811061373957613739614bdf565b6020908102919091010151905060ff8082168a1c16156137ba5760405162461bcd60e51b815260206004820152603660248201527f4265636833323a2076616c7565206d757374206265206e6f6e2d6e6567617469604482015275766520616e642066697420696e2066726f6d6269747360501b6064820152608401610c04565b93881b60ff85161793928801925b8784106138045760405193889003936137ee90879087871c861660f81b90602001614e5f565b60405160208183030381529060405295506137c8565b5060010161371c565b5084156138555781156138505783816138268489614e4c565b85901b1660f81b60405160200161383e929190614e5f565b60405160208183030381529060405293505b6138c9565b8682108061386f5750806138698388614e4c565b84901b16155b6138c95760405162461bcd60e51b815260206004820152602560248201527f4265636833323a20696e76616c69642070616464696e67206f722076616c75656044820152642073697a6560d81b6064820152608401610c04565b505050949350505050565b606060006138e185613a78565b9050600084518251016006016001600160401b03811115613904576139046142a2565b60405190808252806020026020018201604052801561392d578160200160208202803683370190505b50905060005b85518351018110156139f15782518110156139965782818151811061395a5761395a614bdf565b602002602001015160ff1682828151811061397757613977614bdf565b602002602001019063ffffffff16908163ffffffff16815250506139e9565b8583518203815181106139ab576139ab614bdf565b602001015160f81c60f81b60f81c60ff168282815181106139ce576139ce614bdf565b602002602001019063ffffffff16908163ffffffff16815250505b600101613933565b5060408051600680825260e08201909252906020820160c080368337019050509250600084613a1f83613b73565b18905060005b6006811015613a6d57806005036005028263ffffffff16901c601f16858281518110613a5357613a53614bdf565b60ff90921660209283029190910190910152600101613a25565b505050509392505050565b606081518251016001016001600160401b03811115613a9957613a996142a2565b604051908082528060200260200182016040528015613ac2578160200160208202803683370190505b50905060005b8251811015611616576005838281518110613ae557613ae5614bdf565b602001015160f81c60f81b60f81c60ff16901c828281518110613b0a57613b0a614bdf565b602002602001019060ff16908160ff1681525050828181518110613b3057613b30614bdf565b602001015160f81c60f81b60f81c601f16828451830160010181518110613b5957613b59614bdf565b60ff90921660209283029190910190910152600101613ac8565b6040805160a081018252633b6a57b281526326508e6d6020820152631ea119fa91810191909152633d4233dd6060820152632a1462b36080820152600090600190825b84518163ffffffff161015613c6457600060198463ffffffff16901c9050858263ffffffff1681518110613bec57613bec614bdf565b60200260200101516005856301ffffff1663ffffffff16901b18935060005b60058163ffffffff161015613c5a57600163ffffffff8381169083161c81169003613c5257838163ffffffff1660058110613c4857613c48614bdf565b6020020151851894505b600101613c0b565b5050600101613bb6565b50909392505050565b828054828255906000526020600020908101928215613cb3579160200282015b82811115613cb35782518290613ca39082614edc565b5091602001919060010190613c8d565b50613cbf929150613cc3565b5090565b80821115613cbf576000613cd78282613ce0565b50600101613cc3565b508054613cec906144ab565b6000825580601f10613cfc575050565b601f016020900490600052602060002090810190611c8291905b80821115613cbf5760008155600101613d16565b600060208284031215613d3c57600080fd5b81356001600160e01b03198116811461160f57600080fd5b60005b83811015613d6f578181015183820152602001613d57565b50506000910152565b60008151808452613d90816020860160208601613d54565b601f01601f19169290920160200192915050565b60208152600061160f6020830184613d78565b6001600160a01b0381168114611c8257600080fd5b60008060408385031215613ddf57600080fd5b8235613dea81613db7565b946020939093013593505050565b600080600060608486031215613e0d57600080fd5b8335613e1881613db7565b92506020840135613e2881613db7565b929592945050506040919091013590565b600060208284031215613e4b57600080fd5b813561160f81613db7565b600060208284031215613e6857600080fd5b5035919050565b60008083601f840112613e8157600080fd5b5081356001600160401b03811115613e9857600080fd5b602083019150836020828501011115613eb057600080fd5b9250929050565b600080600060408486031215613ecc57600080fd5b83356001600160401b03811115613ee257600080fd5b840160e08187031215613ef457600080fd5b925060208401356001600160401b03811115613f0f57600080fd5b613f1b86828701613e6f565b9497909650939450505050565b60006080828403128015613f3b57600080fd5b509092915050565b600082825180855260208501945060208160051b8301016020850160005b8381101561268457601f19858403018852613f7d838351613d78565b6020988901989093509190910190600101613f61565b60208152600061160f6020830184613f43565b60ff60f81b8816815260e060208201526000613fc560e0830189613d78565b8281036040840152613fd78189613d78565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b8181101561402d57835183526020938401939092019160010161400f565b50909b9a5050505050505050505050565b6001600160401b0381168114611c8257600080fd5b8035610c0d8161403e565b60008060006040848603121561407357600080fd5b8335613ef48161403e565b634e487b7160e01b600052602160045260246000fd5b600481106140a4576140a461407e565b9052565b602081016109008284614094565b600080602083850312156140c957600080fd5b82356001600160401b038111156140df57600080fd5b8301601f810185136140f057600080fd5b80356001600160401b0381111561410657600080fd5b8560208260051b840101111561411b57600080fd5b6020919091019590945092505050565b602080825282518282018190526000918401906040840190835b8181101561416b57614158838551614094565b6020938401939290920191600101614145565b509095945050505050565b6000806020838503121561418957600080fd5b82356001600160401b0381111561419f57600080fd5b6141ab85828601613e6f565b90969095509350505050565b60ff81168114611c8257600080fd5b600080600080600080600060e0888a0312156141e157600080fd5b87356141ec81613db7565b965060208801356141fc81613db7565b95506040880135945060608801359350608088013561421a816141b7565b9699959850939692959460a0840135945060c09093013592915050565b60008060006040848603121561424c57600080fd5b8335925060208401356001600160401b03811115613f0f57600080fd5b6000806040838503121561427c57600080fd5b823561428781613db7565b9150602083013561429781613db7565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60c081018181106001600160401b03821117156142d7576142d76142a2565b60405250565b604081018181106001600160401b03821117156142d7576142d76142a2565b60a081018181106001600160401b03821117156142d7576142d76142a2565b601f8201601f191681016001600160401b0381118282101715614340576143406142a2565b6040525050565b60006001600160401b03821115614360576143606142a2565b50601f01601f191660200190565b60006020828403121561438057600080fd5b81356001600160401b0381111561439657600080fd5b8201601f810184136143a757600080fd5b80356001600160401b038111156143c0576143c06142a2565b8060051b6040516143d4602083018261431b565b9182526020818401810192908101878411156143ef57600080fd5b6020850192505b838310156144805782356001600160401b0381111561441457600080fd5b8501603f8101891361442557600080fd5b602081013561443381614347565b604051614440828261431b565b8281526040848401018c101561445557600080fd5b82604085016020830137600060208483010152808552505050506020810190506020830192506143f6565b509695505050505050565b6000806000604084860312156144a057600080fd5b8335613ef481613db7565b600181811c908216806144bf57607f821691505b60208210810361161657634e487b7160e01b600052602260045260246000fd5b6000602082840312156144f157600080fd5b5051919050565b61ffff81168114611c8257600080fd5b60006020828403121561451a57600080fd5b813561160f816144f8565b6000808335601e1984360301811261453c57600080fd5b83016020810192503590506001600160401b0381111561455b57600080fd5b803603821315613eb057600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040808252843582820152602085013560608301526000908501356145b7816144f8565b61ffff16608083015260608501356145ce816144f8565b61ffff1660a083015260808501356145e58161403e565b6001600160401b031660c08301526145ff60a08601614053565b6001600160401b031660e083015261461a60c0860186614525565b60e06101008501526146316101208501828461456a565b9150508281036020840152612be881858761456a565b805160148110610c0d57600080fd5b8051610c0d8161403e565b600082601f83011261467257600080fd5b815160208301600061468383614347565b604051614690828261431b565b8092508481528785850111156146a557600080fd5b6146b3856020830186613d54565b979650505050505050565b8051610c0d816141b7565b600060c082840312156146db57600080fd5b6040516146e7816142b8565b80915082516001600160401b0381111561470057600080fd5b83016040818603121561471257600080fd5b60405161471e816142dd565b81516001600160401b0381111561473457600080fd5b61474087828501614661565b82525060209182015182820152825261475a9084016146be565b602082015261476b604084016146be565b604082015261477c606084016146be565b606082015261478d60808401614656565b608082015261479e60a08401614656565b60a08201525092915050565b6000602082840312156147bc57600080fd5b81516001600160401b038111156147d257600080fd5b820160a081850312156147e457600080fd5b6040516147f0816142fc565b8151610100811061480057600080fd5b815261480e60208301614647565b60208201526040828101519082015261482960608301614656565b606082015260808201516001600160401b0381111561484757600080fd5b614853868285016146c9565b608083015250949350505050565b6020815260008251610100811061487a5761487a61407e565b806020840152506020830151601481106148965761489661407e565b80604084015250604083015160608301526001600160401b036060840151166080830152608083015160a080840152805160c080850152805160406101808601526148e56101c0860182613d78565b6020928301516101a08701529183015160ff1660e08601525060408201519061491461010086018360ff169052565b606083015160ff1661012086015260808301516001600160401b0380821661014088015260a0909401519384166101608701529150612dbf565b60006020828403121561496057600080fd5b815161160f8161403e565b600060033d11156122f55760046000803e5060005160e01c90565b600060443d10156149945790565b6040513d600319016004823e80513d60248201116001600160401b03821117156149bd57505090565b80820180516001600160401b038111156149d8575050505090565b3d84016003190182820160200111156149f2575050505090565b614a016020828501018561431b565b509392505050565b600060208284031215614a1b57600080fd5b813561160f8161403e565b62ffffff81168114611c8257600080fd5b600060208284031215614a4957600080fd5b813561160f81614a26565b634e487b7160e01b600052600160045260246000fd5b8135614a75816144f8565b61ffff8116905081548161ffff1982161783556020840135614a96816144f8565b63ffff00008160101b169050808363ffffffff198416171784556040850135614abe8161403e565b6bffffffffffffffff000000008160201b16846bffffffffffffffffffffffff1985161783171785555050505060006060830135614afb81614a26565b825462ffffff60601b191660609190911b62ffffff60601b16179091555050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03828116828216039081111561090057610900614b1c565b60006001600160401b0382166001600160401b038103614b7357614b73614b1c565b60010192915050565b6001600160a01b0386168152608060208201819052600090614ba1908301868861456a565b6001600160401b0394909416604083015250606001529392505050565b600060208284031215614bd057600080fd5b81516007811061160f57600080fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215614c0757600080fd5b815161160f81613db7565b600060208284031215614c2457600080fd5b81516001600160401b03811115614c3a57600080fd5b614c4684828501614661565b949350505050565b838152604060208201526000612dbf60408301848661456a565b600080600080600060a08688031215614c8057600080fd5b855160208701519095506001600160401b03811115614c9e57600080fd5b614caa88828901614661565b94505060408601516001600160401b03811115614cc657600080fd5b614cd288828901614661565b9350506060860151614ce381613db7565b6080870151909250614cf48161403e565b809150509295509295909350565b608081526000614d156080830187613d78565b6001600160a01b03959095166020830152506001600160401b03929092166040830152606090910152919050565b634e487b7160e01b600052601260045260246000fd5b600061ffff831680614d6d57614d6d614d43565b8061ffff84160491505092915050565b6b02bb930b83832b22ba4aa1d160a51b815260008251614da481600c850160208701613d54565b91909101600c0192915050565b8082018082111561090057610900614b1c565b808202811582820484141761090057610900614b1c565b600082614dea57614dea614d43565b500490565b604081526000614e026040830185613f43565b8281036020840152612dbf8185613f43565b60008251614e26818460208701613d54565b9190910192915050565b600063ffffffff821663ffffffff8103614b7357614b73614b1c565b8181038181111561090057610900614b1c565b60008351614e71818460208801613d54565b6001600160f81b0319939093169190920190815260010192915050565b601f821115610ff057806000526020600020601f840160051c81016020851015614eb55750805b601f840160051c820191505b81811015614ed55760008155600101614ec1565b5050505050565b81516001600160401b03811115614ef557614ef56142a2565b614f0981614f0384546144ab565b84614e8e565b6020601f821160018114614f3d5760008315614f255750848201515b600019600385901b1c1916600184901b178455614ed5565b600084815260208120601f198516915b82811015614f6d5787850151825560209485019460019092019101614f4d565b5084821015614f8b5786840151600019600387901b60f8161c191681555b50505050600190811b0190555056feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff71707a7279397838676632747664773073336a6e35346b686365366d7561376ca2646970667358221220367cced7546fb312124bdfd5dd418957aa88c6e8dabdf6a7bc72411f0c421df564736f6c634300081c00337b226a736f6e727063223a22322e30222c226d6574686f64223a2267657456616c75655472616e73666572222c22706172616d73223a7b2268617368223a225c315c222c226d6f6465223a22657468657265616c222c22666f726365223a747275657d2c226964223a317dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b226a736f6e727063223a22322e30222c226d6574686f64223a2267657442616c616e636532222c22706172616d73223a7b22706b68223a225c315c3b5c325c227d2c226964223a317d",
  "deployedBytecode": "0x6080604052600436106102675760003560e01c806377cc7a3a11610144578063acb734bb116100b6578063dd62ed3e1161007a578063dd62ed3e146107c7578063ddb2bf5c1461080d578063ea9e96a61461082d578063f399e22e1461084d578063f69a00b61461086d578063fec53a14146108a157600080fd5b8063acb734bb1461073d578063b3f120a114610752578063c65a20f014610767578063d505accf14610787578063d6f29e81146107a757600080fd5b806391f4f96c1161010857806391f4f96c1461067957806395d89b411461068e578063a41942a4146106a3578063a53cb851146106c3578063a9059cbb146106f0578063aa22dc331461071057600080fd5b806377cc7a3a1461058e5780637ecebe00146105ae57806384b0196e146105ce578063873234cf146105f65780638a510f271461065957600080fd5b806330315dc4116101dd5780635f029ebe116101a15780635f029ebe146104ce5780636aaa54cf146104e15780636d0d6a7e146104f65780636df0627e1461051657806370a082311461053657806371d41eb31461056c57600080fd5b806330315dc41461040e578063313ce5671461043b5780633644e5151461045757806347a10e561461046c578063520a5495146104b957600080fd5b8063147040de1161022f578063147040de1461034457806318160ddd1461035957806318bf50771461037857806323b872dd1461039a57806327ae6883146103ba5780632b8c49e3146103ee57600080fd5b806301367f731461026c57806301ffc9a71461029e57806306fdde03146102ce578063095ea7b3146102f05780631014d37514610310575b600080fd5b34801561027857600080fd5b506102816108b6565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102aa57600080fd5b506102be6102b9366004613d2a565b6108cf565b6040519015158152602001610295565b3480156102da57600080fd5b506102e3610906565b6040516102959190613da4565b3480156102fc57600080fd5b506102be61030b366004613dcc565b610998565b34801561031c57600080fd5b506102817f000000000000000000000000000000000000000000000000000000000000000081565b34801561035057600080fd5b506102e36109b0565b34801561036557600080fd5b506002545b604051908152602001610295565b34801561038457600080fd5b50610398610393366004613dcc565b6109dd565b005b3480156103a657600080fd5b506102be6103b5366004613df8565b610a35565b3480156103c657600080fd5b506102817f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fa57600080fd5b50610398610409366004613dcc565b610a59565b34801561041a57600080fd5b50610423610aa9565b6040516001600160401b039091168152602001610295565b34801561044757600080fd5b5060405160098152602001610295565b34801561046357600080fd5b5061036a610ac9565b34801561047857600080fd5b506102be610487366004613e39565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b3480156104c557600080fd5b5061036a610ad3565b61036a6104dc366004613e56565b610af6565b3480156104ed57600080fd5b5061036a610c12565b34801561050257600080fd5b50610398610511366004613eb7565b610c35565b34801561052257600080fd5b50610398610531366004613f28565b610f15565b34801561054257600080fd5b5061036a610551366004613e39565b6001600160a01b031660009081526020819052604090205490565b34801561057857600080fd5b50610581610ff5565b6040516102959190613f93565b34801561059a57600080fd5b5061036a6105a9366004613e56565b6110d7565b3480156105ba57600080fd5b5061036a6105c9366004613e39565b6110f5565b3480156105da57600080fd5b506105e3611113565b6040516102959796959493929190613fa6565b34801561060257600080fd5b5061060b611159565b6040516102959190600060808201905061ffff835116825261ffff60208401511660208301526001600160401b03604084015116604083015262ffffff606084015116606083015292915050565b34801561066557600080fd5b5061036a61067436600461405e565b6111d8565b34801561068557600080fd5b5061036a611436565b34801561069a57600080fd5b506102e3611452565b3480156106af57600080fd5b506103986106be366004613e39565b611461565b3480156106cf57600080fd5b506106e36106de366004613e56565b611522565b60405161029591906140a8565b3480156106fc57600080fd5b506102be61070b366004613dcc565b61161c565b34801561071c57600080fd5b5061073061072b3660046140b6565b61162a565b604051610295919061412b565b34801561074957600080fd5b506102e36116ec565b34801561075e57600080fd5b506102e36117ed565b34801561077357600080fd5b50610398610782366004614176565b611826565b34801561079357600080fd5b506103986107a23660046141c6565b6118a2565b3480156107b357600080fd5b506103986107c2366004614237565b6119dc565b3480156107d357600080fd5b5061036a6107e2366004614269565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081957600080fd5b5061036a610828366004613e56565b611bd4565b34801561083957600080fd5b5061039861084836600461436e565b611c00565b34801561085957600080fd5b5061039861086836600461448b565b611c85565b34801561087957600080fd5b506102817f000000000000000000000000000000000000000000000000000000000000000081565b3480156108ad57600080fd5b5061036a611fc2565b60006108c0611fd5565b546001600160a01b0316919050565b60006001600160e01b03198216630cccc66560e21b148061090057506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060038054610915906144ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610941906144ab565b801561098e5780601f106109635761010080835404028352916020019161098e565b820191906000526020600020905b81548152906001019060200180831161097157829003601f168201915b5050505050905090565b6000336109a6818585611ff9565b5060019392505050565b60606109d8600146146109c1611fd5565b6002015460601b6001600160601b03191690612006565b905090565b6109e633612057565b6109f08282612086565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b600033610a438582856120bc565b610a4e858585612135565b506001949350505050565b610a6233612057565b610a6c8282612194565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610a29565b6000610ab3611fd5565b54600160c01b90046001600160401b0316919050565b60006109d86121ca565b6000610add611fd5565b60010154600160401b90046001600160401b0316919050565b604051633752120b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001660248201526044810182905260009073__$928ef700fe09700756683be525388ce8a3$__90633752120b90606401602060405180830381865af4158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc491906144df565b90506000198103610c0d5760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481b5a5b9d195960921b60448201526064015b60405180910390fd5b919050565b6000610c1c611fd5565b60010154600160801b90046001600160401b0316919050565b610c92610c40611fd5565b6003015461ffff16610c586080860160608701614508565b61ffff16101560405180604001604052806016815260200175696e73756666696369656e74207769746e657373657360501b8152506122f8565b610cdd610cad610ca0611fd5565b6005015460208601351490565b604051806040016040528060128152602001710d2dcecc2d8d2c840e4c2c8dedc40d0c2e6d60731b8152506122f8565b604051633686b53f60e11b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636d0d6a7e90610d3090879087908790600401614593565b6000604051808303816000875af1158015610d4f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d7791908101906147aa565b6040516367c4440f60e01b815290915073__$928ef700fe09700756683be525388ce8a3$__906367c4440f90610db1908490600401614861565b602060405180830381865af4925050508015610dea575060408051601f3d908101601f19168201909252610de79181019061494e565b60015b610e5e57610df661496b565b806308c379a003610e245750610e0a614986565b80610e155750610e26565b610e1e81612302565b50610f0f565b505b3d808015610e50576040519150601f19603f3d011682016040523d82523d6000602084013e610e55565b606091505b50610e1e612339565b60608083015160408085015181516001600160401b0380871682529093166020840152908201527f8a01b18bdca3d556adc5e6a85f562b83d2c1933f166e93421ff507cfccb09a07910160405180910390a180610eb9611fd5565b600101805467ffffffffffffffff19166001600160401b03929092169190911790556060820151610ee8611fd5565b80546001600160401b0392909216600160c01b026001600160c01b03909216919091179055505b50505050565b610f1d611fd5565b546001600160a01b0316336001600160a01b031614610f4e576040516282b42960e81b815260040160405180910390fd5b6003610f5d6020830183614508565b61ffff1610158015610f8357506032610f7c6040830160208401614508565b61ffff1611155b8015610fab5750630bebc200610f9f6060830160408401614a09565b6001600160401b031610155b8015610fce575062033450610fc66080830160608401614a37565b62ffffff1610155b610fda57610fda614a54565b80610fe3611fd5565b600301610ff08282614a6a565b505050565b6060610fff611fd5565b600401805480602002602001604051908101604052809291908181526020016000905b828210156110ce578382906000526020600020018054611041906144ab565b80601f016020809104026020016040519081016040528092919081815260200182805461106d906144ab565b80156110ba5780601f1061108f576101008083540402835291602001916110ba565b820191906000526020600020905b81548152906001019060200180831161109d57829003601f168201915b505050505081526020019060010190611022565b50505050905090565b60006110e1611fd5565b600092835260060160205250604090205490565b6001600160a01b038116600090815260076020526040812054610900565b60006060806000806000606061112761236f565b61112f61239c565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b604080516080810182526000808252602082018190529181018290526060810191909152611185611fd5565b604080516080810182526003929092015461ffff808216845262010000820416602084015264010000000081046001600160401b031691830191909152600160601b900462ffffff166060820152919050565b60006001600160401b0384166111ed33610551565b10156112305760405162461bcd60e51b81526020600482015260126024820152716e6f7420656e6f7567682062616c616e636560701b6044820152606401610c04565b600061123a611fd5565b600101546001600160401b039081169150851681101561129c5760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f7420756e777261702074686174206d7563680000000000000000006044820152606401610c04565b60006112e285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250504660011491506123c99050565b90506001600160601b03197f00000000000000000000000000000000000000000000000000000000000000008116908216036113545760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610c04565b61135e8683614b32565b611366611fd5565b600101805467ffffffffffffffff19166001600160401b039283161790556113919033908816612194565b611399611fd5565b60010180546008906113ba90600160401b90046001600160401b0316614b51565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031692507f0ac1547df8510f30b54430e0e4e1e93ce326490aec9cebf0f78b8faa55dc1ded6114103390565b86868987604051611425959493929190614b7c565b60405180910390a150509392505050565b6000611440611fd5565b600101546001600160401b0316919050565b606060048054610915906144ab565b611469611fd5565b546001600160a01b0316336001600160a01b03161461149a576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166114b0576114b0614a54565b806001600160a01b03166114c2611fd5565b546040516001600160a01b03909116907fc63757acc12b39558fe5b88c5393e4b0353ffddaae3a2d07e121a8fc62d39c3790600090a380611501611fd5565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60008061152d611fd5565b6000848152600691909101602052604081205491508190036115525750600092915050565b60001981036115645750600392915050565b6001604051631bc1eaf360e21b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636f07abcc90602401602060405180830381865afa1580156115cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ef9190614bbe565b60068111156116005761160061407e565b1461160c57600261160f565b60015b9392505050565b50919050565b6000336109a6818585612135565b6060816001600160401b03811115611644576116446142a2565b60405190808252806020026020018201604052801561166d578160200160208202803683370190505b50905060005b828110156116e55761169c84848381811061169057611690614bdf565b90506020020135611522565b8282815181106116ae576116ae614bdf565b602002602001019060038111156116c7576116c761407e565b908160038111156116da576116da61407e565b905250600101611673565b5092915050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561174c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117709190614bf5565b6001600160a01b0316638a227764611786611fd5565b600501546040518263ffffffff1660e01b81526004016117a891815260200190565b600060405180830381865afa1580156117c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109d89190810190614c12565b60606109d86001600160601b03197f00000000000000000000000000000000000000000000000000000000000000001646600114612006565b61182e611fd5565b546001600160a01b0316336001600160a01b03161461185f576040516282b42960e81b815260040160405180910390fd5b61189e82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247b92505050565b5050565b834211156118c65760405163313c898160e11b815260048101859052602401610c04565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886119138c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061196e82612635565b9050600061197e82878787612662565b9050896001600160a01b0316816001600160a01b0316146119c5576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610c04565b6119d08a8a8a611ff9565b50505050505050505050565b611a377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146040518060400160405280600e81526020016d696e76616c6964206f7261636c6560901b8152506122f8565b604051635d933eb760e01b815273__$928ef700fe09700756683be525388ce8a3$__90635d933eb790611a7290869086908690600401614c4e565b600060405180830381865af4925050508015611ab057506040513d6000823e601f3d908101601f19168201604052611aad9190810190614c68565b60015b611b1e57611abc61496b565b806308c379a003611ae45750611ad0614986565b80611adb5750611ae6565b610f0f81612302565b505b3d808015611b10576040519150601f19603f3d011682016040523d82523d6000602084013e611b15565b606091505b50610f0f612339565b611b7a7f00000000000000000000000000000000000000000000000000000000000000008580519060200120146040518060400160405280601181526020017034b73b30b634b21031bab9ba37b234b0b760791b8152506122f8565b611b8d82826001600160401b0316612086565b7fbae099c209765c02c309f0fac06aec3ac516a3cc60d09f1a3da4b52d673d28a383838388604051611bc29493929190614d02565b60405180910390a15050505050505050565b60006109007f000000000000000000000000000000000000000000000000000000000000000083612690565b611c08611fd5565b546001600160a01b0316336001600160a01b031614611c39576040516282b42960e81b815260040160405180910390fd5b6000815111611c4a57611c4a614a54565b80611c53611fd5565b6004019080519060200190611c69929190613c6d565b50611c8281611c7d600146146109c1611fd5565b612753565b50565b6000611c8f612869565b805490915060ff600160401b82041615906001600160401b0316600081158015611cb65750825b90506000826001600160401b03166001148015611cd25750303b155b905081158015611ce0575080155b15611cfe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d2857845460ff60401b1916600160401b1785555b87611d31611fd5565b80546001600160a01b0319166001600160a01b03928316179055604051908916906000907fc63757acc12b39558fe5b88c5393e4b0353ffddaae3a2d07e121a8fc62d39c37908290a3604051806080016040528060014614611d94576003611d97565b600c5b61ffff168152602001611dac600a6032614d59565b61ffff168152630bebc200602082015262033450604090910152611dce611fd5565b8151600391909101805460208085015160408087015160609097015162ffffff16600160601b0262ffffff60601b196001600160401b0390981664010000000002979097166effffffffffffffffffffff000000001961ffff938416620100000263ffffffff19909616939097169290921793909317949094169390931793909317905581516001808252818401909352600092909182015b6060815260200190600190039081611e6757905050905060014614611ec1576040518060400160405280601d81526020017f68747470733a2f2f7270632d746573746e65742e7769746e65742e696f000000815250611ef8565b6040518060400160405280601881526020017f68747470733a2f2f7270632d30312e7769746e65742e696f00000000000000008152505b81600081518110611f0b57611f0b614bdf565b602002602001018190525080611f1f611fd5565b6004019080519060200190611f35929190613c6d565b50611f7588888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247b92505050565b508315611fb857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611bc2565b5050505050505050565b6000611fcc611fd5565b60050154905090565b7f6116473658e87b023e7f215d122c0048f3d7a669d8df94a5565f0c95871c58f990565b610ff08383836001612892565b606061160f8360601c8361203657604051806040016040528060048152602001631d1dda5d60e21b815250612967565b604051806040016040528060038152602001621dda5d60ea1b815250612967565b6001600160a01b0381166028602160991b0114611c82576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166120b05760405163ec442f0560e01b815260006004820152602401610c04565b61189e6000838361299b565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811015610f0f578181101561212657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610c04565b610f0f84848484036000612892565b6001600160a01b03831661215f57604051634b637e8f60e11b815260006004820152602401610c04565b6001600160a01b0382166121895760405163ec442f0560e01b815260006004820152602401610c04565b610ff083838361299b565b6001600160a01b0382166121be57604051634b637e8f60e11b815260006004820152602401610c04565b61189e8260008361299b565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561222357507f000000000000000000000000000000000000000000000000000000000000000046145b1561224d57507f000000000000000000000000000000000000000000000000000000000000000090565b6109d8604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b90565b8161189e5761189e815b806040516020016123139190614d7d565b60408051601f198184030181529082905262461bcd60e51b8252610c0491600401613da4565b61236d604051806040016040528060138152602001723ab73430b7323632b21032bc31b2b83a34b7b760691b815250612302565b565b60606109d87f00000000000000000000000000000000000000000000000000000000000000006005612ac5565b60606109d87f00000000000000000000000000000000000000000000000000000000000000006006612ac5565b6000816123d757602b6123da565b602a5b60ff168351146124255760405162461bcd60e51b8152602060048201526016602482015275084cac6d066647440d2dcecc2d8d2c840d8cadccee8d60531b6044820152606401610c04565b612471838361245057604051806040016040528060048152602001631d1dda5d60e21b815250612b70565b604051806040016040528060038152602001621dda5d60ea1b815250612b70565b60601b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000008180519060200120036124ea5760405162461bcd60e51b81526020600482015260166024820152753ab730b1b1b2b83a30b13632903ab73bb930b83832b960511b6044820152606401610c04565b7faf2313438cf7747b4740d0822c1e7683638361ace0daa8f1c4d5a15d57f4ef04816040516125199190613da4565b60405180910390a161252e81600146146123c9565b612536611fd5565b60020180546001600160a01b03191660609290921c919091179055611c8261255c611fd5565b600401805480602002602001604051908101604052809291908181526020016000905b8282101561262b57838290600052602060002001805461259e906144ab565b80601f01602080910402602001604051908101604052809291908181526020018280546125ca906144ab565b80156126175780601f106125ec57610100808354040283529160200191612617565b820191906000526020600020905b8154815290600101906020018083116125fa57829003601f168201915b50505050508152602001906001019061257f565b5050505082612753565b60006109006126426121ca565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061267488888888612bf2565b9250925092506126848282612cc1565b50909695505050505050565b6040516305e742ef60e01b81526004810182905262035b6060248201526000906064906001600160a01b038516906305e742ef90604401602060405180830381865afa1580156126e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270891906144df565b7f6116473658e87b023e7f215d122c0048f3d7a669d8df94a5565f0c95871c58fc5461273f9062010000900461ffff166064614db1565b6127499190614dc4565b61160f9190614ddb565b60408051600280825260608201909252600091816020015b606081526020019060019003908161276b57905050905061278a6117ed565b8160008151811061279d5761279d614bdf565b602002602001018190525081816001815181106127bc576127bc614bdf565b6020908102919091010152604051633c389c6f60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f0e271bc906128159084908790600401614def565b6020604051808303816000875af1158015612834573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285891906144df565b612860611fd5565b60050155505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610900565b6001600160a01b0384166128bc5760405163e602df0560e01b815260006004820152602401610c04565b6001600160a01b0383166128e657604051634a1406b160e11b815260006004820152602401610c04565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610f0f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161295991815260200190565b60405180910390a350505050565b604051606083811b6001600160601b03191660208301529061160f9060340160405160208183030381529060405283612d7a565b6001600160a01b0383166129c65780600260008282546129bb9190614db1565b90915550612a389050565b6001600160a01b03831660009081526020819052604090205481811015612a195760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610c04565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216612a5457600280548290039055612a73565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ab891815260200190565b60405180910390a3505050565b606060ff8314612adf57612ad883612dc8565b9050610900565b818054612aeb906144ab565b80601f0160208091040260200160405190810160405280929190818152602001828054612b17906144ab565b8015612b645780601f10612b3957610100808354040283529160200191612b64565b820191906000526020600020905b815481529060010190602001808311612b4757829003601f168201915b50505050509050610900565b6000806000612b9f85604051602001612b899190614e14565b6040516020818303038152906040526001612e07565b91509150612bcc84604051602001612bb79190614e14565b60405160208183030381529060405283613198565b6000612bdd826005600860006131ec565b9050612be8816131fa565b9695505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612c2d5750600091506003905082612cb7565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612c81573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612cad57506000925060019150829050612cb7565b9250600091508190505b9450945094915050565b6000826003811115612cd557612cd561407e565b03612cde575050565b6001826003811115612cf257612cf261407e565b03612d105760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612d2457612d2461407e565b03612d455760405163fce698f760e01b815260048101829052602401610c04565b6003826003811115612d5957612d5961407e565b0361189e576040516335e2f38360e21b815260048101829052602401610c04565b6060600082604051602001612d8f9190614e14565b60405160208183030381529060405290506000612db185600860056001613255565b9050612dbf8282600161331d565b95945050505050565b60606000612dd5836135ae565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6060806000605a85511115612e5e5760405162461bcd60e51b815260206004820152601d60248201527f4265636833323a20696e76616c696420737472696e67206c656e6774680000006044820152606401610c04565b60005b8551811015612f5b576000868281518110612e7e57612e7e614bdf565b016020015160f81c905060218110801590612e9d5750607e8160ff1611155b612ede5760405162461bcd60e51b81526020600482015260126024820152712132b1b419991d103bb937b7339031b430b960711b6044820152606401610c04565b60301960ff821601612f525782158015612ef9575060018210155b8015612f09575086518260070111155b612f4e5760405162461bcd60e51b81526020600482015260166024820152754265636833323a2077726f6e6720706f73206f66203160501b6044820152606401610c04565b8192505b50600101612e61565b50806001600160401b03811115612f7457612f746142a2565b6040519080825280601f01601f191660200182016040528015612f9e576020820181803683370190505b50925060005b81811015612ffa57858181518110612fbe57612fbe614bdf565b602001015160f81c60f81b848281518110612fdb57612fdb614bdf565b60200101906001600160f81b031916908160001a905350600101612fa4565b50600181865103036001600160401b03811115613019576130196142a2565b604051908082528060200260200182016040528015613042578160200160208202803683370190505b50915060005b82518110156131355760006040518061012001604052806101008152602001614f9b6101009139878484016001018151811061308657613086614bdf565b0160200151815160f89190911c9081106130a2576130a2614bdf565b01602001516001600160f81b031990811691508190036131045760405162461bcd60e51b815260206004820152601c60248201527f4265636833323a2062797465206e6f7420696e20616c706861626574000000006044820152606401610c04565b8060f81c84838151811061311a5761311a614bdf565b60ff9092166020928302919091019091015250600101613048565b506131418383866135d6565b6131865760405162461bcd60e51b81526020600482015260166024820152754265636833323a2077726f6e6720636865636b73756d60501b6044820152606401610c04565b50805160051901815290939092509050565b808051906020012082805190602001201461189e5760405162461bcd60e51b8152602060048201526014602482015273084cac6d066647440d0e4e040dad2e6dac2e8c6d60631b6044820152606401610c04565b6060612dbf85858585613704565b6000815160141461324d5760405162461bcd60e51b815260206004820152601b60248201527f4265636833323a20696e76616c69642064617461206c656e67746800000000006044820152606401610c04565b506014015190565b6060600085516001600160401b03811115613272576132726142a2565b60405190808252806020026020018201604052801561329b578160200160208202803683370190505b50905060005b81518163ffffffff16101561331057868163ffffffff16815181106132c8576132c8614bdf565b602001015160f81c60f81b60f81c828263ffffffff16815181106132ee576132ee614bdf565b60ff9092166020928302919091019091015261330981614e30565b90506132a1565b50612be881868686613704565b6060600061332c8585856138d4565b9050600081518551875101016001016001600160401b03811115613352576133526142a2565b6040519080825280601f01601f19166020018201604052801561337c576020820181803683370190505b50905060005b86518110156133d95786818151811061339d5761339d614bdf565b602001015160f81c60f81b8282815181106133ba576133ba614bdf565b60200101906001600160f81b031916908160001a905350600101613382565b50603160f81b818751815181106133f2576133f2614bdf565b60200101906001600160f81b031916908160001a905350855160010160005b86518110156134d957600087828151811061342e5761342e614bdf565b016020908101516040805180820190915282815260008051602061509b8339815191529083015260f81c91508110156134d05760405180604001604052806020815260200160008051602061509b8339815191528152508160ff168151811061349957613499614bdf565b602001015160f81c60f81b84848401815181106134b8576134b8614bdf565b60200101906001600160f81b031916908160001a9053505b50600101613411565b5085510160005b83518110156126845760008482815181106134fd576134fd614bdf565b6020026020010151905060405180604001604052806020815260200160008051602061509b833981519152815250518160ff1610156135a55760405180604001604052806020815260200160008051602061509b8339815191528152508160ff168151811061356e5761356e614bdf565b602001015160f81c60f81b848484018151811061358d5761358d614bdf565b60200101906001600160f81b031916908160001a9053505b506001016134e0565b600060ff8216601f81111561090057604051632cd44ac360e21b815260040160405180910390fd5b6000806135e285613a78565b9050600084518251016001600160401b03811115613602576136026142a2565b60405190808252806020026020018201604052801561362b578160200160208202803683370190505b50905060005b82518110156136865782818151811061364c5761364c614bdf565b602002602001015160ff1682828151811061366957613669614bdf565b63ffffffff90921660209283029190910190910152600101613631565b5060005b85518110156136e2578581815181106136a5576136a5614bdf565b602002602001015160ff168284518301815181106136c5576136c5614bdf565b63ffffffff9092166020928302919091019091015260010161368a565b508363ffffffff166136f382613b73565b63ffffffff16149695505050505050565b606060008080613717600180881b614e4c565b905060005b885181101561380d57600089828151811061373957613739614bdf565b6020908102919091010151905060ff8082168a1c16156137ba5760405162461bcd60e51b815260206004820152603660248201527f4265636833323a2076616c7565206d757374206265206e6f6e2d6e6567617469604482015275766520616e642066697420696e2066726f6d6269747360501b6064820152608401610c04565b93881b60ff85161793928801925b8784106138045760405193889003936137ee90879087871c861660f81b90602001614e5f565b60405160208183030381529060405295506137c8565b5060010161371c565b5084156138555781156138505783816138268489614e4c565b85901b1660f81b60405160200161383e929190614e5f565b60405160208183030381529060405293505b6138c9565b8682108061386f5750806138698388614e4c565b84901b16155b6138c95760405162461bcd60e51b815260206004820152602560248201527f4265636833323a20696e76616c69642070616464696e67206f722076616c75656044820152642073697a6560d81b6064820152608401610c04565b505050949350505050565b606060006138e185613a78565b9050600084518251016006016001600160401b03811115613904576139046142a2565b60405190808252806020026020018201604052801561392d578160200160208202803683370190505b50905060005b85518351018110156139f15782518110156139965782818151811061395a5761395a614bdf565b602002602001015160ff1682828151811061397757613977614bdf565b602002602001019063ffffffff16908163ffffffff16815250506139e9565b8583518203815181106139ab576139ab614bdf565b602001015160f81c60f81b60f81c60ff168282815181106139ce576139ce614bdf565b602002602001019063ffffffff16908163ffffffff16815250505b600101613933565b5060408051600680825260e08201909252906020820160c080368337019050509250600084613a1f83613b73565b18905060005b6006811015613a6d57806005036005028263ffffffff16901c601f16858281518110613a5357613a53614bdf565b60ff90921660209283029190910190910152600101613a25565b505050509392505050565b606081518251016001016001600160401b03811115613a9957613a996142a2565b604051908082528060200260200182016040528015613ac2578160200160208202803683370190505b50905060005b8251811015611616576005838281518110613ae557613ae5614bdf565b602001015160f81c60f81b60f81c60ff16901c828281518110613b0a57613b0a614bdf565b602002602001019060ff16908160ff1681525050828181518110613b3057613b30614bdf565b602001015160f81c60f81b60f81c601f16828451830160010181518110613b5957613b59614bdf565b60ff90921660209283029190910190910152600101613ac8565b6040805160a081018252633b6a57b281526326508e6d6020820152631ea119fa91810191909152633d4233dd6060820152632a1462b36080820152600090600190825b84518163ffffffff161015613c6457600060198463ffffffff16901c9050858263ffffffff1681518110613bec57613bec614bdf565b60200260200101516005856301ffffff1663ffffffff16901b18935060005b60058163ffffffff161015613c5a57600163ffffffff8381169083161c81169003613c5257838163ffffffff1660058110613c4857613c48614bdf565b6020020151851894505b600101613c0b565b5050600101613bb6565b50909392505050565b828054828255906000526020600020908101928215613cb3579160200282015b82811115613cb35782518290613ca39082614edc565b5091602001919060010190613c8d565b50613cbf929150613cc3565b5090565b80821115613cbf576000613cd78282613ce0565b50600101613cc3565b508054613cec906144ab565b6000825580601f10613cfc575050565b601f016020900490600052602060002090810190611c8291905b80821115613cbf5760008155600101613d16565b600060208284031215613d3c57600080fd5b81356001600160e01b03198116811461160f57600080fd5b60005b83811015613d6f578181015183820152602001613d57565b50506000910152565b60008151808452613d90816020860160208601613d54565b601f01601f19169290920160200192915050565b60208152600061160f6020830184613d78565b6001600160a01b0381168114611c8257600080fd5b60008060408385031215613ddf57600080fd5b8235613dea81613db7565b946020939093013593505050565b600080600060608486031215613e0d57600080fd5b8335613e1881613db7565b92506020840135613e2881613db7565b929592945050506040919091013590565b600060208284031215613e4b57600080fd5b813561160f81613db7565b600060208284031215613e6857600080fd5b5035919050565b60008083601f840112613e8157600080fd5b5081356001600160401b03811115613e9857600080fd5b602083019150836020828501011115613eb057600080fd5b9250929050565b600080600060408486031215613ecc57600080fd5b83356001600160401b03811115613ee257600080fd5b840160e08187031215613ef457600080fd5b925060208401356001600160401b03811115613f0f57600080fd5b613f1b86828701613e6f565b9497909650939450505050565b60006080828403128015613f3b57600080fd5b509092915050565b600082825180855260208501945060208160051b8301016020850160005b8381101561268457601f19858403018852613f7d838351613d78565b6020988901989093509190910190600101613f61565b60208152600061160f6020830184613f43565b60ff60f81b8816815260e060208201526000613fc560e0830189613d78565b8281036040840152613fd78189613d78565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b8181101561402d57835183526020938401939092019160010161400f565b50909b9a5050505050505050505050565b6001600160401b0381168114611c8257600080fd5b8035610c0d8161403e565b60008060006040848603121561407357600080fd5b8335613ef48161403e565b634e487b7160e01b600052602160045260246000fd5b600481106140a4576140a461407e565b9052565b602081016109008284614094565b600080602083850312156140c957600080fd5b82356001600160401b038111156140df57600080fd5b8301601f810185136140f057600080fd5b80356001600160401b0381111561410657600080fd5b8560208260051b840101111561411b57600080fd5b6020919091019590945092505050565b602080825282518282018190526000918401906040840190835b8181101561416b57614158838551614094565b6020938401939290920191600101614145565b509095945050505050565b6000806020838503121561418957600080fd5b82356001600160401b0381111561419f57600080fd5b6141ab85828601613e6f565b90969095509350505050565b60ff81168114611c8257600080fd5b600080600080600080600060e0888a0312156141e157600080fd5b87356141ec81613db7565b965060208801356141fc81613db7565b95506040880135945060608801359350608088013561421a816141b7565b9699959850939692959460a0840135945060c09093013592915050565b60008060006040848603121561424c57600080fd5b8335925060208401356001600160401b03811115613f0f57600080fd5b6000806040838503121561427c57600080fd5b823561428781613db7565b9150602083013561429781613db7565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60c081018181106001600160401b03821117156142d7576142d76142a2565b60405250565b604081018181106001600160401b03821117156142d7576142d76142a2565b60a081018181106001600160401b03821117156142d7576142d76142a2565b601f8201601f191681016001600160401b0381118282101715614340576143406142a2565b6040525050565b60006001600160401b03821115614360576143606142a2565b50601f01601f191660200190565b60006020828403121561438057600080fd5b81356001600160401b0381111561439657600080fd5b8201601f810184136143a757600080fd5b80356001600160401b038111156143c0576143c06142a2565b8060051b6040516143d4602083018261431b565b9182526020818401810192908101878411156143ef57600080fd5b6020850192505b838310156144805782356001600160401b0381111561441457600080fd5b8501603f8101891361442557600080fd5b602081013561443381614347565b604051614440828261431b565b8281526040848401018c101561445557600080fd5b82604085016020830137600060208483010152808552505050506020810190506020830192506143f6565b509695505050505050565b6000806000604084860312156144a057600080fd5b8335613ef481613db7565b600181811c908216806144bf57607f821691505b60208210810361161657634e487b7160e01b600052602260045260246000fd5b6000602082840312156144f157600080fd5b5051919050565b61ffff81168114611c8257600080fd5b60006020828403121561451a57600080fd5b813561160f816144f8565b6000808335601e1984360301811261453c57600080fd5b83016020810192503590506001600160401b0381111561455b57600080fd5b803603821315613eb057600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040808252843582820152602085013560608301526000908501356145b7816144f8565b61ffff16608083015260608501356145ce816144f8565b61ffff1660a083015260808501356145e58161403e565b6001600160401b031660c08301526145ff60a08601614053565b6001600160401b031660e083015261461a60c0860186614525565b60e06101008501526146316101208501828461456a565b9150508281036020840152612be881858761456a565b805160148110610c0d57600080fd5b8051610c0d8161403e565b600082601f83011261467257600080fd5b815160208301600061468383614347565b604051614690828261431b565b8092508481528785850111156146a557600080fd5b6146b3856020830186613d54565b979650505050505050565b8051610c0d816141b7565b600060c082840312156146db57600080fd5b6040516146e7816142b8565b80915082516001600160401b0381111561470057600080fd5b83016040818603121561471257600080fd5b60405161471e816142dd565b81516001600160401b0381111561473457600080fd5b61474087828501614661565b82525060209182015182820152825261475a9084016146be565b602082015261476b604084016146be565b604082015261477c606084016146be565b606082015261478d60808401614656565b608082015261479e60a08401614656565b60a08201525092915050565b6000602082840312156147bc57600080fd5b81516001600160401b038111156147d257600080fd5b820160a081850312156147e457600080fd5b6040516147f0816142fc565b8151610100811061480057600080fd5b815261480e60208301614647565b60208201526040828101519082015261482960608301614656565b606082015260808201516001600160401b0381111561484757600080fd5b614853868285016146c9565b608083015250949350505050565b6020815260008251610100811061487a5761487a61407e565b806020840152506020830151601481106148965761489661407e565b80604084015250604083015160608301526001600160401b036060840151166080830152608083015160a080840152805160c080850152805160406101808601526148e56101c0860182613d78565b6020928301516101a08701529183015160ff1660e08601525060408201519061491461010086018360ff169052565b606083015160ff1661012086015260808301516001600160401b0380821661014088015260a0909401519384166101608701529150612dbf565b60006020828403121561496057600080fd5b815161160f8161403e565b600060033d11156122f55760046000803e5060005160e01c90565b600060443d10156149945790565b6040513d600319016004823e80513d60248201116001600160401b03821117156149bd57505090565b80820180516001600160401b038111156149d8575050505090565b3d84016003190182820160200111156149f2575050505090565b614a016020828501018561431b565b509392505050565b600060208284031215614a1b57600080fd5b813561160f8161403e565b62ffffff81168114611c8257600080fd5b600060208284031215614a4957600080fd5b813561160f81614a26565b634e487b7160e01b600052600160045260246000fd5b8135614a75816144f8565b61ffff8116905081548161ffff1982161783556020840135614a96816144f8565b63ffff00008160101b169050808363ffffffff198416171784556040850135614abe8161403e565b6bffffffffffffffff000000008160201b16846bffffffffffffffffffffffff1985161783171785555050505060006060830135614afb81614a26565b825462ffffff60601b191660609190911b62ffffff60601b16179091555050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03828116828216039081111561090057610900614b1c565b60006001600160401b0382166001600160401b038103614b7357614b73614b1c565b60010192915050565b6001600160a01b0386168152608060208201819052600090614ba1908301868861456a565b6001600160401b0394909416604083015250606001529392505050565b600060208284031215614bd057600080fd5b81516007811061160f57600080fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215614c0757600080fd5b815161160f81613db7565b600060208284031215614c2457600080fd5b81516001600160401b03811115614c3a57600080fd5b614c4684828501614661565b949350505050565b838152604060208201526000612dbf60408301848661456a565b600080600080600060a08688031215614c8057600080fd5b855160208701519095506001600160401b03811115614c9e57600080fd5b614caa88828901614661565b94505060408601516001600160401b03811115614cc657600080fd5b614cd288828901614661565b9350506060860151614ce381613db7565b6080870151909250614cf48161403e565b809150509295509295909350565b608081526000614d156080830187613d78565b6001600160a01b03959095166020830152506001600160401b03929092166040830152606090910152919050565b634e487b7160e01b600052601260045260246000fd5b600061ffff831680614d6d57614d6d614d43565b8061ffff84160491505092915050565b6b02bb930b83832b22ba4aa1d160a51b815260008251614da481600c850160208701613d54565b91909101600c0192915050565b8082018082111561090057610900614b1c565b808202811582820484141761090057610900614b1c565b600082614dea57614dea614d43565b500490565b604081526000614e026040830185613f43565b8281036020840152612dbf8185613f43565b60008251614e26818460208701613d54565b9190910192915050565b600063ffffffff821663ffffffff8103614b7357614b73614b1c565b8181038181111561090057610900614b1c565b60008351614e71818460208801613d54565b6001600160f81b0319939093169190920190815260010192915050565b601f821115610ff057806000526020600020601f840160051c81016020851015614eb55750805b601f840160051c820191505b81811015614ed55760008155600101614ec1565b5050505050565b81516001600160401b03811115614ef557614ef56142a2565b614f0981614f0384546144ab565b84614e8e565b6020601f821160018114614f3d5760008315614f255750848201515b600019600385901b1c1916600184901b178455614ed5565b600084815260208120601f198516915b82811015614f6d5787850151825560209485019460019092019101614f4d565b5084821015614f8b5786840151600019600387901b60f8161c191681555b50505050600190811b0190555056feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fff0a1115141a1e0705ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1dff180d19090817ff12161f1b13ff010003100b1c0c0e060402ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff71707a7279397838676632747664773073336a6e35346b686365366d7561376ca2646970667358221220367cced7546fb312124bdfd5dd418957aa88c6e8dabdf6a7bc72411f0c421df564736f6c634300081c0033",
  "linkReferences": {
    "contracts/WrappedWITLib.sol": {
      "WrappedWITLib": [
        {
          "length": 20,
          "start": 8768
        },
        {
          "length": 20,
          "start": 9315
        },
        {
          "length": 20,
          "start": 12576
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/WrappedWITLib.sol": {
      "WrappedWITLib": [
        {
          "length": 20,
          "start": 2918
        },
        {
          "length": 20,
          "start": 3465
        },
        {
          "length": 20,
          "start": 6726
        }
      ]
    }
  }
}
