{
  "_format": "hh-sol-artifact-1",
  "contractName": "StakePermitHandlerHelper",
  "sourceName": "contracts/V3/handler/StakePermitHandlerHelper.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "ruleHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "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": "bytes32",
          "name": "ruleHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "rewardHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "RewardPaid",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "ruleHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "Stake",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "ruleHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "UnStake",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REVOKE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cname",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "rewardHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "getReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexInput",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexOutput",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "cmd",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.StateParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "rewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "stakingToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "awardToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalReward",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "admin",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdateTime",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "cap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capUsed",
              "type": "uint256"
            }
          ],
          "internalType": "struct IStakePermitHandlerHelper.RuleInfo",
          "name": "info",
          "type": "tuple"
        }
      ],
      "name": "setRuleInfo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "capNew",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "updateCap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userRewardPerTokenPaid",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50613aba806100206000396000f3fe608060405234801561001057600080fd5b506004361061012d5760003560e01c80638129fc1c116100b35780638129fc1c146102575780638b38b5141461025f5780639010d07c1461027457806391d148541461029f5780639cb893c6146102b2578063a217fddf146102c5578063af84b51f146102cd578063ca15c873146102ed578063d547741f14610300578063ed50e1da14610313578063fb4735021461033e578063fbce59301461036957600080fd5b806301ffc9a7146101325780630ba320a61461015a578063248a9ca31461016f5780632d319e68146101a15780632f2ff15d146101b457806334c76b25146101c757806336568abe14610204578063468ed8891461021757806354fd4d501461022a5780636ebf181b146102315780637fb103ed14610244575b600080fd5b610145610140366004613033565b610394565b60405190151581526020015b60405180910390f35b61016d61016836600461311a565b6103bf565b005b61019361017d3660046131cd565b6000908152600160208190526040909120015490565b604051908152602001610151565b61016d6101af3660046131e6565b610489565b61016d6101c236600461322d565b610751565b604080518082018252601b81527a29aa20a5a2afa822a926a4aa2fa420a7222622a92fa422a62822a960291b6020820152905161015191906132a9565b61016d61021236600461322d565b61077c565b61016d6102253660046132bc565b6107fa565b6000610193565b61016d61023f3660046132f1565b610881565b6101936102523660046133a5565b610a0c565b61016d610e12565b610193600080516020613a6583398151915281565b61028761028236600461340c565b610e8a565b6040516001600160a01b039091168152602001610151565b6101456102ad36600461322d565b610ea9565b61016d6102c036600461342e565b610ed4565b610193600081565b6102e06102db366004613538565b611179565b6040516101519190613655565b6101936102fb3660046131cd565b611821565b61016d61030e36600461322d565b611838565b61019361032136600461322d565b600560209081526000928352604080842090915290825290205481565b61019361034c36600461322d565b600660209081526000928352604080842090915290825290205481565b61019361037736600461322d565b600460209081526000928352604080842090915290825290205481565b60006001600160e01b03198216635a05180f60e01b14806103b957506103b98261185e565b92915050565b600080516020613a658339815191526103d781611893565b50600091825260036020818152604093849020835181546001600160a01b039182166001600160a01b03199182161783559285015160018301805491831691909416179092559383015160028501556060830151918401919091556080820151600484015560a082015160058401805460c085015163ffffffff16600160a01b026001600160c01b0319909116929093169190911791909117905560e081015160068301556101000151600790910155565b60008581526003602052604090206006810154600782015460058301548893859390929091600160a01b900463ffffffff1682158015906104db5750620151806104d98263ffffffff42166136cd565b115b15610554576000620151806104f083426136cd565b6104fa91906136f6565b9050610509620151808261370a565b60058601805460149061052a908490600160a01b900463ffffffff16613721565b92506101000a81548163ffffffff021916908363ffffffff16021790555060008560070181905550505b82158061057057508285856007015461056d919061373e565b11155b6105ae5760405162461bcd60e51b81526004016105a5906020808252600490820152636361702160e01b604082015260600190565b60405180910390fd5b600080516020613a658339815191526105c681611893565b88156106495760008c8152600a60205260409020881561060b5760008a8152600282016020526040812080548b929061060090849061373e565b909155506106439050565b6001816000016000828254610620919061373e565b909155505060008a815260018281016020526040909120805460ff191690911790555b506106cb565b60008c815260036020526040902088156106c9578881600301600082825461067191906136cd565b925050819055508881600401600082825461068c919061373e565b909155505060008d81526005602090815260408083206001600160a01b038f168452909152812080548b92906106c390849061373e565b90915550505b505b896001600160a01b03168b8d7fb39636a1dff11e60fa32f39fb2e145417350e71875245d21d71ebd3ce00964128c8c4260405161071b939291909283526020830191909152604082015260600190565b60405180910390a4508215610744578484600701600082825461073e919061373e565b90915550505b5050505050505050505050565b6000828152600160208190526040909120015461076d81611893565b610777838361189d565b505050565b6001600160a01b03811633146107ec5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105a5565b6107f682826118bf565b5050565b600080516020613a6583398151915261081281611893565b600082815260036020526040902060058101546001600160a01b038581169116146108755760405162461bcd60e51b81526020600482015260136024820152723ab83230ba32a1b0b8103737ba1030b236b4b760691b60448201526064016105a5565b60060193909355505050565b600080516020613a6583398151915261089981611893565b6108c76040518060400160405280600c81526020016b6465706f7369742074696d6560a01b815250426118e1565b60408051808201909152600c81526b0c8cae0dee6d2e840d0c2e6d60a31b60208201526108f490856118e1565b6109246040518060400160405280600e81526020016d19195c1bdcda5d08185b5bdd5b9d60921b815250846118e1565b6109546040518060400160405280600e81526020016d3232b837b9b4ba1031b0b63632b960911b81525083611926565b600083116109975760405162461bcd60e51b815260206004820152601060248201526f063616e6e6f74206465706f73697420360841b60448201526064016105a5565b600084815260036020819052604082209081018054919286926109bb90849061373e565b9091555050604080518581524260208201526001600160a01b0385169187917f6849bd31a1772b1b6992f1f328cce6888b435faff25d13805baee12a8a944bbe910160405180910390a35050505050565b6000600080516020613a65833981519152610a2681611893565b610a556040518060400160405280600d81526020016c77697468647261772074696d6560981b815250426118e1565b60408051808201909152600d81526c0eed2e8d0c8e4c2ee40d0c2e6d609b1b6020820152610a8390866118e1565b610ab46040518060400160405280600f81526020016e3bb4ba34323930bb9031b0b63632b960891b81525085611926565b825160009015610ac2575082515b60008111610b065760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016105a5565b60008681526003602052604090206002810154610b249083906136cd565b600282015560008781526007602090815260408083206001600160a01b038a168452909152902054610b579083906136cd565b60008881526007602090815260408083206001600160a01b038b16808552908352818420949094558a835260098252808320938352929052908120905b8651811015610db957610be36040518060400160405280600b81526020016a1dda5d1a191c985dc81a5960aa1b815250888381518110610bd657610bd6613751565b60200260200101516118e1565b600089815260086020526040812088516001600160a01b038b1692908a9085908110610c1157610c11613751565b6020908102919091018101518252810191909152604001600020546001600160a01b031614610c7c5760405162461bcd60e51b815260206004820152601760248201527634b2103737ba103132b637b733903a379031b0b63632b960491b60448201526064016105a5565b6000898152600860205260408120885182908a9085908110610ca057610ca0613751565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060005b8254811015610da657878281518110610cf857610cf8613751565b6020026020010151838281548110610d1257610d12613751565b906000526020600020015403610d945782548390610d32906001906136cd565b81548110610d4257610d42613751565b9060005260206000200154838281548110610d5f57610d5f613751565b906000526020600020018190555082805480610d7d57610d7d613767565b600190038181906000526020600020016000905590555b80610d9e8161377d565b915050610cdd565b5080610db18161377d565b915050610b94565b50866001600160a01b0316888a63ffffffff167fc5f33639f763bb0fe8384f043ce6a6ea7e14dbb8055d8a616f1eb1b993bc75f28942604051610dfd929190613796565b60405180910390a45090979650505050505050565b6000610e1e600161196b565b90508015610e36576000805461ff0019166101001790555b610e416000336119f8565b8015610e87576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000828152600260205260408120610ea29083611a02565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020613a65833981519152610eec81611893565b610f186040518060400160405280600a8152602001697374616b652074696d6560b01b815250426118e1565b60408051808201909152600a8152690e6e8c2d6ca40d0c2e6d60b31b6020820152610f4390866118e1565b610f7e6040518060400160405280600c81526020016b1cdd185ad948185b5bdd5b9d60a21b81525060018551610f7991906136cd565b6118e1565b610fac6040518060400160405280600c81526020016b39ba30b5b29031b0b63632b960a11b81525085611926565b825160005b84518110156110725760008781526008602052604081208651869290889085908110610fdf57610fdf613751565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b039586161790558a8152600983528181209388168152929091529020855186908390811061104157611041613751565b602090810291909101810151825460018101845560009384529190922001558061106a8161377d565b915050610fb1565b50600081116110b45760405162461bcd60e51b815260206004820152600e60248201526d063616e6e6f74207374616b6520360941b60448201526064016105a5565b600086815260036020526040902060028101546110d290839061373e565b600282015560008781526007602090815260408083206001600160a01b038a16845290915290205461110590839061373e565b60008881526007602090815260408083206001600160a01b038b168085529252918290209290925551889063ffffffff8b16907fb014398921a689595d13a088668d6fa86f3cb19470276d641af3b05da3c192ff90611167908a904290613796565b60405180910390a45050505050505050565b60606111aa6040518060400160405280600d81526020016c67657453746174652074696d6560981b815250426118e1565b60008260400151836060015184608001516040516020016111ea9392919063ffffffff93909316835261ffff918216602084015216604082015260600190565b6040516020818303038152906040528051906020012090506060600260ff1684610120015160ff160361165a576112536040518060400160405280601b81526020017a6765745374617465204745545f53544154455f5359535f494e464f60281b815250611a0e565b6101408401516000906112669082611a51565b905060006112836001876101400151611a5190919063ffffffff16565b60408051600a8082526101608201909252919250816020015b606081526020019060019003908161129c5750506000858152600360209081526040808320600a8352928190208151808301909252600c82526b39ba30b5b4b733aa37b5b2b760a11b92820192909252825493965091929091611307916001600160a01b0316611ab6565b8560008151811061131a5761131a613751565b60200260200101819052506113686040518060400160405280600a81526020016930bbb0b9322a37b5b2b760b11b8152508360010160009054906101000a90046001600160a01b0316611ab6565b8560018151811061137b5761137b613751565b60200260200101819052506113b76040518060400160405280600b81526020016a746f74616c537570706c7960a81b8152508360020154611b9a565b856002815181106113ca576113ca613751565b60200260200101819052506114026040518060400160405280600781526020016662616c616e636560c81b8152508360030154611b9a565b8560038151811061141557611415613751565b60200260200101819052506114496040518060400160405280600381526020016206361760ec1b8152508360060154611b9a565b8560048151811061145c5761145c613751565b60200260200101819052506114bc6040518060400160405280600781526020016618d85c1319599d60ca1b8152506114b7846006015485600701548660050160149054906101000a900463ffffffff1663ffffffff16611c6a565b611b9a565b856005815181106114cf576114cf613751565b602002602001018190525061151160405180604001604052806011815260200170195c98cc8c081d1bdd185b14995dd85c99607a1b8152508360040154611b9a565b8560068151811061152457611524613751565b602002602001018190525061156760405180604001604052806012815260200171195c98cdcc8c481d1bdd185b14995dd85c9960721b8152508260000154611b9a565b8560078151811061157a5761157a613751565b6020908102919091018101919091526040805180820182526011815270195c98cdcc8c481a590818db185a5b5959607a1b818401526000878152600185019093529120546115cb919060ff16611cbf565b856008815181106115de576115de613751565b602002602001018190525061163360405180604001604052806013815260200172195c98cc4c4d4d481d1bdd185b14995dd85c99606a1b81525082600201600086815260200190815260200160002054611b9a565b8560098151811061164657611646613751565b602002602001018190525050505050610ea2565b600160ff1684610120015160ff1603610ea2576116ab6040518060400160405280601c81526020017f6765745374617465204745545f53544154455f555345525f494e464f00000000815250611a0e565b6101408401516000906116be9082611d50565b6000848152600360209081526040808320600983528184206001600160a01b0386168552835292819020815160028082526060820190935294955092939182015b60608152602001906001900390816116ff57905050935061178f604051806040016040528060088152602001677374616b6549647360c01b8152508280548060200260200160405190810160405280929190818152602001828054801561178557602002820191906000526020600020905b815481526020019060010190808311611771575b5050505050611d9b565b846000815181106117a2576117a2613751565b602090810291909101810191909152604080518082018252600b81526a1d1bdd185b14995dd85c9960aa1b818401526000888152600584528281206001600160a01b03881682529093529120546117f99190611b9a565b8460018151811061180c5761180c613751565b60200260200101819052505050509392505050565b60008181526002602052604081206103b990611ee6565b6000828152600160208190526040909120015461185481611893565b61077783836118bf565b60006001600160e01b03198216637965db0b60e01b14806103b957506301ffc9a760e01b6001600160e01b03198316146103b9565b610e878133611ef0565b6118a78282611f49565b60008281526002602052604090206107779082611fb4565b6118c98282611fc9565b60008281526002602052604090206107779082612030565b6107f682826040516024016118f79291906137de565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052612045565b6107f6828260405160240161193c929190613800565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b179052612045565b60008054610100900460ff16156119b2578160ff16600114801561198e5750303b155b6119aa5760405162461bcd60e51b81526004016105a59061382a565b506000919050565b60005460ff8084169116106119d95760405162461bcd60e51b81526004016105a59061382a565b506000805460ff191660ff92909216919091179055600190565b919050565b6107f6828261189d565b6000610ea2838361204e565b610e8781604051602401611a2291906132a9565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052612045565b600080611a65611a6085612078565b6120a5565b9050611aae611a8f828560ff1681518110611a8257611a82613751565b60200260200101516120a5565b600281518110611aa157611aa1613751565b60200260200101516121ba565b949350505050565b60606000611ac384612207565b90506000611ad084612212565b6040805160038082526080820190925291925060009190816020015b6060815260200190600190039081611aec5790505090508281600081518110611b1757611b17613751565b6020026020010181905250611b4a604051806040016040528060078152602001666164647265737360c81b815250612207565b81600181518110611b5d57611b5d613751565b60200260200101819052508181600281518110611b7c57611b7c613751565b6020026020010181905250611b9081612235565b9695505050505050565b60606000611ba784612207565b90506000611bb4846122b3565b9050611bf76040518060400160405280600e81526020016d0b4b4b4b4b4b4b481d1bd55a5b9d60921b815250611bf283611bed90613878565b6122c6565b612312565b60408051600380825260808201909252600091816020015b6060815260200190600190039081611c0f5790505090508281600081518110611c3a57611c3a613751565b6020026020010181905250611b4a604051806040016040528060048152602001631d5a5b9d60e21b815250612207565b600083600003611c7d5750600019610ea2565b62015180611c918363ffffffff42166136cd565b1115611c9e575082610ea2565b82841115611cb557611cb083856136cd565b611aae565b6000949350505050565b60606000611ccc84612207565b90506000611cd984612357565b6040805160038082526080820190925291925060009190816020015b6060815260200190600190039081611cf55790505090508281600081518110611d2057611d20613751565b6020026020010181905250611b4a60405180604001604052806004815260200163189bdbdb60e21b815250612207565b600080611d5f611a6085612078565b9050611aae611d7c828560ff1681518110611a8257611a82613751565b600281518110611d8e57611d8e613751565b60200260200101516123c1565b60606000611da884612207565b9050600083516002611dba919061373e565b6001600160401b03811115611dd157611dd161305d565b604051908082528060200260200182016040528015611e0457816020015b6060815260200190600190039081611def5790505b5090508181600081518110611e1b57611e1b613751565b6020026020010181905250611e4f604051806040016040528060088152602001671d5a5b9d131a5cdd60c21b815250612207565b81600181518110611e6257611e62613751565b602002602001018190525060005b8451811015611ed357611e9b858281518110611e8e57611e8e613751565b60200260200101516122b3565b82611ea783600261373e565b81518110611eb757611eb7613751565b602002602001018190525080611ecc9061377d565b9050611e70565b50611edd81612235565b95945050505050565b60006103b9825490565b611efa8282610ea9565b6107f657611f07816123db565b611f128360206123ed565b604051602001611f2392919061389c565b60408051601f198184030181529082905262461bcd60e51b82526105a5916004016132a9565b611f538282610ea9565b6107f65760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610ea2836001600160a01b038416612588565b611fd38282610ea9565b156107f65760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ea2836001600160a01b0384166125d7565b610e87816126d1565b600082600001828154811061206557612065613751565b9060005260206000200154905092915050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60606120b0826126f2565b6120b957600080fd5b60006120c48361272d565b90506000816001600160401b038111156120e0576120e061305d565b60405190808252806020026020018201604052801561212557816020015b60408051808201909152600080825260208201528152602001906001900390816120fe5790505b509050600061213785602001516127b2565b8560200151612146919061373e565b90506000805b848110156121af5761215d83612833565b915060405180604001604052808381526020018481525084828151811061218657612186613751565b602090810291909101015261219b828461373e565b9250806121a78161377d565b91505061214c565b509195945050505050565b8051600090158015906121cf57508151602110155b6121d857600080fd5b6000806121e4846128d7565b815191935091506020821015611aae5760208290036101000a9004949350505050565b60606103b98261291e565b60408051600560a21b8318601482015260348101909152606090610ea28161291e565b60606122646040518060400160405280600c81526020016b656e636f64654c697374203160a01b815250611a0e565b600061226f8361296e565b905061229e6040518060400160405280600c81526020016b32b731b7b232a634b9ba101960a11b815250611a0e565b610ea26122ad825160c0612aa7565b82612c5e565b60606103b96122c183612cdb565b61291e565b60606122d182612e0c565b6122de608084901b612e0c565b60405161060f60f31b6020820152602281019290925260428201526062016040516020818303038152906040529050919050565b6107f6828260405160240161232892919061390b565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b179052612045565b604080516001808252818301909252606091600091906020820181803683370190505090508261238b57600160ff1b612391565b600160f81b5b816000815181106123a4576123a4613751565b60200101906001600160f81b031916908160001a90535092915050565b80516000906015146123d257600080fd5b6103b9826121ba565b60606103b96001600160a01b03831660145b606060006123fc83600261370a565b61240790600261373e565b6001600160401b0381111561241e5761241e61305d565b6040519080825280601f01601f191660200182016040528015612448576020820181803683370190505b509050600360fc1b8160008151811061246357612463613751565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061249257612492613751565b60200101906001600160f81b031916908160001a90535060006124b684600261370a565b6124c190600161373e565b90505b6001811115612539576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106124f5576124f5613751565b1a60f81b82828151811061250b5761250b613751565b60200101906001600160f81b031916908160001a90535060049490941c9361253281613930565b90506124c4565b508315610ea25760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105a5565b60008181526001830160205260408120546125cf575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103b9565b5060006103b9565b600081815260018301602052604081205480156126c05760006125fb6001836136cd565b855490915060009061260f906001906136cd565b905081811461267457600086600001828154811061262f5761262f613751565b906000526020600020015490508087600001848154811061265257612652613751565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061268557612685613767565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103b9565b60009150506103b9565b5092915050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b8051600090810361270557506000919050565b6020820151805160001a9060c0821015612723575060009392505050565b5060019392505050565b8051600090810361274057506000919050565b60008061275084602001516127b2565b846020015161275f919061373e565b9050600084600001518560200151612777919061373e565b90505b808210156127a95761278b82612833565b612795908361373e565b9150826127a18161377d565b93505061277a565b50909392505050565b8051600090811a60808110156127cb5750600092915050565b60b88110806127e6575060c081108015906127e6575060f881105b156127f45750600192915050565b60c081101561282157612809600160b8613947565b6128169060ff16826136cd565b610ea290600161373e565b612809600160f8613947565b50919050565b80516000908190811a608081101561284e57600191506126ca565b60b8811015612874576128626080826136cd565b61286d90600161373e565b91506126ca565b60c08110156128a15760b78103600185019450806020036101000a855104600182018101935050506126ca565b60f88110156128b55761286260c0826136cd565b60019390930151602084900360f7016101000a900490920160f5190192915050565b60008060006128e984602001516127b2565b905060008185602001516128fd919061373e565b9050600082866000015161291191906136cd565b9196919550909350505050565b6060808251600114801561294d575060808360008151811061294257612942613751565b016020015160f81c11155b156129595750816103b9565b610ea261296884516080612aa7565b84612c5e565b6060815160000361298f5760408051600080825260208201909252906126ca565b6000805b83518110156129d6578381815181106129ae576129ae613751565b602002602001015151826129c2919061373e565b9150806129ce8161377d565b915050612993565b6000826001600160401b038111156129f0576129f061305d565b6040519080825280601f01601f191660200182016040528015612a1a576020820181803683370190505b50600092509050602081015b8551831015612a9e576000868481518110612a4357612a43613751565b602002602001015190506000602082019050612a6183828451612fb6565b878581518110612a7357612a73613751565b60200260200101515183612a87919061373e565b925050508280612a969061377d565b935050612a26565b50949350505050565b6060806038841015612b115760408051600180825281830190925290602082018180368337019050509050612adc838561373e565b601f1a60f81b81600081518110612af557612af5613751565b60200101906001600160f81b031916908160001a905350610ea2565b600060015b612b2081876136f6565b15612b465781612b2f8161377d565b9250612b3f90506101008261370a565b9050612b16565b612b5182600161373e565b6001600160401b03811115612b6857612b6861305d565b6040519080825280601f01601f191660200182016040528015612b92576020820181803683370190505b509250612b9f858361373e565b612baa90603761373e565b601f1a60f81b83600081518110612bc357612bc3613751565b60200101906001600160f81b031916908160001a905350600190505b818111612c5457610100612bf382846136cd565b612bff90610100613a44565b612c0990886136f6565b612c139190613a50565b601f1a60f81b838281518110612c2b57612c2b613751565b60200101906001600160f81b031916908160001a90535080612c4c8161377d565b915050612bdf565b5050905092915050565b6060806040519050835180825260208201818101602087015b81831015612c8f578051835260209283019201612c77565b50855184518101855292509050808201602086015b81831015612cbc578051835260209283019201612ca4565b508651929092011591909101601f01601f191660405250905092915050565b6040805160208082528183019092526060916000919060208201818036833701905050905082602082015260005b6020811015612d4c57818181518110612d2457612d24613751565b01602001516001600160f81b031916600003612d4c5780612d448161377d565b915050612d09565b6000612d598260206136cd565b6001600160401b03811115612d7057612d7061305d565b6040519080825280601f01601f191660200182016040528015612d9a576020820181803683370190505b50905060005b8151811015612a9e578383612db48161377d565b945081518110612dc657612dc6613751565b602001015160f81c60f81b828281518110612de357612de3613751565b60200101906001600160f81b031916908160001a90535080612e048161377d565b915050612da0565b7aff00000000000000ff00000000000000ff00000000000000ff000063ffffffff60401b604083901c90811663ffffffff60c01b84161760201c63ffffffff60601b919091166001600160e01b031984161717601081901c91821678ff00000000000000ff00000000000000ff00000000000000ff60301b821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790612f52827f060606060606060606060606060606060606060606060606060606060606060661373e565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f166007612f82919061370a565b612fac827f303030303030303030303030303030303030303030303030303030303030303061373e565b6103b9919061373e565b8282825b60208110612ff25781518352612fd160208461373e565b9250612fde60208361373e565b9150612feb6020826136cd565b9050612fba565b801561302b57600060016130078360206136cd565b61301390610100613a44565b61301d91906136cd565b835185518216911916178452505b505050505050565b60006020828403121561304557600080fd5b81356001600160e01b031981168114610ea257600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156130965761309661305d565b60405290565b60405161016081016001600160401b03811182821017156130965761309661305d565b604051601f8201601f191681016001600160401b03811182821017156130e7576130e761305d565b604052919050565b80356001600160a01b03811681146119f357600080fd5b803563ffffffff811681146119f357600080fd5b60008082840361014081121561312f57600080fd5b8335925061012080601f198301121561314757600080fd5b61314f613073565b915061315d602086016130ef565b825261316b604086016130ef565b6020830152606085013560408301526080850135606083015260a0850135608083015261319a60c086016130ef565b60a08301526131ab60e08601613106565b60c08301526101008581013560e0840152940135938101939093525092909150565b6000602082840312156131df57600080fd5b5035919050565b600080600080600060a086880312156131fe57600080fd5b8535945060208601359350613215604087016130ef565b94979396509394606081013594506080013592915050565b6000806040838503121561324057600080fd5b82359150613250602084016130ef565b90509250929050565b60005b8381101561327457818101518382015260200161325c565b50506000910152565b60008151808452613295816020860160208601613259565b601f01601f19169290920160200192915050565b602081526000610ea2602083018461327d565b6000806000606084860312156132d157600080fd5b833592506132e1602085016130ef565b9150604084013590509250925092565b60008060006060848603121561330657600080fd5b833592506020840135915061331d604085016130ef565b90509250925092565b600082601f83011261333757600080fd5b813560206001600160401b038211156133525761335261305d565b8160051b6133618282016130bf565b928352848101820192828101908785111561337b57600080fd5b83870192505b8483101561339a57823582529183019190830190613381565b979650505050505050565b600080600080608085870312156133bb57600080fd5b6133c485613106565b9350602085013592506133d9604086016130ef565b915060608501356001600160401b038111156133f457600080fd5b61340087828801613326565b91505092959194509250565b6000806040838503121561341f57600080fd5b50508035926020909101359150565b600080600080600060a0868803121561344657600080fd5b61344f86613106565b945060208601359350613464604087016130ef565b925060608601356001600160401b0381111561347f57600080fd5b61348b88828901613326565b92505061349a608087016130ef565b90509295509295909350565b803561ffff811681146119f357600080fd5b803560ff811681146119f357600080fd5b600082601f8301126134da57600080fd5b81356001600160401b038111156134f3576134f361305d565b613506601f8201601f19166020016130bf565b81815284602083860101111561351b57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561354a57600080fd5b81356001600160401b038082111561356157600080fd5b90830190610160828603121561357657600080fd5b61357e61309c565b613587836130ef565b8152613595602084016130ef565b60208201526135a660408401613106565b60408201526135b7606084016134a6565b60608201526135c8608084016134a6565b60808201526135d960a084016134b8565b60a08201526135ea60c084016130ef565b60c08201526135fb60e08401613106565b60e082015261010061360e8185016130ef565b908201526101206136208482016134b8565b90820152610140838101358381111561363857600080fd5b613644888287016134c9565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156136aa57603f1988860301845261369885835161327d565b9450928501929085019060010161367c565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103b9576103b96136b7565b634e487b7160e01b600052601260045260246000fd5b600082613705576137056136e0565b500490565b80820281158282048414176103b9576103b96136b7565b63ffffffff8181168382160190808211156126ca576126ca6136b7565b808201808211156103b9576103b96136b7565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001820161378f5761378f6136b7565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156137cf578151845292840192908401906001016137b3565b50505092019290925292915050565b6040815260006137f1604083018561327d565b90508260208301529392505050565b604081526000613813604083018561327d565b905060018060a01b03831660208301529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b8051602080830151919081101561282d5760001960209190910360031b1b16919050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516138ce816017850160208801613259565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516138ff816028840160208801613259565b01602801949350505050565b60408152600061391e604083018561327d565b8281036020840152611edd818561327d565b60008161393f5761393f6136b7565b506000190190565b60ff82811682821603908111156103b9576103b96136b7565b600181815b8085111561399b578160001904821115613981576139816136b7565b8085161561398e57918102915b93841c9390800290613965565b509250929050565b6000826139b2575060016103b9565b816139bf575060006103b9565b81600181146139d557600281146139df576139fb565b60019150506103b9565b60ff8411156139f0576139f06136b7565b50506001821b6103b9565b5060208310610133831016604e8410600b8410161715613a1e575081810a6103b9565b613a288383613960565b8060001904821115613a3c57613a3c6136b7565b029392505050565b6000610ea283836139a3565b600082613a5f57613a5f6136e0565b50069056fe5297e68f3a27f04914f2c6db0ad63b5e5c8173cebcc1a5341df045cf6dad7adca2646970667358221220986928980990e27df9046d70f9e4cb0ffa6fa8b3e64a6ad3145ae19b168ef32464736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012d5760003560e01c80638129fc1c116100b35780638129fc1c146102575780638b38b5141461025f5780639010d07c1461027457806391d148541461029f5780639cb893c6146102b2578063a217fddf146102c5578063af84b51f146102cd578063ca15c873146102ed578063d547741f14610300578063ed50e1da14610313578063fb4735021461033e578063fbce59301461036957600080fd5b806301ffc9a7146101325780630ba320a61461015a578063248a9ca31461016f5780632d319e68146101a15780632f2ff15d146101b457806334c76b25146101c757806336568abe14610204578063468ed8891461021757806354fd4d501461022a5780636ebf181b146102315780637fb103ed14610244575b600080fd5b610145610140366004613033565b610394565b60405190151581526020015b60405180910390f35b61016d61016836600461311a565b6103bf565b005b61019361017d3660046131cd565b6000908152600160208190526040909120015490565b604051908152602001610151565b61016d6101af3660046131e6565b610489565b61016d6101c236600461322d565b610751565b604080518082018252601b81527a29aa20a5a2afa822a926a4aa2fa420a7222622a92fa422a62822a960291b6020820152905161015191906132a9565b61016d61021236600461322d565b61077c565b61016d6102253660046132bc565b6107fa565b6000610193565b61016d61023f3660046132f1565b610881565b6101936102523660046133a5565b610a0c565b61016d610e12565b610193600080516020613a6583398151915281565b61028761028236600461340c565b610e8a565b6040516001600160a01b039091168152602001610151565b6101456102ad36600461322d565b610ea9565b61016d6102c036600461342e565b610ed4565b610193600081565b6102e06102db366004613538565b611179565b6040516101519190613655565b6101936102fb3660046131cd565b611821565b61016d61030e36600461322d565b611838565b61019361032136600461322d565b600560209081526000928352604080842090915290825290205481565b61019361034c36600461322d565b600660209081526000928352604080842090915290825290205481565b61019361037736600461322d565b600460209081526000928352604080842090915290825290205481565b60006001600160e01b03198216635a05180f60e01b14806103b957506103b98261185e565b92915050565b600080516020613a658339815191526103d781611893565b50600091825260036020818152604093849020835181546001600160a01b039182166001600160a01b03199182161783559285015160018301805491831691909416179092559383015160028501556060830151918401919091556080820151600484015560a082015160058401805460c085015163ffffffff16600160a01b026001600160c01b0319909116929093169190911791909117905560e081015160068301556101000151600790910155565b60008581526003602052604090206006810154600782015460058301548893859390929091600160a01b900463ffffffff1682158015906104db5750620151806104d98263ffffffff42166136cd565b115b15610554576000620151806104f083426136cd565b6104fa91906136f6565b9050610509620151808261370a565b60058601805460149061052a908490600160a01b900463ffffffff16613721565b92506101000a81548163ffffffff021916908363ffffffff16021790555060008560070181905550505b82158061057057508285856007015461056d919061373e565b11155b6105ae5760405162461bcd60e51b81526004016105a5906020808252600490820152636361702160e01b604082015260600190565b60405180910390fd5b600080516020613a658339815191526105c681611893565b88156106495760008c8152600a60205260409020881561060b5760008a8152600282016020526040812080548b929061060090849061373e565b909155506106439050565b6001816000016000828254610620919061373e565b909155505060008a815260018281016020526040909120805460ff191690911790555b506106cb565b60008c815260036020526040902088156106c9578881600301600082825461067191906136cd565b925050819055508881600401600082825461068c919061373e565b909155505060008d81526005602090815260408083206001600160a01b038f168452909152812080548b92906106c390849061373e565b90915550505b505b896001600160a01b03168b8d7fb39636a1dff11e60fa32f39fb2e145417350e71875245d21d71ebd3ce00964128c8c4260405161071b939291909283526020830191909152604082015260600190565b60405180910390a4508215610744578484600701600082825461073e919061373e565b90915550505b5050505050505050505050565b6000828152600160208190526040909120015461076d81611893565b610777838361189d565b505050565b6001600160a01b03811633146107ec5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105a5565b6107f682826118bf565b5050565b600080516020613a6583398151915261081281611893565b600082815260036020526040902060058101546001600160a01b038581169116146108755760405162461bcd60e51b81526020600482015260136024820152723ab83230ba32a1b0b8103737ba1030b236b4b760691b60448201526064016105a5565b60060193909355505050565b600080516020613a6583398151915261089981611893565b6108c76040518060400160405280600c81526020016b6465706f7369742074696d6560a01b815250426118e1565b60408051808201909152600c81526b0c8cae0dee6d2e840d0c2e6d60a31b60208201526108f490856118e1565b6109246040518060400160405280600e81526020016d19195c1bdcda5d08185b5bdd5b9d60921b815250846118e1565b6109546040518060400160405280600e81526020016d3232b837b9b4ba1031b0b63632b960911b81525083611926565b600083116109975760405162461bcd60e51b815260206004820152601060248201526f063616e6e6f74206465706f73697420360841b60448201526064016105a5565b600084815260036020819052604082209081018054919286926109bb90849061373e565b9091555050604080518581524260208201526001600160a01b0385169187917f6849bd31a1772b1b6992f1f328cce6888b435faff25d13805baee12a8a944bbe910160405180910390a35050505050565b6000600080516020613a65833981519152610a2681611893565b610a556040518060400160405280600d81526020016c77697468647261772074696d6560981b815250426118e1565b60408051808201909152600d81526c0eed2e8d0c8e4c2ee40d0c2e6d609b1b6020820152610a8390866118e1565b610ab46040518060400160405280600f81526020016e3bb4ba34323930bb9031b0b63632b960891b81525085611926565b825160009015610ac2575082515b60008111610b065760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016105a5565b60008681526003602052604090206002810154610b249083906136cd565b600282015560008781526007602090815260408083206001600160a01b038a168452909152902054610b579083906136cd565b60008881526007602090815260408083206001600160a01b038b16808552908352818420949094558a835260098252808320938352929052908120905b8651811015610db957610be36040518060400160405280600b81526020016a1dda5d1a191c985dc81a5960aa1b815250888381518110610bd657610bd6613751565b60200260200101516118e1565b600089815260086020526040812088516001600160a01b038b1692908a9085908110610c1157610c11613751565b6020908102919091018101518252810191909152604001600020546001600160a01b031614610c7c5760405162461bcd60e51b815260206004820152601760248201527634b2103737ba103132b637b733903a379031b0b63632b960491b60448201526064016105a5565b6000898152600860205260408120885182908a9085908110610ca057610ca0613751565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060005b8254811015610da657878281518110610cf857610cf8613751565b6020026020010151838281548110610d1257610d12613751565b906000526020600020015403610d945782548390610d32906001906136cd565b81548110610d4257610d42613751565b9060005260206000200154838281548110610d5f57610d5f613751565b906000526020600020018190555082805480610d7d57610d7d613767565b600190038181906000526020600020016000905590555b80610d9e8161377d565b915050610cdd565b5080610db18161377d565b915050610b94565b50866001600160a01b0316888a63ffffffff167fc5f33639f763bb0fe8384f043ce6a6ea7e14dbb8055d8a616f1eb1b993bc75f28942604051610dfd929190613796565b60405180910390a45090979650505050505050565b6000610e1e600161196b565b90508015610e36576000805461ff0019166101001790555b610e416000336119f8565b8015610e87576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000828152600260205260408120610ea29083611a02565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020613a65833981519152610eec81611893565b610f186040518060400160405280600a8152602001697374616b652074696d6560b01b815250426118e1565b60408051808201909152600a8152690e6e8c2d6ca40d0c2e6d60b31b6020820152610f4390866118e1565b610f7e6040518060400160405280600c81526020016b1cdd185ad948185b5bdd5b9d60a21b81525060018551610f7991906136cd565b6118e1565b610fac6040518060400160405280600c81526020016b39ba30b5b29031b0b63632b960a11b81525085611926565b825160005b84518110156110725760008781526008602052604081208651869290889085908110610fdf57610fdf613751565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b039586161790558a8152600983528181209388168152929091529020855186908390811061104157611041613751565b602090810291909101810151825460018101845560009384529190922001558061106a8161377d565b915050610fb1565b50600081116110b45760405162461bcd60e51b815260206004820152600e60248201526d063616e6e6f74207374616b6520360941b60448201526064016105a5565b600086815260036020526040902060028101546110d290839061373e565b600282015560008781526007602090815260408083206001600160a01b038a16845290915290205461110590839061373e565b60008881526007602090815260408083206001600160a01b038b168085529252918290209290925551889063ffffffff8b16907fb014398921a689595d13a088668d6fa86f3cb19470276d641af3b05da3c192ff90611167908a904290613796565b60405180910390a45050505050505050565b60606111aa6040518060400160405280600d81526020016c67657453746174652074696d6560981b815250426118e1565b60008260400151836060015184608001516040516020016111ea9392919063ffffffff93909316835261ffff918216602084015216604082015260600190565b6040516020818303038152906040528051906020012090506060600260ff1684610120015160ff160361165a576112536040518060400160405280601b81526020017a6765745374617465204745545f53544154455f5359535f494e464f60281b815250611a0e565b6101408401516000906112669082611a51565b905060006112836001876101400151611a5190919063ffffffff16565b60408051600a8082526101608201909252919250816020015b606081526020019060019003908161129c5750506000858152600360209081526040808320600a8352928190208151808301909252600c82526b39ba30b5b4b733aa37b5b2b760a11b92820192909252825493965091929091611307916001600160a01b0316611ab6565b8560008151811061131a5761131a613751565b60200260200101819052506113686040518060400160405280600a81526020016930bbb0b9322a37b5b2b760b11b8152508360010160009054906101000a90046001600160a01b0316611ab6565b8560018151811061137b5761137b613751565b60200260200101819052506113b76040518060400160405280600b81526020016a746f74616c537570706c7960a81b8152508360020154611b9a565b856002815181106113ca576113ca613751565b60200260200101819052506114026040518060400160405280600781526020016662616c616e636560c81b8152508360030154611b9a565b8560038151811061141557611415613751565b60200260200101819052506114496040518060400160405280600381526020016206361760ec1b8152508360060154611b9a565b8560048151811061145c5761145c613751565b60200260200101819052506114bc6040518060400160405280600781526020016618d85c1319599d60ca1b8152506114b7846006015485600701548660050160149054906101000a900463ffffffff1663ffffffff16611c6a565b611b9a565b856005815181106114cf576114cf613751565b602002602001018190525061151160405180604001604052806011815260200170195c98cc8c081d1bdd185b14995dd85c99607a1b8152508360040154611b9a565b8560068151811061152457611524613751565b602002602001018190525061156760405180604001604052806012815260200171195c98cdcc8c481d1bdd185b14995dd85c9960721b8152508260000154611b9a565b8560078151811061157a5761157a613751565b6020908102919091018101919091526040805180820182526011815270195c98cdcc8c481a590818db185a5b5959607a1b818401526000878152600185019093529120546115cb919060ff16611cbf565b856008815181106115de576115de613751565b602002602001018190525061163360405180604001604052806013815260200172195c98cc4c4d4d481d1bdd185b14995dd85c99606a1b81525082600201600086815260200190815260200160002054611b9a565b8560098151811061164657611646613751565b602002602001018190525050505050610ea2565b600160ff1684610120015160ff1603610ea2576116ab6040518060400160405280601c81526020017f6765745374617465204745545f53544154455f555345525f494e464f00000000815250611a0e565b6101408401516000906116be9082611d50565b6000848152600360209081526040808320600983528184206001600160a01b0386168552835292819020815160028082526060820190935294955092939182015b60608152602001906001900390816116ff57905050935061178f604051806040016040528060088152602001677374616b6549647360c01b8152508280548060200260200160405190810160405280929190818152602001828054801561178557602002820191906000526020600020905b815481526020019060010190808311611771575b5050505050611d9b565b846000815181106117a2576117a2613751565b602090810291909101810191909152604080518082018252600b81526a1d1bdd185b14995dd85c9960aa1b818401526000888152600584528281206001600160a01b03881682529093529120546117f99190611b9a565b8460018151811061180c5761180c613751565b60200260200101819052505050509392505050565b60008181526002602052604081206103b990611ee6565b6000828152600160208190526040909120015461185481611893565b61077783836118bf565b60006001600160e01b03198216637965db0b60e01b14806103b957506301ffc9a760e01b6001600160e01b03198316146103b9565b610e878133611ef0565b6118a78282611f49565b60008281526002602052604090206107779082611fb4565b6118c98282611fc9565b60008281526002602052604090206107779082612030565b6107f682826040516024016118f79291906137de565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052612045565b6107f6828260405160240161193c929190613800565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b179052612045565b60008054610100900460ff16156119b2578160ff16600114801561198e5750303b155b6119aa5760405162461bcd60e51b81526004016105a59061382a565b506000919050565b60005460ff8084169116106119d95760405162461bcd60e51b81526004016105a59061382a565b506000805460ff191660ff92909216919091179055600190565b919050565b6107f6828261189d565b6000610ea2838361204e565b610e8781604051602401611a2291906132a9565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052612045565b600080611a65611a6085612078565b6120a5565b9050611aae611a8f828560ff1681518110611a8257611a82613751565b60200260200101516120a5565b600281518110611aa157611aa1613751565b60200260200101516121ba565b949350505050565b60606000611ac384612207565b90506000611ad084612212565b6040805160038082526080820190925291925060009190816020015b6060815260200190600190039081611aec5790505090508281600081518110611b1757611b17613751565b6020026020010181905250611b4a604051806040016040528060078152602001666164647265737360c81b815250612207565b81600181518110611b5d57611b5d613751565b60200260200101819052508181600281518110611b7c57611b7c613751565b6020026020010181905250611b9081612235565b9695505050505050565b60606000611ba784612207565b90506000611bb4846122b3565b9050611bf76040518060400160405280600e81526020016d0b4b4b4b4b4b4b481d1bd55a5b9d60921b815250611bf283611bed90613878565b6122c6565b612312565b60408051600380825260808201909252600091816020015b6060815260200190600190039081611c0f5790505090508281600081518110611c3a57611c3a613751565b6020026020010181905250611b4a604051806040016040528060048152602001631d5a5b9d60e21b815250612207565b600083600003611c7d5750600019610ea2565b62015180611c918363ffffffff42166136cd565b1115611c9e575082610ea2565b82841115611cb557611cb083856136cd565b611aae565b6000949350505050565b60606000611ccc84612207565b90506000611cd984612357565b6040805160038082526080820190925291925060009190816020015b6060815260200190600190039081611cf55790505090508281600081518110611d2057611d20613751565b6020026020010181905250611b4a60405180604001604052806004815260200163189bdbdb60e21b815250612207565b600080611d5f611a6085612078565b9050611aae611d7c828560ff1681518110611a8257611a82613751565b600281518110611d8e57611d8e613751565b60200260200101516123c1565b60606000611da884612207565b9050600083516002611dba919061373e565b6001600160401b03811115611dd157611dd161305d565b604051908082528060200260200182016040528015611e0457816020015b6060815260200190600190039081611def5790505b5090508181600081518110611e1b57611e1b613751565b6020026020010181905250611e4f604051806040016040528060088152602001671d5a5b9d131a5cdd60c21b815250612207565b81600181518110611e6257611e62613751565b602002602001018190525060005b8451811015611ed357611e9b858281518110611e8e57611e8e613751565b60200260200101516122b3565b82611ea783600261373e565b81518110611eb757611eb7613751565b602002602001018190525080611ecc9061377d565b9050611e70565b50611edd81612235565b95945050505050565b60006103b9825490565b611efa8282610ea9565b6107f657611f07816123db565b611f128360206123ed565b604051602001611f2392919061389c565b60408051601f198184030181529082905262461bcd60e51b82526105a5916004016132a9565b611f538282610ea9565b6107f65760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610ea2836001600160a01b038416612588565b611fd38282610ea9565b156107f65760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ea2836001600160a01b0384166125d7565b610e87816126d1565b600082600001828154811061206557612065613751565b9060005260206000200154905092915050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60606120b0826126f2565b6120b957600080fd5b60006120c48361272d565b90506000816001600160401b038111156120e0576120e061305d565b60405190808252806020026020018201604052801561212557816020015b60408051808201909152600080825260208201528152602001906001900390816120fe5790505b509050600061213785602001516127b2565b8560200151612146919061373e565b90506000805b848110156121af5761215d83612833565b915060405180604001604052808381526020018481525084828151811061218657612186613751565b602090810291909101015261219b828461373e565b9250806121a78161377d565b91505061214c565b509195945050505050565b8051600090158015906121cf57508151602110155b6121d857600080fd5b6000806121e4846128d7565b815191935091506020821015611aae5760208290036101000a9004949350505050565b60606103b98261291e565b60408051600560a21b8318601482015260348101909152606090610ea28161291e565b60606122646040518060400160405280600c81526020016b656e636f64654c697374203160a01b815250611a0e565b600061226f8361296e565b905061229e6040518060400160405280600c81526020016b32b731b7b232a634b9ba101960a11b815250611a0e565b610ea26122ad825160c0612aa7565b82612c5e565b60606103b96122c183612cdb565b61291e565b60606122d182612e0c565b6122de608084901b612e0c565b60405161060f60f31b6020820152602281019290925260428201526062016040516020818303038152906040529050919050565b6107f6828260405160240161232892919061390b565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b179052612045565b604080516001808252818301909252606091600091906020820181803683370190505090508261238b57600160ff1b612391565b600160f81b5b816000815181106123a4576123a4613751565b60200101906001600160f81b031916908160001a90535092915050565b80516000906015146123d257600080fd5b6103b9826121ba565b60606103b96001600160a01b03831660145b606060006123fc83600261370a565b61240790600261373e565b6001600160401b0381111561241e5761241e61305d565b6040519080825280601f01601f191660200182016040528015612448576020820181803683370190505b509050600360fc1b8160008151811061246357612463613751565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061249257612492613751565b60200101906001600160f81b031916908160001a90535060006124b684600261370a565b6124c190600161373e565b90505b6001811115612539576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106124f5576124f5613751565b1a60f81b82828151811061250b5761250b613751565b60200101906001600160f81b031916908160001a90535060049490941c9361253281613930565b90506124c4565b508315610ea25760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105a5565b60008181526001830160205260408120546125cf575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103b9565b5060006103b9565b600081815260018301602052604081205480156126c05760006125fb6001836136cd565b855490915060009061260f906001906136cd565b905081811461267457600086600001828154811061262f5761262f613751565b906000526020600020015490508087600001848154811061265257612652613751565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061268557612685613767565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103b9565b60009150506103b9565b5092915050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b8051600090810361270557506000919050565b6020820151805160001a9060c0821015612723575060009392505050565b5060019392505050565b8051600090810361274057506000919050565b60008061275084602001516127b2565b846020015161275f919061373e565b9050600084600001518560200151612777919061373e565b90505b808210156127a95761278b82612833565b612795908361373e565b9150826127a18161377d565b93505061277a565b50909392505050565b8051600090811a60808110156127cb5750600092915050565b60b88110806127e6575060c081108015906127e6575060f881105b156127f45750600192915050565b60c081101561282157612809600160b8613947565b6128169060ff16826136cd565b610ea290600161373e565b612809600160f8613947565b50919050565b80516000908190811a608081101561284e57600191506126ca565b60b8811015612874576128626080826136cd565b61286d90600161373e565b91506126ca565b60c08110156128a15760b78103600185019450806020036101000a855104600182018101935050506126ca565b60f88110156128b55761286260c0826136cd565b60019390930151602084900360f7016101000a900490920160f5190192915050565b60008060006128e984602001516127b2565b905060008185602001516128fd919061373e565b9050600082866000015161291191906136cd565b9196919550909350505050565b6060808251600114801561294d575060808360008151811061294257612942613751565b016020015160f81c11155b156129595750816103b9565b610ea261296884516080612aa7565b84612c5e565b6060815160000361298f5760408051600080825260208201909252906126ca565b6000805b83518110156129d6578381815181106129ae576129ae613751565b602002602001015151826129c2919061373e565b9150806129ce8161377d565b915050612993565b6000826001600160401b038111156129f0576129f061305d565b6040519080825280601f01601f191660200182016040528015612a1a576020820181803683370190505b50600092509050602081015b8551831015612a9e576000868481518110612a4357612a43613751565b602002602001015190506000602082019050612a6183828451612fb6565b878581518110612a7357612a73613751565b60200260200101515183612a87919061373e565b925050508280612a969061377d565b935050612a26565b50949350505050565b6060806038841015612b115760408051600180825281830190925290602082018180368337019050509050612adc838561373e565b601f1a60f81b81600081518110612af557612af5613751565b60200101906001600160f81b031916908160001a905350610ea2565b600060015b612b2081876136f6565b15612b465781612b2f8161377d565b9250612b3f90506101008261370a565b9050612b16565b612b5182600161373e565b6001600160401b03811115612b6857612b6861305d565b6040519080825280601f01601f191660200182016040528015612b92576020820181803683370190505b509250612b9f858361373e565b612baa90603761373e565b601f1a60f81b83600081518110612bc357612bc3613751565b60200101906001600160f81b031916908160001a905350600190505b818111612c5457610100612bf382846136cd565b612bff90610100613a44565b612c0990886136f6565b612c139190613a50565b601f1a60f81b838281518110612c2b57612c2b613751565b60200101906001600160f81b031916908160001a90535080612c4c8161377d565b915050612bdf565b5050905092915050565b6060806040519050835180825260208201818101602087015b81831015612c8f578051835260209283019201612c77565b50855184518101855292509050808201602086015b81831015612cbc578051835260209283019201612ca4565b508651929092011591909101601f01601f191660405250905092915050565b6040805160208082528183019092526060916000919060208201818036833701905050905082602082015260005b6020811015612d4c57818181518110612d2457612d24613751565b01602001516001600160f81b031916600003612d4c5780612d448161377d565b915050612d09565b6000612d598260206136cd565b6001600160401b03811115612d7057612d7061305d565b6040519080825280601f01601f191660200182016040528015612d9a576020820181803683370190505b50905060005b8151811015612a9e578383612db48161377d565b945081518110612dc657612dc6613751565b602001015160f81c60f81b828281518110612de357612de3613751565b60200101906001600160f81b031916908160001a90535080612e048161377d565b915050612da0565b7aff00000000000000ff00000000000000ff00000000000000ff000063ffffffff60401b604083901c90811663ffffffff60c01b84161760201c63ffffffff60601b919091166001600160e01b031984161717601081901c91821678ff00000000000000ff00000000000000ff00000000000000ff60301b821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790612f52827f060606060606060606060606060606060606060606060606060606060606060661373e565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f166007612f82919061370a565b612fac827f303030303030303030303030303030303030303030303030303030303030303061373e565b6103b9919061373e565b8282825b60208110612ff25781518352612fd160208461373e565b9250612fde60208361373e565b9150612feb6020826136cd565b9050612fba565b801561302b57600060016130078360206136cd565b61301390610100613a44565b61301d91906136cd565b835185518216911916178452505b505050505050565b60006020828403121561304557600080fd5b81356001600160e01b031981168114610ea257600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156130965761309661305d565b60405290565b60405161016081016001600160401b03811182821017156130965761309661305d565b604051601f8201601f191681016001600160401b03811182821017156130e7576130e761305d565b604052919050565b80356001600160a01b03811681146119f357600080fd5b803563ffffffff811681146119f357600080fd5b60008082840361014081121561312f57600080fd5b8335925061012080601f198301121561314757600080fd5b61314f613073565b915061315d602086016130ef565b825261316b604086016130ef565b6020830152606085013560408301526080850135606083015260a0850135608083015261319a60c086016130ef565b60a08301526131ab60e08601613106565b60c08301526101008581013560e0840152940135938101939093525092909150565b6000602082840312156131df57600080fd5b5035919050565b600080600080600060a086880312156131fe57600080fd5b8535945060208601359350613215604087016130ef565b94979396509394606081013594506080013592915050565b6000806040838503121561324057600080fd5b82359150613250602084016130ef565b90509250929050565b60005b8381101561327457818101518382015260200161325c565b50506000910152565b60008151808452613295816020860160208601613259565b601f01601f19169290920160200192915050565b602081526000610ea2602083018461327d565b6000806000606084860312156132d157600080fd5b833592506132e1602085016130ef565b9150604084013590509250925092565b60008060006060848603121561330657600080fd5b833592506020840135915061331d604085016130ef565b90509250925092565b600082601f83011261333757600080fd5b813560206001600160401b038211156133525761335261305d565b8160051b6133618282016130bf565b928352848101820192828101908785111561337b57600080fd5b83870192505b8483101561339a57823582529183019190830190613381565b979650505050505050565b600080600080608085870312156133bb57600080fd5b6133c485613106565b9350602085013592506133d9604086016130ef565b915060608501356001600160401b038111156133f457600080fd5b61340087828801613326565b91505092959194509250565b6000806040838503121561341f57600080fd5b50508035926020909101359150565b600080600080600060a0868803121561344657600080fd5b61344f86613106565b945060208601359350613464604087016130ef565b925060608601356001600160401b0381111561347f57600080fd5b61348b88828901613326565b92505061349a608087016130ef565b90509295509295909350565b803561ffff811681146119f357600080fd5b803560ff811681146119f357600080fd5b600082601f8301126134da57600080fd5b81356001600160401b038111156134f3576134f361305d565b613506601f8201601f19166020016130bf565b81815284602083860101111561351b57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561354a57600080fd5b81356001600160401b038082111561356157600080fd5b90830190610160828603121561357657600080fd5b61357e61309c565b613587836130ef565b8152613595602084016130ef565b60208201526135a660408401613106565b60408201526135b7606084016134a6565b60608201526135c8608084016134a6565b60808201526135d960a084016134b8565b60a08201526135ea60c084016130ef565b60c08201526135fb60e08401613106565b60e082015261010061360e8185016130ef565b908201526101206136208482016134b8565b90820152610140838101358381111561363857600080fd5b613644888287016134c9565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156136aa57603f1988860301845261369885835161327d565b9450928501929085019060010161367c565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103b9576103b96136b7565b634e487b7160e01b600052601260045260246000fd5b600082613705576137056136e0565b500490565b80820281158282048414176103b9576103b96136b7565b63ffffffff8181168382160190808211156126ca576126ca6136b7565b808201808211156103b9576103b96136b7565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001820161378f5761378f6136b7565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156137cf578151845292840192908401906001016137b3565b50505092019290925292915050565b6040815260006137f1604083018561327d565b90508260208301529392505050565b604081526000613813604083018561327d565b905060018060a01b03831660208301529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b8051602080830151919081101561282d5760001960209190910360031b1b16919050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516138ce816017850160208801613259565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516138ff816028840160208801613259565b01602801949350505050565b60408152600061391e604083018561327d565b8281036020840152611edd818561327d565b60008161393f5761393f6136b7565b506000190190565b60ff82811682821603908111156103b9576103b96136b7565b600181815b8085111561399b578160001904821115613981576139816136b7565b8085161561398e57918102915b93841c9390800290613965565b509250929050565b6000826139b2575060016103b9565b816139bf575060006103b9565b81600181146139d557600281146139df576139fb565b60019150506103b9565b60ff8411156139f0576139f06136b7565b50506001821b6103b9565b5060208310610133831016604e8410600b8410161715613a1e575081810a6103b9565b613a288383613960565b8060001904821115613a3c57613a3c6136b7565b029392505050565b6000610ea283836139a3565b600082613a5f57613a5f6136e0565b50069056fe5297e68f3a27f04914f2c6db0ad63b5e5c8173cebcc1a5341df045cf6dad7adca2646970667358221220986928980990e27df9046d70f9e4cb0ffa6fa8b3e64a6ad3145ae19b168ef32464736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
