{
  "_format": "hh-sol-artifact-1",
  "contractName": "TssStakingSlashing",
  "sourceName": "contracts/L1/tss/TssStakingSlashing.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum TssStakingSlashing.SlashType",
          "name": "",
          "type": "uint8"
        }
      ],
      "name": "Slashing",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "WithdrawQueue",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "canCompleteQueuedWithdrawal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "claimerOperators",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "clearQuitRequestList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "completeWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "delegateTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "delegation",
      "outputs": [
        {
          "internalType": "contract IDelegation",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "delegationManager",
      "outputs": [
        {
          "internalType": "contract IDelegationManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "delegators",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "newShares",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "explanation",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getQuitRequestList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "batchIndex",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getSlashRecord",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSlashingParams",
      "outputs": [
        {
          "internalType": "uint256[2]",
          "name": "",
          "type": "uint256[2]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_mantleToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tssGroupContract",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_delegationManager",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_delegation",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l1messenger",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_regulatoryAccount",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tssManager",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "isCanOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "isJailed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isSetParam",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "messenger",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "internalType": "contract IDelegationShare[]",
          "name": "investorDelegationShares",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "investorShares",
          "type": "uint256[]"
        }
      ],
      "name": "onDelegationReceived",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "contract IDelegationShare[]",
          "name": "delegationShares",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "investorShares",
          "type": "uint256[]"
        }
      ],
      "name": "onDelegationReceived",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "contract IDelegationShare[]",
          "name": "delegationShares",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "investorShares",
          "type": "uint256[]"
        }
      ],
      "name": "onDelegationWithdrawn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "internalType": "contract IDelegationShare[]",
          "name": "investorDelegationShares",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "investorShares",
          "type": "uint256[]"
        }
      ],
      "name": "onDelegationWithdrawn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "operatorClaimers",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "operators",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "payForService",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quitRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "quitRequestList",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_pubKey",
          "type": "bytes"
        }
      ],
      "name": "registerAsOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "regulatoryAccount",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_claimer",
          "type": "address"
        }
      ],
      "name": "setClaimer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "setRegulatoryAccount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[2]",
          "name": "_slashAmount",
          "type": "uint256[2]"
        }
      ],
      "name": "setSlashingParams",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "setTokenAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tssGroup",
          "type": "address"
        }
      ],
      "name": "setTssGroupAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tssManager",
          "type": "address"
        }
      ],
      "name": "setTssManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "shares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountShares",
          "type": "uint256"
        }
      ],
      "name": "sharesToUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountShares",
          "type": "uint256"
        }
      ],
      "name": "sharesToUnderlyingView",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "slashAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_messageBytes",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_sig",
          "type": "bytes"
        }
      ],
      "name": "slashing",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "stakers",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tssDelegationContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tssDelegationManagerContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tssGroupContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tssManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unJail",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountUnderlying",
          "type": "uint256"
        }
      ],
      "name": "underlyingToShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountUnderlying",
          "type": "uint256"
        }
      ],
      "name": "underlyingToSharesView",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "underlyingToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "userUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "userUnderlyingView",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountShares",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "withdrawalRoots",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "withdrawals",
      "outputs": [
        {
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "withdrawer",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "nonce",
              "type": "uint96"
            }
          ],
          "internalType": "struct IDelegationManager.WithdrawerAndNonce",
          "name": "withdrawerAndNonce",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "delegatedAddress",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060cd80546001600160a01b03191690556200002c62000032565b620000f4565b600054610100900460ff16156200009f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000f2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61621980620001046000396000f3fe6080604052600436106103ad5760003560e01c80638f6a6240116101e7578063c8b6cbf71161010d578063ea4d3c9b116100a0578063f47c83c51161006f578063f47c83c51461055a578063f5cf673b14610bc1578063f756fa2114610be1578063fee17dd514610bf657600080fd5b8063ea4d3c9b14610b41578063f2bd740014610b61578063f2fde38b14610b81578063f3e7387514610ba157600080fd5b8063d9caed12116100dc578063d9caed1214610aab578063df5cf72314610acb578063e3dae51c14610aeb578063ea0c8c2f14610b0b57600080fd5b8063c8b6cbf714610a15578063ce7c2ac214610a35578063d323041d14610a55578063d58ecaaa14610a7557600080fd5b8063ab5921e111610185578063b6b55f2511610154578063b6b55f2514610996578063bbb26c63146109b6578063c3a82e11146109c8578063c665c35a146109f557600080fd5b8063ab5921e11461091f578063ac637c7a14610934578063b1bbdc4114610954578063b3fc1cb21461097457600080fd5b8063965a303f116101c1578063965a303f1461089a5780639c211730146108ba578063a458413a146108df578063a5424a55146108ff57600080fd5b80638f6a62401461084557806390ed6bf41461086557806395cf5bea1461087a57600080fd5b80635716d17c116102d7578063740efec31161026a5780638340f549116102395780638340f549146107b15780638c871019146107d15780638d23fc61146107f15780638da5cb5b1461082757600080fd5b8063740efec31461069e5780637a8b2637146106b35780637a9262a2146106d3578063829673ef1461076b57600080fd5b806360ac5166116102a657806360ac5166146106345780636dd300b5146106545780636eae5b1114610674578063715018a61461068957600080fd5b80635716d17c146105bc57806357b0f05f146105dc5780635887c33c146105fc5780635c975abb1461061c57600080fd5b8063358764761161034f5780633ccfd60b1161031e5780633ccfd60b14610545578063412cdd2c1461055a578063490ab9d61461057a578063553ca5f81461059c57600080fd5b806335876476146104c15780633a98ef39146104e15780633c86a42f146105055780633cb747bf1461052557600080fd5b80632495a5991161038b5780632495a5991461042f57806326a4e8d214610467578063289087ba1461048757806329f13431146104a157600080fd5b8063111b8c02146103b257806313e7c9d8146103c957806314bfb527146103ff575b600080fd5b3480156103be57600080fd5b506103c7610c0b565b005b3480156103d557600080fd5b506103e96103e4366004615143565b610c21565b6040516103f691906151da565b60405180910390f35b34801561040b57600080fd5b5061041f61041a366004615143565b610cbb565b60405190151581526020016103f6565b34801561043b57600080fd5b5060ca5461044f906001600160a01b031681565b6040516001600160a01b0390911681526020016103f6565b34801561047357600080fd5b506103c7610482366004615143565b610e03565b34801561049357600080fd5b5060dd5461041f9060ff1681565b3480156104ad57600080fd5b506103c76104bc3660046151ed565b610e90565b3480156104cd57600080fd5b506103c76104dc36600461520f565b610ff1565b3480156104ed57600080fd5b506104f760cb5481565b6040519081526020016103f6565b34801561051157600080fd5b506103c7610520366004615143565b611237565b34801561053157600080fd5b5060cd5461044f906001600160a01b031681565b34801561055157600080fd5b506103c76112c4565b34801561056657600080fd5b506103c7610575366004615462565b505050565b34801561058657600080fd5b5061058f61190f565b6040516103f691906154d8565b3480156105a857600080fd5b506104f76105b7366004615143565b611971565b3480156105c857600080fd5b5060cf5461044f906001600160a01b031681565b3480156105e857600080fd5b5061044f6105f7366004615525565b611985565b34801561060857600080fd5b506103c7610617366004615587565b6119af565b34801561062857600080fd5b5060975460ff1661041f565b34801561064057600080fd5b506103c761064f366004615143565b611d12565b34801561066057600080fd5b506103c761066f3660046155f3565b611d9f565b34801561068057600080fd5b506103c7611fc1565b34801561069557600080fd5b506103c7612224565b3480156106aa57600080fd5b506103c7612236565b3480156106bf57600080fd5b506104f76106ce366004615525565b612635565b3480156106df57600080fd5b5061075c6106ee366004615143565b60d8602090815260009182526040918290206003810154835180850190945260048201546001600160a01b038082168652740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169385019390935260059091015490821692911683565b6040516103f69392919061567c565b34801561077757600080fd5b5061041f6107863660046156cd565b600091825260d5602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156107bd57600080fd5b506104f76107cc3660046156fd565b61266b565b3480156107dd57600080fd5b506104f76107ec366004615525565b6129d0565b3480156107fd57600080fd5b5061044f61080c366004615143565b60da602052600090815260409020546001600160a01b031681565b34801561083357600080fd5b506033546001600160a01b031661044f565b34801561085157600080fd5b506104f7610860366004615143565b6129db565b34801561087157600080fd5b506103c76129e9565b34801561088657600080fd5b506103c761089536600461573e565b612ad7565b3480156108a657600080fd5b5060d05461044f906001600160a01b031681565b3480156108c657600080fd5b5060dd5461044f9061010090046001600160a01b031681565b3480156108eb57600080fd5b5061041f6108fa366004615143565b612c0d565b34801561090b57600080fd5b506103c761091a366004615143565b612cac565b34801561092b57600080fd5b506103e9612d49565b34801561094057600080fd5b506103c761094f366004615143565b612d69565b34801561096057600080fd5b506103c761096f3660046155f3565b612dba565b34801561098057600080fd5b5061098961321e565b6040516103f69190615780565b3480156109a257600080fd5b506104f76109b1366004615525565b613258565b6103c76109c43660046157b1565b5050565b3480156109d457600080fd5b506104f76109e3366004615143565b60d76020526000908152604090205481565b348015610a0157600080fd5b5060d65461044f906001600160a01b031681565b348015610a2157600080fd5b5061044f610a303660046157b1565b613309565b348015610a4157600080fd5b506104f7610a50366004615143565b613341565b348015610a6157600080fd5b5060ce5461044f906001600160a01b031681565b348015610a8157600080fd5b5061044f610a90366004615143565b60db602052600090815260409020546001600160a01b031681565b348015610ab757600080fd5b506103c7610ac63660046156fd565b6133de565b348015610ad757600080fd5b5060cc5461044f906001600160a01b031681565b348015610af757600080fd5b506104f7610b06366004615525565b61365a565b348015610b1757600080fd5b5061044f610b26366004615143565b60dc602052600090815260409020546001600160a01b031681565b348015610b4d57600080fd5b5060c95461044f906001600160a01b031681565b348015610b6d57600080fd5b506104f7610b7c366004615525565b61369f565b348015610b8d57600080fd5b506103c7610b9c366004615143565b6136b6565b348015610bad57600080fd5b506104f7610bbc366004615525565b613746565b348015610bcd57600080fd5b506103c7610bdc3660046157dd565b613751565b348015610bed57600080fd5b506103c7613a81565b348015610c0257600080fd5b5061041f613d94565b610c1361404b565b610c1f60d26000614fa2565b565b60d16020526000908152604090208054610c3a9061580b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c669061580b565b8015610cb35780601f10610c8857610100808354040283529160200191610cb3565b820191906000526020600020905b815481529060010190602001808311610c9657829003601f168201915b505050505081565b60ce546001600160a01b03828116600090815260d1602052604080822090517f54bbb9140000000000000000000000000000000000000000000000000000000081529193849316916354bbb91491610d1591600401615859565b600060405180830381600087803b158015610d2f57600080fd5b505af1158015610d43573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d89919081019061595b565b805151909150604014610de35760405162461bcd60e51b815260206004820152601460248201527f747373206d656d626572206e6f7420657869737400000000000000000000000060448201526064015b60405180910390fd5b600181604001516001811115610dfb57610dfb615a58565b149392505050565b610e0b61404b565b6001600160a01b038116610e615760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610dda565b60ca805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e9861404b565b8035602082013511610f125760405162461bcd60e51b815260206004820152602b60248201527f696e76616c696420706172616d20736c617368416d6f756e742c20616e696d7560448201527f73203c3d20757074696d650000000000000000000000000000000000000000006064820152608401610dda565b60005b6002811015610fc2576000828260028110610f3257610f32615a87565b602002013511610f845760405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420616d6f756e740000000000000000000000000000000000006044820152606401610dda565b818160028110610f9657610f96615a87565b602002013560d38260028110610fae57610fae615a87565b015580610fba81615ae5565b915050610f15565b505060dd80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600054610100900460ff16158080156110115750600054600160ff909116105b8061102b5750303b15801561102b575060005460ff166001145b61109d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610dda565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156110fb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6111036140a5565b61110b61412a565b60ca80546001600160a01b03808b1673ffffffffffffffffffffffffffffffffffffffff199283161790925560ce80548a841690831617905560cf8054898416908316811790915560d08054898516908416811790915560c98054841690921790915560cc80548316909117905560cd805487841690831617905560d68054868416921691909117905560dd8054918416610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055801561122d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b61123f61404b565b6001600160a01b0381166112955760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610dda565b60d6805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60cc546040517f3e28391d0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690633e28391d9060240160206040518083038186803b15801561132057600080fd5b505afa158015611334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113589190615b00565b6113a45760405162461bcd60e51b815260206004820152600d60248201527f6e6f742064656c656761746f72000000000000000000000000000000000000006044820152606401610dda565b33600090815260d76020526040902054156114265760405162461bcd60e51b8152602060048201526024808201527f6d73672073656e64657220616c7265616479207265717565737420776974686460448201527f72617773000000000000000000000000000000000000000000000000000000006064820152608401610dda565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061145d5761145d615a87565b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050905030816000815181106114a0576114a0615a87565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337505060ca5482519293506001600160a01b0316918391506000906114fd576114fd615a87565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905061154333613341565b8160008151811061155657611556615a87565b602090810291909101015260cf546040517fa7c373bc0000000000000000000000000000000000000000000000000000000081523360048201526000916001600160a01b03169063a7c373bc9060240160206040518083038186803b1580156115be57600080fd5b505afa1580156115d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f69190615b22565b905060006040518060400160405280336001600160a01b0316815260200161161d846141af565b6bffffffffffffffffffffffff16905260cc546040517f65da12640000000000000000000000000000000000000000000000000000000081523360048201529192506000916001600160a01b03909116906365da12649060240160206040518083038186803b15801561168f57600080fd5b505afa1580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c79190615b3b565b6040805160c08101825288815260208082018990528183018890523360608301819052608083018790526001600160a01b03851660a0840152600090815260d882529290922081518051949550919384939192611728928492910190614fc0565b5060208281015180516117419260018501920190614fc0565b506040820151805161175d91600284019160209091019061502e565b5060608201516003820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff1991821617909155608084015180516020909101516bffffffffffffffffffffffff1674010000000000000000000000000000000000000000029083161760048085019190915560a09094015160059093018054938316939091169290921790915560cf546040517f529075a5000000000000000000000000000000000000000000000000000000008152600093919092169163529075a5916118389133918e918e918e918e918d9101615bcc565b602060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a9190615b22565b33600081815260d76020526040812083905588519293507f784199bc7528da846b1da87aeba29604de8f22a93e73379d5d1c7282fa3c727f928991906118d2576118d2615a87565b60200260200101516040516118fc9291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050505050505050565b606060d280548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b600061197f6106ce83613341565b92915050565b60d2818154811061199557600080fd5b6000918252602090912001546001600160a01b0316905081565b60026065541415611a025760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610dda565b600260655560dd5461010090046001600160a01b03163314611a8c5760405162461bcd60e51b815260206004820152603060248201527f5473735374616b696e67536c617368696e673a206d73672e73656e646572206960448201527f73206e6f74207473734d616e61676572000000000000000000000000000000006064820152608401610dda565b6000611a9a84860186615c64565b9050611aa98160200151610cbb565b15611af65760405162461bcd60e51b815260206004820152601760248201527f746865206e6f646520616c7265616479206a61696c65640000000000000000006044820152606401610dda565b8051600090815260d560209081526040808320828501516001600160a01b0316845290915290205460ff1615611b6e5760405162461bcd60e51b815260206004820152600f60248201527f616c726561647920736c617368656400000000000000000000000000000000006044820152606401610dda565b8051600090815260d560209081526040808320828501516001600160a01b03908116855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ce549151911690633231a7f090611bdc9088908890615d5c565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168252611c1e9187908790600401615d6c565b602060405180830381600087803b158015611c3857600080fd5b505af1158015611c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c709190615b00565b611cbc5760405162461bcd60e51b815260206004820152601c60248201527f7369676e6572206e6f74207473732067726f757020707562206b6579000000006044820152606401610dda565b611cc581614237565b7f9453459a6e9fa2069f1490c99cec15646afa157300f218a7f7840b23d09dbd3e81602001518260600151604051611cfe929190615dc0565b60405180910390a150506001606555505050565b611d1a61404b565b6001600160a01b038116611d705760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610dda565b60ce805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60cc546001600160a01b03163314611e1f5760405162461bcd60e51b815260206004820152602960248201527f44656c65676174696f6e5368617265426173652e6f6e6c7944656c656761746960448201527f6f6e4d616e6167657200000000000000000000000000000000000000000000006064820152608401610dda565b815160018114611e715760405162461bcd60e51b815260206004820152601760248201527f64656c65676174696f6e206f6e6c7920666f72207473730000000000000000006044820152606401610dda565b8151600114611ec25760405162461bcd60e51b815260206004820152601d60248201527f64656c65676174696f6e207368617265206f6e6c7920666f72207473730000006044820152606401610dda565b306001600160a01b031683600081518110611edf57611edf615a87565b60200260200101516001600160a01b031614611f3d5760405162461bcd60e51b815260206004820152601960248201527f6d757374207573652063757272656e7420636f6e7472616374000000000000006044820152606401610dda565b6001600160a01b03858116600090815260da602052604090205416611fba576001600160a01b03808616600081815260da602090815260408083208054958a1673ffffffffffffffffffffffffffffffffffffffff199687168117909155835260d982528220805460018101825590835291200180549092161790555b5050505050565b60dd5460ff166120135760405162461bcd60e51b815260206004820152601d60248201527f68617665206e6f74207365742074686520736c61736820616d6f756e740000006044820152606401610dda565b61201c33610cbb565b61208e5760405162461bcd60e51b815260206004820152603160248201527f416e20756e6a61696c6564207573657220646f65736e2774206e65656420746f60448201527f2063616c6c2074686973206d6574686f640000000000000000000000000000006064820152608401610dda565b60006120986144d1565b905060d36001015460cb5460cc546040517f778e55f300000000000000000000000000000000000000000000000000000000815233600482015230602482015284916001600160a01b03169063778e55f39060440160206040518083038186803b15801561210557600080fd5b505afa158015612119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213d9190615b22565b6121479190615e14565b6121519190615e33565b101561219f5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610dda565b60ce5433600090815260d160205260409081902090517f429ec49c0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163429ec49c916121f691600401615859565b600060405180830381600087803b15801561221057600080fd5b505af1158015611fba573d6000803e3d6000fd5b61222c61404b565b610c1f600061456b565b600260655414156122895760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610dda565b600260655560cc546040517f778e55f30000000000000000000000000000000000000000000000000000000081523360048201523060248201526000916001600160a01b03169063778e55f39060440160206040518083038186803b1580156122f157600080fd5b505afa158015612305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123299190615b22565b116123765760405162461bcd60e51b815260206004820152601360248201527f646f206e6f742068617665206465706f736974000000000000000000000000006044820152606401610dda565b60ce5433600090815260d160205260409081902090517f4866e2e00000000000000000000000000000000000000000000000000000000081526001600160a01b0390921691634866e2e0916123cd91600401615859565b602060405180830381600087803b1580156123e757600080fd5b505af11580156123fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241f9190615b00565b806124ce575060ce5433600090815260d160205260409081902090517fbcbc5fc60000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163bcbc5fc69161247c91600401615859565b602060405180830381600087803b15801561249657600080fd5b505af11580156124aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ce9190615b00565b6125405760405162461bcd60e51b815260206004820152602960248201527f6e6f742061742074686520696e6163746976652067726f7570206f722061637460448201527f6976652067726f757000000000000000000000000000000000000000000000006064820152608401610dda565b60005b60d2548110156125df57336001600160a01b031660d2828154811061256a5761256a615a87565b6000918252602090912001546001600160a01b031614156125cd5760405162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2071756974526571756573744c6973740000000000006044820152606401610dda565b806125d781615ae5565b915050612543565b5060d28054600181810183556000929092527ff2192e1030363415d7b4fb0406540a0060e8e2fc8982f3f32289379e11fa654601805473ffffffffffffffffffffffffffffffffffffffff191633179055606555565b600060cb5460001415612646575090565b60cb54826126526144d1565b61265c9190615e14565b61197f9190615e33565b919050565b60006126756145ca565b60c9546001600160a01b031633146126f55760405162461bcd60e51b815260206004820152602960248201527f44656c65676174696f6e5368617265426173652e6f6e6c7944656c656761746960448201527f6f6e4d616e6167657200000000000000000000000000000000000000000000006064820152608401610dda565b60ca546001600160a01b038481169116146127785760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e5368617265426173652e6465706f7369743a2043616e60448201527f206f6e6c79206465706f73697420756e6465726c79696e67546f6b656e0000006064820152608401610dda565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce56700000000000000000000000000000000000000000000000000000000179052905160009182916001600160a01b038716916127e991615e6e565b6000604051808303816000865af19150503d8060008114612826576040519150601f19603f3d011682016040523d82523d6000602084013e61282b565b606091505b5091509150816128a35760405162461bcd60e51b815260206004820152602c60248201527f756e6465726c79696e67546f6b656e2068617665206e6f206d6574686f64207760448201527f69746820646563696d616c7300000000000000000000000000000000000000006064820152608401610dda565b60006128ae82615e8a565b90506128bb81600a615f92565b6128c6906001615e14565b8510156129155760405162461bcd60e51b815260206004820152601560248201527f616d6f756e74206d757374206774203120756e697400000000000000000000006044820152606401610dda565b6000856129206144d1565b61292a9190615f9e565b9050801580612939575060cb54155b1561294657859450612962565b8060cb54876129559190615e14565b61295f9190615e33565b94505b8460cb60008282546129749190615fb5565b9091555050604080516001600160a01b03808b168252891660208201529081018790527f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060600160405180910390a1505050505b9392505050565b600061197f8261365a565b600061197f610bbc83613341565b33600090815260d76020526040902054612a6b5760405162461bcd60e51b815260206004820152602660248201527f6d73672073656e646572206d757374207265717565737420776974686472617760448201527f20666972737400000000000000000000000000000000000000000000000000006064820152608401610dda565b33600081815260d760205260408082205460cf5491517f63f1dcce000000000000000000000000000000000000000000000000000000008152600481018290526024810194909452604484019290925290916001600160a01b03909116906363f1dcce906064016121f6565b612b1682828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061461d92505050565b6001600160a01b0316336001600160a01b031614612b765760405162461bcd60e51b815260206004820152601460248201527f7075626c6963206b6579206e6f74206d617463680000000000000000000000006044820152606401610dda565b60d0546040517f11a38c850000000000000000000000000000000000000000000000000000000081523060048201523360248201526001600160a01b03909116906311a38c8590604401600060405180830381600087803b158015612bda57600080fd5b505af1158015612bee573d6000803e3d6000fd5b505033600090815260d160205260409020610575925090508383615069565b60cf546040517fb0eeb55e0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152306024830152600092169063b0eeb55e90604401602060405180830381600087803b158015612c7457600080fd5b505af1158015612c88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190615b00565b612cb461404b565b6001600160a01b038116612d0a5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610dda565b60dd80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b606060405180608001604052806048815260200161619c60489139905090565b60d0546040517f438bb7e50000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301523360248301529091169063438bb7e5906044016121f6565b60cc546001600160a01b03163314612e3a5760405162461bcd60e51b815260206004820152602960248201527f44656c65676174696f6e5368617265426173652e6f6e6c7944656c656761746960448201527f6f6e4d616e6167657200000000000000000000000000000000000000000000006064820152608401610dda565b815160018114612e8c5760405162461bcd60e51b815260206004820152601760248201527f64656c65676174696f6e206f6e6c7920666f72207473730000000000000000006044820152606401610dda565b8151600114612edd5760405162461bcd60e51b815260206004820152601d60248201527f64656c65676174696f6e207368617265206f6e6c7920666f72207473730000006044820152606401610dda565b306001600160a01b031683600081518110612efa57612efa615a87565b60200260200101516001600160a01b031614612f585760405162461bcd60e51b815260206004820152601960248201527f6d757374207573652063757272656e7420636f6e7472616374000000000000006044820152606401610dda565b81600081518110612f6b57612f6b615a87565b602002602001015160cf60009054906101000a90046001600160a01b03166001600160a01b03166305579ccc8786600081518110612fab57612fab615a87565b60200260200101516040518363ffffffff1660e01b8152600401612fe59291906001600160a01b0392831681529116602082015260400190565b60206040518083038186803b158015612ffd57600080fd5b505afa158015613011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130359190615b22565b1415611fba576001600160a01b038416600090815260d960209081526040808320805482518185028101850190935280835291929091908301828280156130a557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613087575b5050505050905060005b815181101561321557866001600160a01b03168282815181106130d4576130d4615a87565b60200260200101516001600160a01b03161415613203576001600160a01b038616600090815260d960205260409020825161311190600190615f9e565b8154811061312157613121615a87565b60009182526020808320909101546001600160a01b03898116845260d9909252604090922080549190921691908390811061315e5761315e615a87565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03948516179055918816815260d9909152604090208054806131b0576131b0615fcd565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff1990811690915593019093556001600160a01b038a16815260da9092526040909120805490911690555b8061320d81615ae5565b9150506130af565b50505050505050565b6132266150fb565b60408051808201918290529060d39060029082845b81548152602001906001019080831161323b575050505050905090565b60cf5460ca546040517f1abeb0d90000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391821660248201526044810184905233606482015260009283921690631abeb0d990608401602060405180830381600087803b1580156132d157600080fd5b505af11580156132e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c99190615b22565b60d9602052816000526040600020818154811061332557600080fd5b6000918252602090912001546001600160a01b03169150829050565b60c9546040517f9cb600ba0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301523060248301526000921690639cb600ba9060440160206040518083038186803b1580156133a657600080fd5b505afa1580156133ba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190615b22565b6133e66145ca565b60c9546001600160a01b031633146134665760405162461bcd60e51b815260206004820152602960248201527f44656c65676174696f6e5368617265426173652e6f6e6c7944656c656761746960448201527f6f6e4d616e6167657200000000000000000000000000000000000000000000006064820152608401610dda565b60ca546001600160a01b0383811691161461350f5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e5368617265426173652e77697468647261773a20436160448201527f6e206f6e6c792077697468647261772074686520737472617465677920746f6b60648201527f656e000000000000000000000000000000000000000000000000000000000000608482015260a401610dda565b60cb548111156135ad5760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e5368617265426173652e77697468647261773a20616d60448201527f6f756e74536861726573206d757374206265206c657373207468616e206f722060648201527f657175616c20746f20746f74616c536861726573000000000000000000000000608482015260a401610dda565b60cb80548281039091556000828214156135d0576135c96144d1565b90506135f1565b81836135da6144d1565b6135e49190615e14565b6135ee9190615e33565b90505b60ca54613608906001600160a01b0316868361467c565b604080516001600160a01b038088168252861660208201529081018290527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060600160405180910390a15050505050565b6000806136656144d1565b9050801580613674575060cb54155b15613680575090919050565b8060cb548461368f9190615e14565b6129c99190615e33565b50919050565b60d381600281106136af57600080fd5b0154905081565b6136be61404b565b6001600160a01b03811661373a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610dda565b6137438161456b565b50565b600061197f82612635565b336001600160a01b038316146137cf5760405162461bcd60e51b815260206004820152602860248201527f6d73672073656e64657220697320646966662077697468206f70657261746f7260448201527f20616464726573730000000000000000000000000000000000000000000000006064820152608401610dda565b60cc546040517f6d70f7ae0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636d70f7ae9060240160206040518083038186803b15801561382b57600080fd5b505afa15801561383f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138639190615b00565b6138d55760405162461bcd60e51b815260206004820152602560248201527f6d73672073656e646572206973206e6f742072656769737465726564206f706560448201527f7261746f720000000000000000000000000000000000000000000000000000006064820152608401610dda565b6001600160a01b03818116600090815260dc6020526040902054161561393d5760405162461bcd60e51b815260206004820152601960248201527f74686520636c61696d657220686173206265656e2075736564000000000000006044820152606401610dda565b6001600160a01b03828116600090815260db602052604090205416156139a0576001600160a01b03808316600090815260db6020908152604080832054909316825260dc905220805473ffffffffffffffffffffffffffffffffffffffff191690555b6001600160a01b03828116600081815260db60209081526040808320805495871673ffffffffffffffffffffffffffffffffffffffff19968716811790915580845260dc8352928190208054909516841790945583516024810193909352604480840192909252835180840390920182526064909201909252810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff5cf673b00000000000000000000000000000000000000000000000000000000179052610575734200000000000000000000000000000000000020621e8480836146fc565b33600090815260d76020526040902054613b025760405162461bcd60e51b8152602060048201526024808201527f6d73672073656e64657220646964206e6f74207265717565737420776974686460448201527f72617773000000000000000000000000000000000000000000000000000000006064820152608401610dda565b33600090815260d8602090815260408083208151815460e09481028201850190935260c08101838152909391928492849190840182828015613b6d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613b4f575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613bcf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613bb1575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015613c2757602002820191906000526020600020905b815481526020019060010190808311613c13575b505050918352505060038201546001600160a01b0390811660208084019190915260408051808201825260048087015480861683527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff169382019390935281850152600590940154821660609093019290925260cf5492517f863111ac000000000000000000000000000000000000000000000000000000008152939450919091169163863111ac91613ce59133918691600191016160a9565b600060405180830381600087803b158015613cff57600080fd5b505af1158015613d13573d6000803e3d6000fd5b505033600090815260d76020908152604080832083905560d8909152812092509050613d3f8282614fa2565b613d4d600183016000614fa2565b613d5b600283016000614fa2565b5060038101805473ffffffffffffffffffffffffffffffffffffffff199081169091556000600483015560059091018054909116905550565b33600090815260d76020526040812054613e155760405162461bcd60e51b8152602060048201526024808201527f6d73672073656e64657220646964206e6f74207265717565737420776974686460448201527f72617773000000000000000000000000000000000000000000000000000000006064820152608401610dda565b33600090815260d8602090815260408083208151815460e09481028201850190935260c08101838152909391928492849190840182828015613e8057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e62575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613ee257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613ec4575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015613f3a57602002820191906000526020600020905b815481526020019060010190808311613f26575b505050918352505060038201546001600160a01b0390811660208084019190915260408051808201825260048087015480861683527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff169382019390935281850152600590940154821660609093019290925260c95492517f5350262e0000000000000000000000000000000000000000000000000000000081529394509190911691635350262e91613ff3918591016160dd565b602060405180830381600087803b15801561400d57600080fd5b505af1158015614021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140459190615b00565b91505090565b6033546001600160a01b03163314610c1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dda565b600054610100900460ff166141225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610dda565b610c1f614777565b600054610100900460ff166141a75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610dda565b610c1f6147fd565b60006bffffffffffffffffffffffff8211156142335760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610dda565b5090565b60dd5460ff166142895760405162461bcd60e51b815260206004820152601d60248201527f68617665206e6f74207365742074686520736c61736820616d6f756e740000006044820152606401610dda565b6020808201516001600160a01b0316600090815260d19091526040812080546142b19061580b565b80601f01602080910402602001604051908101604052809291908181526020018280546142dd9061580b565b801561432a5780601f106142ff5761010080835404028352916020019161432a565b820191906000526020600020905b81548152906001019060200180831161430d57829003601f168201915b509394506000935061433b92505050565b8260600151600181111561435157614351615a58565b14156143e15760ce546040517f254ff9810000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063254ff981906143a09084906004016151da565b600060405180830381600087803b1580156143ba57600080fd5b505af11580156143ce573d6000803e3d6000fd5b505050506109c482602001516000614881565b6001826060015160018111156143f9576143f9615a58565b14156144895760ce546040517f254ff9810000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063254ff981906144489084906004016151da565b600060405180830381600087803b15801561446257600080fd5b505af1158015614476573d6000803e3d6000fd5b505050506109c482602001516001614881565b60405162461bcd60e51b815260206004820152601560248201527f657272207479706520666f7220736c617368696e6700000000000000000000006044820152606401610dda565b60ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561452e57600080fd5b505afa158015614542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145669190615b22565b905090565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60975460ff1615610c1f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610dda565b600081516040146146705760405162461bcd60e51b815260206004820152601f60248201527f7075626c6963206b6579206c656e677468206d757374203634206279746573006044820152606401610dda565b50805160209091012090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610575908490614d2e565b60cd546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90614749908690859087906004016160f0565b600060405180830381600087803b15801561476357600080fd5b505af1158015613215573d6000803e3d6000fd5b600054610100900460ff166147f45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610dda565b610c1f3361456b565b600054610100900460ff1661487a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610dda565b6001606555565b60008061488c6144d1565b905060d383600281106148a1576148a1615a87565b015460cb5460cc546040517f778e55f30000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301523060248301528592169063778e55f39060440160206040518083038186803b15801561490a57600080fd5b505afa15801561491e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149429190615b22565b61494c9190615e14565b6149569190615e33565b10156149a45760405162461bcd60e51b815260206004820152601a60248201527f646f206e6f74206861766520656e6f75676874207368617265730000000000006044820152606401610dda565b8060cb5460d385600281106149bb576149bb615a87565b01546149c79190615e14565b6149d19190615e33565b60cc546040517f778e55f30000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301523060248301529294506000929091169063778e55f39060440160206040518083038186803b158015614a3b57600080fd5b505afa158015614a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a739190615b22565b60408051600180825281830190925291925060009190602080830190803683370190505090503081600081518110614aad57614aad615a87565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050600081600081518110614aff57614aff615a87565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337505060ca5482519293506001600160a01b031691839150600090614b4e57614b4e615a87565b6001600160a01b03928316602091820292909201810191909152908916600090815260d9825260408082208054825181860281018601909352808352929391929091830182828015614bc957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614bab575b5050505050905060005b8151811015614d22576000614c00838381518110614bf357614bf3615a87565b6020026020010151613341565b604080516001808252818301909252919250600091906020808301908036833701905050905087614c31838c615e14565b614c3b9190615e33565b81600081518110614c4e57614c4e615a87565b602090810291909101015260cf5484516001600160a01b03909116906306f1f68490869086908110614c8257614c82615a87565b602090810291909101015160d6546040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152614cdb92916001600160a01b0316908c908b908d908990600401616128565b600060405180830381600087803b158015614cf557600080fd5b505af1158015614d09573d6000803e3d6000fd5b5050505050508080614d1a90615ae5565b915050614bd3565b50505050505050505050565b6000614d83826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614e139092919063ffffffff16565b8051909150156105755780806020019051810190614da19190615b00565b6105755760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610dda565b6060614e228484600085614e2a565b949350505050565b606082471015614ea25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610dda565b843b614ef05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dda565b600080866001600160a01b03168587604051614f0c9190615e6e565b60006040518083038185875af1925050503d8060008114614f49576040519150601f19603f3d011682016040523d82523d6000602084013e614f4e565b606091505b5091509150614f5e828286614f69565b979650505050505050565b60608315614f785750816129c9565b825115614f885782518084602001fd5b8160405162461bcd60e51b8152600401610dda91906151da565b50805460008255906000526020600020908101906137439190615119565b828054828255906000526020600020908101928215615022579160200282015b82811115615022578251825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116178255602090920191600190910190614fe0565b50614233929150615119565b828054828255906000526020600020908101928215615022579160200282015b8281111561502257825182559160200191906001019061504e565b8280546150759061580b565b90600052602060002090601f0160209004810192826150975760008555615022565b82601f106150ce578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555615022565b82800160010185558215615022579182015b828111156150225782358255916020019190600101906150e0565b60405180604001604052806002906020820280368337509192915050565b5b80821115614233576000815560010161511a565b6001600160a01b038116811461374357600080fd5b60006020828403121561515557600080fd5b81356129c98161512e565b60005b8381101561517b578181015183820152602001615163565b8381111561518a576000848401525b50505050565b600081518084526151a8816020860160208601615160565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006129c96020830184615190565b6000604082840312156151ff57600080fd5b8260408301111561369957600080fd5b600080600080600080600060e0888a03121561522a57600080fd5b87356152358161512e565b965060208801356152458161512e565b955060408801356152558161512e565b945060608801356152658161512e565b935060808801356152758161512e565b925060a08801356152858161512e565b915060c08801356152958161512e565b8091505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156152f7576152f76152a5565b60405290565b6040516080810167ffffffffffffffff811182821017156152f7576152f76152a5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615367576153676152a5565b604052919050565b600067ffffffffffffffff821115615389576153896152a5565b5060051b60200190565b600082601f8301126153a457600080fd5b813560206153b96153b48361536f565b615320565b82815260059290921b840181019181810190868411156153d857600080fd5b8286015b848110156153fc5780356153ef8161512e565b83529183019183016153dc565b509695505050505050565b600082601f83011261541857600080fd5b813560206154286153b48361536f565b82815260059290921b8401810191818101908684111561544757600080fd5b8286015b848110156153fc578035835291830191830161544b565b60008060006060848603121561547757600080fd5b83356154828161512e565b9250602084013567ffffffffffffffff8082111561549f57600080fd5b6154ab87838801615393565b935060408601359150808211156154c157600080fd5b506154ce86828701615407565b9150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156155195783516001600160a01b0316835292840192918401916001016154f4565b50909695505050505050565b60006020828403121561553757600080fd5b5035919050565b60008083601f84011261555057600080fd5b50813567ffffffffffffffff81111561556857600080fd5b60208301915083602082850101111561558057600080fd5b9250929050565b6000806000806040858703121561559d57600080fd5b843567ffffffffffffffff808211156155b557600080fd5b6155c18883890161553e565b909650945060208701359150808211156155da57600080fd5b506155e78782880161553e565b95989497509550505050565b6000806000806080858703121561560957600080fd5b84356156148161512e565b935060208501356156248161512e565b9250604085013567ffffffffffffffff8082111561564157600080fd5b61564d88838901615393565b9350606087013591508082111561566357600080fd5b5061567087828801615407565b91505092959194509250565b6001600160a01b03848116825260808201906156bc602084018680516001600160a01b031682526020908101516bffffffffffffffffffffffff16910152565b808416606084015250949350505050565b600080604083850312156156e057600080fd5b8235915060208301356156f28161512e565b809150509250929050565b60008060006060848603121561571257600080fd5b833561571d8161512e565b9250602084013561572d8161512e565b929592945050506040919091013590565b6000806020838503121561575157600080fd5b823567ffffffffffffffff81111561576857600080fd5b6157748582860161553e565b90969095509350505050565b60408101818360005b60028110156157a8578151835260209283019290910190600101615789565b50505092915050565b600080604083850312156157c457600080fd5b82356157cf8161512e565b946020939093013593505050565b600080604083850312156157f057600080fd5b82356157fb8161512e565b915060208301356156f28161512e565b600181811c9082168061581f57607f821691505b60208210811415613699577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208083526000845481600182811c91508083168061587b57607f831692505b8583108114156158b2577f4e487b710000000000000000000000000000000000000000000000000000000085526022600452602485fd5b8786018381526020018180156158cf57600181146158fe57615929565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861682528782019650615929565b60008b81526020902060005b868110156159235781548482015290850190890161590a565b83019750505b50949998505050505050505050565b80516126668161512e565b6002811061374357600080fd5b805161266681615943565b6000602080838503121561596e57600080fd5b825167ffffffffffffffff8082111561598657600080fd5b908401906060828703121561599a57600080fd5b6159a26152d4565b8251828111156159b157600080fd5b8301601f810188136159c257600080fd5b8051838111156159d4576159d46152a5565b615a04867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615320565b93508084528886828401011115615a1a57600080fd5b615a2981878601888501615160565b5050818152615a39848401615938565b84820152615a4960408401615950565b60408201529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000600019821415615af957615af9615ab6565b5060010190565b600060208284031215615b1257600080fd5b815180151581146129c957600080fd5b600060208284031215615b3457600080fd5b5051919050565b600060208284031215615b4d57600080fd5b81516129c98161512e565b600081518084526020808501945080840160005b83811015615b8857815187529582019590820190600101615b6c565b509495945050505050565b600081518084526020808501945080840160005b83811015615b885781516001600160a01b031687529582019590820190600101615ba7565b6001600160a01b038716815260e060208201526000615bee60e0830188615b58565b8281036040840152615c008188615b93565b90508281036060840152615c148187615b93565b90508281036080840152615c288186615b58565b84516001600160a01b031660a085015260208501516bffffffffffffffffffffffff1660c08501529150614f5e9050565b803561266681615943565b60006020808385031215615c7757600080fd5b823567ffffffffffffffff80821115615c8f57600080fd5b9084019060808287031215615ca357600080fd5b615cab6152fd565b8235815283830135615cbc8161512e565b81850152604083013582811115615cd257600080fd5b83019150601f82018713615ce557600080fd5b8135615cf36153b48261536f565b81815260059190911b83018501908581019089831115615d1257600080fd5b938601935b82851015615d39578435615d2a8161512e565b82529386019390860190615d17565b604084015250615d4d905060608401615c59565b60608201529695505050505050565b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b6001600160a01b03831681526040810160028310615e07577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260208301529392505050565b6000816000190483118215151615615e2e57615e2e615ab6565b500290565b600082615e69577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251615e80818460208701615160565b9190910192915050565b805160208083015191908110156136995760001960209190910360031b1b16919050565b600181815b80851115615ee9578160001904821115615ecf57615ecf615ab6565b80851615615edc57918102915b93841c9390800290615eb3565b509250929050565b600082615f005750600161197f565b81615f0d5750600061197f565b8160018114615f235760028114615f2d57615f49565b600191505061197f565b60ff841115615f3e57615f3e615ab6565b50506001821b61197f565b5060208310610133831016604e8410600b8410161715615f6c575081810a61197f565b615f768383615eae565b8060001904821115615f8a57615f8a615ab6565b029392505050565b60006129c98383615ef1565b600082821015615fb057615fb0615ab6565b500390565b60008219821115615fc857615fc8615ab6565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000815160e0845261601160e0850182615b93565b90506020830151848203602086015261602a8282615b93565b915050604083015184820360408601526160448282615b58565b91505060608301516001600160a01b03808216606087015260808501519150616091608087018380516001600160a01b031682526020908101516bffffffffffffffffffffffff16910152565b8060a08601511660c087015250508091505092915050565b6001600160a01b03841681526060602082015260006160cb6060830185615ffc565b90508215156040830152949350505050565b6020815260006129c96020830184615ffc565b6001600160a01b03841681526060602082015260006161126060830185615190565b905063ffffffff83166040830152949350505050565b60006001600160a01b03808916835280881660208401525060c0604083015261615460c0830187615b93565b82810360608401526161668187615b93565b9050828103608084015261617a8186615b58565b905082810360a084015261618e8185615b58565b999850505050505050505056fe4d616e746c6520746f6b656e2044656c65676174696f6e536861726520696d706c656d656e746174696f6e20666f72207375626d6f64756c657320617320616e206578616d706c65a2646970667358221220babc5b908276a6ea84633e5e9d0b0312fdd1525c4993ab47bd7d70d67af1eaf264736f6c63430008090033",
  "deployedBytecode": "0x6080604052600436106103ad5760003560e01c80638f6a6240116101e7578063c8b6cbf71161010d578063ea4d3c9b116100a0578063f47c83c51161006f578063f47c83c51461055a578063f5cf673b14610bc1578063f756fa2114610be1578063fee17dd514610bf657600080fd5b8063ea4d3c9b14610b41578063f2bd740014610b61578063f2fde38b14610b81578063f3e7387514610ba157600080fd5b8063d9caed12116100dc578063d9caed1214610aab578063df5cf72314610acb578063e3dae51c14610aeb578063ea0c8c2f14610b0b57600080fd5b8063c8b6cbf714610a15578063ce7c2ac214610a35578063d323041d14610a55578063d58ecaaa14610a7557600080fd5b8063ab5921e111610185578063b6b55f2511610154578063b6b55f2514610996578063bbb26c63146109b6578063c3a82e11146109c8578063c665c35a146109f557600080fd5b8063ab5921e11461091f578063ac637c7a14610934578063b1bbdc4114610954578063b3fc1cb21461097457600080fd5b8063965a303f116101c1578063965a303f1461089a5780639c211730146108ba578063a458413a146108df578063a5424a55146108ff57600080fd5b80638f6a62401461084557806390ed6bf41461086557806395cf5bea1461087a57600080fd5b80635716d17c116102d7578063740efec31161026a5780638340f549116102395780638340f549146107b15780638c871019146107d15780638d23fc61146107f15780638da5cb5b1461082757600080fd5b8063740efec31461069e5780637a8b2637146106b35780637a9262a2146106d3578063829673ef1461076b57600080fd5b806360ac5166116102a657806360ac5166146106345780636dd300b5146106545780636eae5b1114610674578063715018a61461068957600080fd5b80635716d17c146105bc57806357b0f05f146105dc5780635887c33c146105fc5780635c975abb1461061c57600080fd5b8063358764761161034f5780633ccfd60b1161031e5780633ccfd60b14610545578063412cdd2c1461055a578063490ab9d61461057a578063553ca5f81461059c57600080fd5b806335876476146104c15780633a98ef39146104e15780633c86a42f146105055780633cb747bf1461052557600080fd5b80632495a5991161038b5780632495a5991461042f57806326a4e8d214610467578063289087ba1461048757806329f13431146104a157600080fd5b8063111b8c02146103b257806313e7c9d8146103c957806314bfb527146103ff575b600080fd5b3480156103be57600080fd5b506103c7610c0b565b005b3480156103d557600080fd5b506103e96103e4366004615143565b610c21565b6040516103f691906151da565b60405180910390f35b34801561040b57600080fd5b5061041f61041a366004615143565b610cbb565b60405190151581526020016103f6565b34801561043b57600080fd5b5060ca5461044f906001600160a01b031681565b6040516001600160a01b0390911681526020016103f6565b34801561047357600080fd5b506103c7610482366004615143565b610e03565b34801561049357600080fd5b5060dd5461041f9060ff1681565b3480156104ad57600080fd5b506103c76104bc3660046151ed565b610e90565b3480156104cd57600080fd5b506103c76104dc36600461520f565b610ff1565b3480156104ed57600080fd5b506104f760cb5481565b6040519081526020016103f6565b34801561051157600080fd5b506103c7610520366004615143565b611237565b34801561053157600080fd5b5060cd5461044f906001600160a01b031681565b34801561055157600080fd5b506103c76112c4565b34801561056657600080fd5b506103c7610575366004615462565b505050565b34801561058657600080fd5b5061058f61190f565b6040516103f691906154d8565b3480156105a857600080fd5b506104f76105b7366004615143565b611971565b3480156105c857600080fd5b5060cf5461044f906001600160a01b031681565b3480156105e857600080fd5b5061044f6105f7366004615525565b611985565b34801561060857600080fd5b506103c7610617366004615587565b6119af565b34801561062857600080fd5b5060975460ff1661041f565b34801561064057600080fd5b506103c761064f366004615143565b611d12565b34801561066057600080fd5b506103c761066f3660046155f3565b611d9f565b34801561068057600080fd5b506103c7611fc1565b34801561069557600080fd5b506103c7612224565b3480156106aa57600080fd5b506103c7612236565b3480156106bf57600080fd5b506104f76106ce366004615525565b612635565b3480156106df57600080fd5b5061075c6106ee366004615143565b60d8602090815260009182526040918290206003810154835180850190945260048201546001600160a01b038082168652740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169385019390935260059091015490821692911683565b6040516103f69392919061567c565b34801561077757600080fd5b5061041f6107863660046156cd565b600091825260d5602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156107bd57600080fd5b506104f76107cc3660046156fd565b61266b565b3480156107dd57600080fd5b506104f76107ec366004615525565b6129d0565b3480156107fd57600080fd5b5061044f61080c366004615143565b60da602052600090815260409020546001600160a01b031681565b34801561083357600080fd5b506033546001600160a01b031661044f565b34801561085157600080fd5b506104f7610860366004615143565b6129db565b34801561087157600080fd5b506103c76129e9565b34801561088657600080fd5b506103c761089536600461573e565b612ad7565b3480156108a657600080fd5b5060d05461044f906001600160a01b031681565b3480156108c657600080fd5b5060dd5461044f9061010090046001600160a01b031681565b3480156108eb57600080fd5b5061041f6108fa366004615143565b612c0d565b34801561090b57600080fd5b506103c761091a366004615143565b612cac565b34801561092b57600080fd5b506103e9612d49565b34801561094057600080fd5b506103c761094f366004615143565b612d69565b34801561096057600080fd5b506103c761096f3660046155f3565b612dba565b34801561098057600080fd5b5061098961321e565b6040516103f69190615780565b3480156109a257600080fd5b506104f76109b1366004615525565b613258565b6103c76109c43660046157b1565b5050565b3480156109d457600080fd5b506104f76109e3366004615143565b60d76020526000908152604090205481565b348015610a0157600080fd5b5060d65461044f906001600160a01b031681565b348015610a2157600080fd5b5061044f610a303660046157b1565b613309565b348015610a4157600080fd5b506104f7610a50366004615143565b613341565b348015610a6157600080fd5b5060ce5461044f906001600160a01b031681565b348015610a8157600080fd5b5061044f610a90366004615143565b60db602052600090815260409020546001600160a01b031681565b348015610ab757600080fd5b506103c7610ac63660046156fd565b6133de565b348015610ad757600080fd5b5060cc5461044f906001600160a01b031681565b348015610af757600080fd5b506104f7610b06366004615525565b61365a565b348015610b1757600080fd5b5061044f610b26366004615143565b60dc602052600090815260409020546001600160a01b031681565b348015610b4d57600080fd5b5060c95461044f906001600160a01b031681565b348015610b6d57600080fd5b506104f7610b7c366004615525565b61369f565b348015610b8d57600080fd5b506103c7610b9c366004615143565b6136b6565b348015610bad57600080fd5b506104f7610bbc366004615525565b613746565b348015610bcd57600080fd5b506103c7610bdc3660046157dd565b613751565b348015610bed57600080fd5b506103c7613a81565b348015610c0257600080fd5b5061041f613d94565b610c1361404b565b610c1f60d26000614fa2565b565b60d16020526000908152604090208054610c3a9061580b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c669061580b565b8015610cb35780601f10610c8857610100808354040283529160200191610cb3565b820191906000526020600020905b815481529060010190602001808311610c9657829003601f168201915b505050505081565b60ce546001600160a01b03828116600090815260d1602052604080822090517f54bbb9140000000000000000000000000000000000000000000000000000000081529193849316916354bbb91491610d1591600401615859565b600060405180830381600087803b158015610d2f57600080fd5b505af1158015610d43573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d89919081019061595b565b805151909150604014610de35760405162461bcd60e51b815260206004820152601460248201527f747373206d656d626572206e6f7420657869737400000000000000000000000060448201526064015b60405180910390fd5b600181604001516001811115610dfb57610dfb615a58565b149392505050565b610e0b61404b565b6001600160a01b038116610e615760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610dda565b60ca805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e9861404b565b8035602082013511610f125760405162461bcd60e51b815260206004820152602b60248201527f696e76616c696420706172616d20736c617368416d6f756e742c20616e696d7560448201527f73203c3d20757074696d650000000000000000000000000000000000000000006064820152608401610dda565b60005b6002811015610fc2576000828260028110610f3257610f32615a87565b602002013511610f845760405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420616d6f756e740000000000000000000000000000000000006044820152606401610dda565b818160028110610f9657610f96615a87565b602002013560d38260028110610fae57610fae615a87565b015580610fba81615ae5565b915050610f15565b505060dd80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600054610100900460ff16158080156110115750600054600160ff909116105b8061102b5750303b15801561102b575060005460ff166001145b61109d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610dda565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156110fb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6111036140a5565b61110b61412a565b60ca80546001600160a01b03808b1673ffffffffffffffffffffffffffffffffffffffff199283161790925560ce80548a841690831617905560cf8054898416908316811790915560d08054898516908416811790915560c98054841690921790915560cc80548316909117905560cd805487841690831617905560d68054868416921691909117905560dd8054918416610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055801561122d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b61123f61404b565b6001600160a01b0381166112955760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610dda565b60d6805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60cc546040517f3e28391d0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690633e28391d9060240160206040518083038186803b15801561132057600080fd5b505afa158015611334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113589190615b00565b6113a45760405162461bcd60e51b815260206004820152600d60248201527f6e6f742064656c656761746f72000000000000000000000000000000000000006044820152606401610dda565b33600090815260d76020526040902054156114265760405162461bcd60e51b8152602060048201526024808201527f6d73672073656e64657220616c7265616479207265717565737420776974686460448201527f72617773000000000000000000000000000000000000000000000000000000006064820152608401610dda565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061145d5761145d615a87565b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050905030816000815181106114a0576114a0615a87565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337505060ca5482519293506001600160a01b0316918391506000906114fd576114fd615a87565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905061154333613341565b8160008151811061155657611556615a87565b602090810291909101015260cf546040517fa7c373bc0000000000000000000000000000000000000000000000000000000081523360048201526000916001600160a01b03169063a7c373bc9060240160206040518083038186803b1580156115be57600080fd5b505afa1580156115d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f69190615b22565b905060006040518060400160405280336001600160a01b0316815260200161161d846141af565b6bffffffffffffffffffffffff16905260cc546040517f65da12640000000000000000000000000000000000000000000000000000000081523360048201529192506000916001600160a01b03909116906365da12649060240160206040518083038186803b15801561168f57600080fd5b505afa1580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c79190615b3b565b6040805160c08101825288815260208082018990528183018890523360608301819052608083018790526001600160a01b03851660a0840152600090815260d882529290922081518051949550919384939192611728928492910190614fc0565b5060208281015180516117419260018501920190614fc0565b506040820151805161175d91600284019160209091019061502e565b5060608201516003820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff1991821617909155608084015180516020909101516bffffffffffffffffffffffff1674010000000000000000000000000000000000000000029083161760048085019190915560a09094015160059093018054938316939091169290921790915560cf546040517f529075a5000000000000000000000000000000000000000000000000000000008152600093919092169163529075a5916118389133918e918e918e918e918d9101615bcc565b602060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a9190615b22565b33600081815260d76020526040812083905588519293507f784199bc7528da846b1da87aeba29604de8f22a93e73379d5d1c7282fa3c727f928991906118d2576118d2615a87565b60200260200101516040516118fc9291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050505050505050565b606060d280548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b600061197f6106ce83613341565b92915050565b60d2818154811061199557600080fd5b6000918252602090912001546001600160a01b0316905081565b60026065541415611a025760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610dda565b600260655560dd5461010090046001600160a01b03163314611a8c5760405162461bcd60e51b815260206004820152603060248201527f5473735374616b696e67536c617368696e673a206d73672e73656e646572206960448201527f73206e6f74207473734d616e61676572000000000000000000000000000000006064820152608401610dda565b6000611a9a84860186615c64565b9050611aa98160200151610cbb565b15611af65760405162461bcd60e51b815260206004820152601760248201527f746865206e6f646520616c7265616479206a61696c65640000000000000000006044820152606401610dda565b8051600090815260d560209081526040808320828501516001600160a01b0316845290915290205460ff1615611b6e5760405162461bcd60e51b815260206004820152600f60248201527f616c726561647920736c617368656400000000000000000000000000000000006044820152606401610dda565b8051600090815260d560209081526040808320828501516001600160a01b03908116855292529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ce549151911690633231a7f090611bdc9088908890615d5c565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168252611c1e9187908790600401615d6c565b602060405180830381600087803b158015611c3857600080fd5b505af1158015611c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c709190615b00565b611cbc5760405162461bcd60e51b815260206004820152601c60248201527f7369676e6572206e6f74207473732067726f757020707562206b6579000000006044820152606401610dda565b611cc581614237565b7f9453459a6e9fa2069f1490c99cec15646afa157300f218a7f7840b23d09dbd3e81602001518260600151604051611cfe929190615dc0565b60405180910390a150506001606555505050565b611d1a61404b565b6001600160a01b038116611d705760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610dda565b60ce805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60cc546001600160a01b03163314611e1f5760405162461bcd60e51b815260206004820152602960248201527f44656c65676174696f6e5368617265426173652e6f6e6c7944656c656761746960448201527f6f6e4d616e6167657200000000000000000000000000000000000000000000006064820152608401610dda565b815160018114611e715760405162461bcd60e51b815260206004820152601760248201527f64656c65676174696f6e206f6e6c7920666f72207473730000000000000000006044820152606401610dda565b8151600114611ec25760405162461bcd60e51b815260206004820152601d60248201527f64656c65676174696f6e207368617265206f6e6c7920666f72207473730000006044820152606401610dda565b306001600160a01b031683600081518110611edf57611edf615a87565b60200260200101516001600160a01b031614611f3d5760405162461bcd60e51b815260206004820152601960248201527f6d757374207573652063757272656e7420636f6e7472616374000000000000006044820152606401610dda565b6001600160a01b03858116600090815260da602052604090205416611fba576001600160a01b03808616600081815260da602090815260408083208054958a1673ffffffffffffffffffffffffffffffffffffffff199687168117909155835260d982528220805460018101825590835291200180549092161790555b5050505050565b60dd5460ff166120135760405162461bcd60e51b815260206004820152601d60248201527f68617665206e6f74207365742074686520736c61736820616d6f756e740000006044820152606401610dda565b61201c33610cbb565b61208e5760405162461bcd60e51b815260206004820152603160248201527f416e20756e6a61696c6564207573657220646f65736e2774206e65656420746f60448201527f2063616c6c2074686973206d6574686f640000000000000000000000000000006064820152608401610dda565b60006120986144d1565b905060d36001015460cb5460cc546040517f778e55f300000000000000000000000000000000000000000000000000000000815233600482015230602482015284916001600160a01b03169063778e55f39060440160206040518083038186803b15801561210557600080fd5b505afa158015612119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213d9190615b22565b6121479190615e14565b6121519190615e33565b101561219f5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610dda565b60ce5433600090815260d160205260409081902090517f429ec49c0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163429ec49c916121f691600401615859565b600060405180830381600087803b15801561221057600080fd5b505af1158015611fba573d6000803e3d6000fd5b61222c61404b565b610c1f600061456b565b600260655414156122895760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610dda565b600260655560cc546040517f778e55f30000000000000000000000000000000000000000000000000000000081523360048201523060248201526000916001600160a01b03169063778e55f39060440160206040518083038186803b1580156122f157600080fd5b505afa158015612305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123299190615b22565b116123765760405162461bcd60e51b815260206004820152601360248201527f646f206e6f742068617665206465706f736974000000000000000000000000006044820152606401610dda565b60ce5433600090815260d160205260409081902090517f4866e2e00000000000000000000000000000000000000000000000000000000081526001600160a01b0390921691634866e2e0916123cd91600401615859565b602060405180830381600087803b1580156123e757600080fd5b505af11580156123fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241f9190615b00565b806124ce575060ce5433600090815260d160205260409081902090517fbcbc5fc60000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163bcbc5fc69161247c91600401615859565b602060405180830381600087803b15801561249657600080fd5b505af11580156124aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ce9190615b00565b6125405760405162461bcd60e51b815260206004820152602960248201527f6e6f742061742074686520696e6163746976652067726f7570206f722061637460448201527f6976652067726f757000000000000000000000000000000000000000000000006064820152608401610dda565b60005b60d2548110156125df57336001600160a01b031660d2828154811061256a5761256a615a87565b6000918252602090912001546001600160a01b031614156125cd5760405162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2071756974526571756573744c6973740000000000006044820152606401610dda565b806125d781615ae5565b915050612543565b5060d28054600181810183556000929092527ff2192e1030363415d7b4fb0406540a0060e8e2fc8982f3f32289379e11fa654601805473ffffffffffffffffffffffffffffffffffffffff191633179055606555565b600060cb5460001415612646575090565b60cb54826126526144d1565b61265c9190615e14565b61197f9190615e33565b919050565b60006126756145ca565b60c9546001600160a01b031633146126f55760405162461bcd60e51b815260206004820152602960248201527f44656c65676174696f6e5368617265426173652e6f6e6c7944656c656761746960448201527f6f6e4d616e6167657200000000000000000000000000000000000000000000006064820152608401610dda565b60ca546001600160a01b038481169116146127785760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e5368617265426173652e6465706f7369743a2043616e60448201527f206f6e6c79206465706f73697420756e6465726c79696e67546f6b656e0000006064820152608401610dda565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce56700000000000000000000000000000000000000000000000000000000179052905160009182916001600160a01b038716916127e991615e6e565b6000604051808303816000865af19150503d8060008114612826576040519150601f19603f3d011682016040523d82523d6000602084013e61282b565b606091505b5091509150816128a35760405162461bcd60e51b815260206004820152602c60248201527f756e6465726c79696e67546f6b656e2068617665206e6f206d6574686f64207760448201527f69746820646563696d616c7300000000000000000000000000000000000000006064820152608401610dda565b60006128ae82615e8a565b90506128bb81600a615f92565b6128c6906001615e14565b8510156129155760405162461bcd60e51b815260206004820152601560248201527f616d6f756e74206d757374206774203120756e697400000000000000000000006044820152606401610dda565b6000856129206144d1565b61292a9190615f9e565b9050801580612939575060cb54155b1561294657859450612962565b8060cb54876129559190615e14565b61295f9190615e33565b94505b8460cb60008282546129749190615fb5565b9091555050604080516001600160a01b03808b168252891660208201529081018790527f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060600160405180910390a1505050505b9392505050565b600061197f8261365a565b600061197f610bbc83613341565b33600090815260d76020526040902054612a6b5760405162461bcd60e51b815260206004820152602660248201527f6d73672073656e646572206d757374207265717565737420776974686472617760448201527f20666972737400000000000000000000000000000000000000000000000000006064820152608401610dda565b33600081815260d760205260408082205460cf5491517f63f1dcce000000000000000000000000000000000000000000000000000000008152600481018290526024810194909452604484019290925290916001600160a01b03909116906363f1dcce906064016121f6565b612b1682828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061461d92505050565b6001600160a01b0316336001600160a01b031614612b765760405162461bcd60e51b815260206004820152601460248201527f7075626c6963206b6579206e6f74206d617463680000000000000000000000006044820152606401610dda565b60d0546040517f11a38c850000000000000000000000000000000000000000000000000000000081523060048201523360248201526001600160a01b03909116906311a38c8590604401600060405180830381600087803b158015612bda57600080fd5b505af1158015612bee573d6000803e3d6000fd5b505033600090815260d160205260409020610575925090508383615069565b60cf546040517fb0eeb55e0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152306024830152600092169063b0eeb55e90604401602060405180830381600087803b158015612c7457600080fd5b505af1158015612c88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190615b00565b612cb461404b565b6001600160a01b038116612d0a5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610dda565b60dd80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b606060405180608001604052806048815260200161619c60489139905090565b60d0546040517f438bb7e50000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301523360248301529091169063438bb7e5906044016121f6565b60cc546001600160a01b03163314612e3a5760405162461bcd60e51b815260206004820152602960248201527f44656c65676174696f6e5368617265426173652e6f6e6c7944656c656761746960448201527f6f6e4d616e6167657200000000000000000000000000000000000000000000006064820152608401610dda565b815160018114612e8c5760405162461bcd60e51b815260206004820152601760248201527f64656c65676174696f6e206f6e6c7920666f72207473730000000000000000006044820152606401610dda565b8151600114612edd5760405162461bcd60e51b815260206004820152601d60248201527f64656c65676174696f6e207368617265206f6e6c7920666f72207473730000006044820152606401610dda565b306001600160a01b031683600081518110612efa57612efa615a87565b60200260200101516001600160a01b031614612f585760405162461bcd60e51b815260206004820152601960248201527f6d757374207573652063757272656e7420636f6e7472616374000000000000006044820152606401610dda565b81600081518110612f6b57612f6b615a87565b602002602001015160cf60009054906101000a90046001600160a01b03166001600160a01b03166305579ccc8786600081518110612fab57612fab615a87565b60200260200101516040518363ffffffff1660e01b8152600401612fe59291906001600160a01b0392831681529116602082015260400190565b60206040518083038186803b158015612ffd57600080fd5b505afa158015613011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130359190615b22565b1415611fba576001600160a01b038416600090815260d960209081526040808320805482518185028101850190935280835291929091908301828280156130a557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613087575b5050505050905060005b815181101561321557866001600160a01b03168282815181106130d4576130d4615a87565b60200260200101516001600160a01b03161415613203576001600160a01b038616600090815260d960205260409020825161311190600190615f9e565b8154811061312157613121615a87565b60009182526020808320909101546001600160a01b03898116845260d9909252604090922080549190921691908390811061315e5761315e615a87565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03948516179055918816815260d9909152604090208054806131b0576131b0615fcd565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff1990811690915593019093556001600160a01b038a16815260da9092526040909120805490911690555b8061320d81615ae5565b9150506130af565b50505050505050565b6132266150fb565b60408051808201918290529060d39060029082845b81548152602001906001019080831161323b575050505050905090565b60cf5460ca546040517f1abeb0d90000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391821660248201526044810184905233606482015260009283921690631abeb0d990608401602060405180830381600087803b1580156132d157600080fd5b505af11580156132e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c99190615b22565b60d9602052816000526040600020818154811061332557600080fd5b6000918252602090912001546001600160a01b03169150829050565b60c9546040517f9cb600ba0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301523060248301526000921690639cb600ba9060440160206040518083038186803b1580156133a657600080fd5b505afa1580156133ba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190615b22565b6133e66145ca565b60c9546001600160a01b031633146134665760405162461bcd60e51b815260206004820152602960248201527f44656c65676174696f6e5368617265426173652e6f6e6c7944656c656761746960448201527f6f6e4d616e6167657200000000000000000000000000000000000000000000006064820152608401610dda565b60ca546001600160a01b0383811691161461350f5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e5368617265426173652e77697468647261773a20436160448201527f6e206f6e6c792077697468647261772074686520737472617465677920746f6b60648201527f656e000000000000000000000000000000000000000000000000000000000000608482015260a401610dda565b60cb548111156135ad5760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e5368617265426173652e77697468647261773a20616d60448201527f6f756e74536861726573206d757374206265206c657373207468616e206f722060648201527f657175616c20746f20746f74616c536861726573000000000000000000000000608482015260a401610dda565b60cb80548281039091556000828214156135d0576135c96144d1565b90506135f1565b81836135da6144d1565b6135e49190615e14565b6135ee9190615e33565b90505b60ca54613608906001600160a01b0316868361467c565b604080516001600160a01b038088168252861660208201529081018290527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060600160405180910390a15050505050565b6000806136656144d1565b9050801580613674575060cb54155b15613680575090919050565b8060cb548461368f9190615e14565b6129c99190615e33565b50919050565b60d381600281106136af57600080fd5b0154905081565b6136be61404b565b6001600160a01b03811661373a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610dda565b6137438161456b565b50565b600061197f82612635565b336001600160a01b038316146137cf5760405162461bcd60e51b815260206004820152602860248201527f6d73672073656e64657220697320646966662077697468206f70657261746f7260448201527f20616464726573730000000000000000000000000000000000000000000000006064820152608401610dda565b60cc546040517f6d70f7ae0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636d70f7ae9060240160206040518083038186803b15801561382b57600080fd5b505afa15801561383f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138639190615b00565b6138d55760405162461bcd60e51b815260206004820152602560248201527f6d73672073656e646572206973206e6f742072656769737465726564206f706560448201527f7261746f720000000000000000000000000000000000000000000000000000006064820152608401610dda565b6001600160a01b03818116600090815260dc6020526040902054161561393d5760405162461bcd60e51b815260206004820152601960248201527f74686520636c61696d657220686173206265656e2075736564000000000000006044820152606401610dda565b6001600160a01b03828116600090815260db602052604090205416156139a0576001600160a01b03808316600090815260db6020908152604080832054909316825260dc905220805473ffffffffffffffffffffffffffffffffffffffff191690555b6001600160a01b03828116600081815260db60209081526040808320805495871673ffffffffffffffffffffffffffffffffffffffff19968716811790915580845260dc8352928190208054909516841790945583516024810193909352604480840192909252835180840390920182526064909201909252810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff5cf673b00000000000000000000000000000000000000000000000000000000179052610575734200000000000000000000000000000000000020621e8480836146fc565b33600090815260d76020526040902054613b025760405162461bcd60e51b8152602060048201526024808201527f6d73672073656e64657220646964206e6f74207265717565737420776974686460448201527f72617773000000000000000000000000000000000000000000000000000000006064820152608401610dda565b33600090815260d8602090815260408083208151815460e09481028201850190935260c08101838152909391928492849190840182828015613b6d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613b4f575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613bcf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613bb1575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015613c2757602002820191906000526020600020905b815481526020019060010190808311613c13575b505050918352505060038201546001600160a01b0390811660208084019190915260408051808201825260048087015480861683527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff169382019390935281850152600590940154821660609093019290925260cf5492517f863111ac000000000000000000000000000000000000000000000000000000008152939450919091169163863111ac91613ce59133918691600191016160a9565b600060405180830381600087803b158015613cff57600080fd5b505af1158015613d13573d6000803e3d6000fd5b505033600090815260d76020908152604080832083905560d8909152812092509050613d3f8282614fa2565b613d4d600183016000614fa2565b613d5b600283016000614fa2565b5060038101805473ffffffffffffffffffffffffffffffffffffffff199081169091556000600483015560059091018054909116905550565b33600090815260d76020526040812054613e155760405162461bcd60e51b8152602060048201526024808201527f6d73672073656e64657220646964206e6f74207265717565737420776974686460448201527f72617773000000000000000000000000000000000000000000000000000000006064820152608401610dda565b33600090815260d8602090815260408083208151815460e09481028201850190935260c08101838152909391928492849190840182828015613e8057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e62575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613ee257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613ec4575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015613f3a57602002820191906000526020600020905b815481526020019060010190808311613f26575b505050918352505060038201546001600160a01b0390811660208084019190915260408051808201825260048087015480861683527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff169382019390935281850152600590940154821660609093019290925260c95492517f5350262e0000000000000000000000000000000000000000000000000000000081529394509190911691635350262e91613ff3918591016160dd565b602060405180830381600087803b15801561400d57600080fd5b505af1158015614021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140459190615b00565b91505090565b6033546001600160a01b03163314610c1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dda565b600054610100900460ff166141225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610dda565b610c1f614777565b600054610100900460ff166141a75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610dda565b610c1f6147fd565b60006bffffffffffffffffffffffff8211156142335760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610dda565b5090565b60dd5460ff166142895760405162461bcd60e51b815260206004820152601d60248201527f68617665206e6f74207365742074686520736c61736820616d6f756e740000006044820152606401610dda565b6020808201516001600160a01b0316600090815260d19091526040812080546142b19061580b565b80601f01602080910402602001604051908101604052809291908181526020018280546142dd9061580b565b801561432a5780601f106142ff5761010080835404028352916020019161432a565b820191906000526020600020905b81548152906001019060200180831161430d57829003601f168201915b509394506000935061433b92505050565b8260600151600181111561435157614351615a58565b14156143e15760ce546040517f254ff9810000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063254ff981906143a09084906004016151da565b600060405180830381600087803b1580156143ba57600080fd5b505af11580156143ce573d6000803e3d6000fd5b505050506109c482602001516000614881565b6001826060015160018111156143f9576143f9615a58565b14156144895760ce546040517f254ff9810000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063254ff981906144489084906004016151da565b600060405180830381600087803b15801561446257600080fd5b505af1158015614476573d6000803e3d6000fd5b505050506109c482602001516001614881565b60405162461bcd60e51b815260206004820152601560248201527f657272207479706520666f7220736c617368696e6700000000000000000000006044820152606401610dda565b60ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561452e57600080fd5b505afa158015614542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145669190615b22565b905090565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60975460ff1615610c1f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610dda565b600081516040146146705760405162461bcd60e51b815260206004820152601f60248201527f7075626c6963206b6579206c656e677468206d757374203634206279746573006044820152606401610dda565b50805160209091012090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610575908490614d2e565b60cd546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90614749908690859087906004016160f0565b600060405180830381600087803b15801561476357600080fd5b505af1158015613215573d6000803e3d6000fd5b600054610100900460ff166147f45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610dda565b610c1f3361456b565b600054610100900460ff1661487a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610dda565b6001606555565b60008061488c6144d1565b905060d383600281106148a1576148a1615a87565b015460cb5460cc546040517f778e55f30000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301523060248301528592169063778e55f39060440160206040518083038186803b15801561490a57600080fd5b505afa15801561491e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149429190615b22565b61494c9190615e14565b6149569190615e33565b10156149a45760405162461bcd60e51b815260206004820152601a60248201527f646f206e6f74206861766520656e6f75676874207368617265730000000000006044820152606401610dda565b8060cb5460d385600281106149bb576149bb615a87565b01546149c79190615e14565b6149d19190615e33565b60cc546040517f778e55f30000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301523060248301529294506000929091169063778e55f39060440160206040518083038186803b158015614a3b57600080fd5b505afa158015614a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a739190615b22565b60408051600180825281830190925291925060009190602080830190803683370190505090503081600081518110614aad57614aad615a87565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050600081600081518110614aff57614aff615a87565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337505060ca5482519293506001600160a01b031691839150600090614b4e57614b4e615a87565b6001600160a01b03928316602091820292909201810191909152908916600090815260d9825260408082208054825181860281018601909352808352929391929091830182828015614bc957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614bab575b5050505050905060005b8151811015614d22576000614c00838381518110614bf357614bf3615a87565b6020026020010151613341565b604080516001808252818301909252919250600091906020808301908036833701905050905087614c31838c615e14565b614c3b9190615e33565b81600081518110614c4e57614c4e615a87565b602090810291909101015260cf5484516001600160a01b03909116906306f1f68490869086908110614c8257614c82615a87565b602090810291909101015160d6546040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152614cdb92916001600160a01b0316908c908b908d908990600401616128565b600060405180830381600087803b158015614cf557600080fd5b505af1158015614d09573d6000803e3d6000fd5b5050505050508080614d1a90615ae5565b915050614bd3565b50505050505050505050565b6000614d83826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614e139092919063ffffffff16565b8051909150156105755780806020019051810190614da19190615b00565b6105755760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610dda565b6060614e228484600085614e2a565b949350505050565b606082471015614ea25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610dda565b843b614ef05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dda565b600080866001600160a01b03168587604051614f0c9190615e6e565b60006040518083038185875af1925050503d8060008114614f49576040519150601f19603f3d011682016040523d82523d6000602084013e614f4e565b606091505b5091509150614f5e828286614f69565b979650505050505050565b60608315614f785750816129c9565b825115614f885782518084602001fd5b8160405162461bcd60e51b8152600401610dda91906151da565b50805460008255906000526020600020908101906137439190615119565b828054828255906000526020600020908101928215615022579160200282015b82811115615022578251825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116178255602090920191600190910190614fe0565b50614233929150615119565b828054828255906000526020600020908101928215615022579160200282015b8281111561502257825182559160200191906001019061504e565b8280546150759061580b565b90600052602060002090601f0160209004810192826150975760008555615022565b82601f106150ce578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555615022565b82800160010185558215615022579182015b828111156150225782358255916020019190600101906150e0565b60405180604001604052806002906020820280368337509192915050565b5b80821115614233576000815560010161511a565b6001600160a01b038116811461374357600080fd5b60006020828403121561515557600080fd5b81356129c98161512e565b60005b8381101561517b578181015183820152602001615163565b8381111561518a576000848401525b50505050565b600081518084526151a8816020860160208601615160565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006129c96020830184615190565b6000604082840312156151ff57600080fd5b8260408301111561369957600080fd5b600080600080600080600060e0888a03121561522a57600080fd5b87356152358161512e565b965060208801356152458161512e565b955060408801356152558161512e565b945060608801356152658161512e565b935060808801356152758161512e565b925060a08801356152858161512e565b915060c08801356152958161512e565b8091505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156152f7576152f76152a5565b60405290565b6040516080810167ffffffffffffffff811182821017156152f7576152f76152a5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615367576153676152a5565b604052919050565b600067ffffffffffffffff821115615389576153896152a5565b5060051b60200190565b600082601f8301126153a457600080fd5b813560206153b96153b48361536f565b615320565b82815260059290921b840181019181810190868411156153d857600080fd5b8286015b848110156153fc5780356153ef8161512e565b83529183019183016153dc565b509695505050505050565b600082601f83011261541857600080fd5b813560206154286153b48361536f565b82815260059290921b8401810191818101908684111561544757600080fd5b8286015b848110156153fc578035835291830191830161544b565b60008060006060848603121561547757600080fd5b83356154828161512e565b9250602084013567ffffffffffffffff8082111561549f57600080fd5b6154ab87838801615393565b935060408601359150808211156154c157600080fd5b506154ce86828701615407565b9150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156155195783516001600160a01b0316835292840192918401916001016154f4565b50909695505050505050565b60006020828403121561553757600080fd5b5035919050565b60008083601f84011261555057600080fd5b50813567ffffffffffffffff81111561556857600080fd5b60208301915083602082850101111561558057600080fd5b9250929050565b6000806000806040858703121561559d57600080fd5b843567ffffffffffffffff808211156155b557600080fd5b6155c18883890161553e565b909650945060208701359150808211156155da57600080fd5b506155e78782880161553e565b95989497509550505050565b6000806000806080858703121561560957600080fd5b84356156148161512e565b935060208501356156248161512e565b9250604085013567ffffffffffffffff8082111561564157600080fd5b61564d88838901615393565b9350606087013591508082111561566357600080fd5b5061567087828801615407565b91505092959194509250565b6001600160a01b03848116825260808201906156bc602084018680516001600160a01b031682526020908101516bffffffffffffffffffffffff16910152565b808416606084015250949350505050565b600080604083850312156156e057600080fd5b8235915060208301356156f28161512e565b809150509250929050565b60008060006060848603121561571257600080fd5b833561571d8161512e565b9250602084013561572d8161512e565b929592945050506040919091013590565b6000806020838503121561575157600080fd5b823567ffffffffffffffff81111561576857600080fd5b6157748582860161553e565b90969095509350505050565b60408101818360005b60028110156157a8578151835260209283019290910190600101615789565b50505092915050565b600080604083850312156157c457600080fd5b82356157cf8161512e565b946020939093013593505050565b600080604083850312156157f057600080fd5b82356157fb8161512e565b915060208301356156f28161512e565b600181811c9082168061581f57607f821691505b60208210811415613699577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208083526000845481600182811c91508083168061587b57607f831692505b8583108114156158b2577f4e487b710000000000000000000000000000000000000000000000000000000085526022600452602485fd5b8786018381526020018180156158cf57600181146158fe57615929565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861682528782019650615929565b60008b81526020902060005b868110156159235781548482015290850190890161590a565b83019750505b50949998505050505050505050565b80516126668161512e565b6002811061374357600080fd5b805161266681615943565b6000602080838503121561596e57600080fd5b825167ffffffffffffffff8082111561598657600080fd5b908401906060828703121561599a57600080fd5b6159a26152d4565b8251828111156159b157600080fd5b8301601f810188136159c257600080fd5b8051838111156159d4576159d46152a5565b615a04867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615320565b93508084528886828401011115615a1a57600080fd5b615a2981878601888501615160565b5050818152615a39848401615938565b84820152615a4960408401615950565b60408201529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000600019821415615af957615af9615ab6565b5060010190565b600060208284031215615b1257600080fd5b815180151581146129c957600080fd5b600060208284031215615b3457600080fd5b5051919050565b600060208284031215615b4d57600080fd5b81516129c98161512e565b600081518084526020808501945080840160005b83811015615b8857815187529582019590820190600101615b6c565b509495945050505050565b600081518084526020808501945080840160005b83811015615b885781516001600160a01b031687529582019590820190600101615ba7565b6001600160a01b038716815260e060208201526000615bee60e0830188615b58565b8281036040840152615c008188615b93565b90508281036060840152615c148187615b93565b90508281036080840152615c288186615b58565b84516001600160a01b031660a085015260208501516bffffffffffffffffffffffff1660c08501529150614f5e9050565b803561266681615943565b60006020808385031215615c7757600080fd5b823567ffffffffffffffff80821115615c8f57600080fd5b9084019060808287031215615ca357600080fd5b615cab6152fd565b8235815283830135615cbc8161512e565b81850152604083013582811115615cd257600080fd5b83019150601f82018713615ce557600080fd5b8135615cf36153b48261536f565b81815260059190911b83018501908581019089831115615d1257600080fd5b938601935b82851015615d39578435615d2a8161512e565b82529386019390860190615d17565b604084015250615d4d905060608401615c59565b60608201529695505050505050565b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b6001600160a01b03831681526040810160028310615e07577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260208301529392505050565b6000816000190483118215151615615e2e57615e2e615ab6565b500290565b600082615e69577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251615e80818460208701615160565b9190910192915050565b805160208083015191908110156136995760001960209190910360031b1b16919050565b600181815b80851115615ee9578160001904821115615ecf57615ecf615ab6565b80851615615edc57918102915b93841c9390800290615eb3565b509250929050565b600082615f005750600161197f565b81615f0d5750600061197f565b8160018114615f235760028114615f2d57615f49565b600191505061197f565b60ff841115615f3e57615f3e615ab6565b50506001821b61197f565b5060208310610133831016604e8410600b8410161715615f6c575081810a61197f565b615f768383615eae565b8060001904821115615f8a57615f8a615ab6565b029392505050565b60006129c98383615ef1565b600082821015615fb057615fb0615ab6565b500390565b60008219821115615fc857615fc8615ab6565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000815160e0845261601160e0850182615b93565b90506020830151848203602086015261602a8282615b93565b915050604083015184820360408601526160448282615b58565b91505060608301516001600160a01b03808216606087015260808501519150616091608087018380516001600160a01b031682526020908101516bffffffffffffffffffffffff16910152565b8060a08601511660c087015250508091505092915050565b6001600160a01b03841681526060602082015260006160cb6060830185615ffc565b90508215156040830152949350505050565b6020815260006129c96020830184615ffc565b6001600160a01b03841681526060602082015260006161126060830185615190565b905063ffffffff83166040830152949350505050565b60006001600160a01b03808916835280881660208401525060c0604083015261615460c0830187615b93565b82810360608401526161668187615b93565b9050828103608084015261617a8186615b58565b905082810360a084015261618e8185615b58565b999850505050505050505056fe4d616e746c6520746f6b656e2044656c65676174696f6e536861726520696d706c656d656e746174696f6e20666f72207375626d6f64756c657320617320616e206578616d706c65a2646970667358221220babc5b908276a6ea84633e5e9d0b0312fdd1525c4993ab47bd7d70d67af1eaf264736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
