{
  "_format": "hh-sol-artifact-1",
  "contractName": "ProxyReaderV04",
  "sourceName": "contracts/history/ProxyReaderV04.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "NAME",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "exists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "get",
      "outputs": [
        {
          "internalType": "string",
          "name": "value",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "keyHash",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getByHash",
      "outputs": [
        {
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "value",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getData",
      "outputs": [
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "values",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "keyHashes",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getDataByHash",
      "outputs": [
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "values",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "keyHashes",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "getDataByHashForMany",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "resolvers",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "owners",
          "type": "address[]"
        },
        {
          "internalType": "string[][]",
          "name": "keys",
          "type": "string[][]"
        },
        {
          "internalType": "string[][]",
          "name": "values",
          "type": "string[][]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "getDataForMany",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "resolvers",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "owners",
          "type": "address[]"
        },
        {
          "internalType": "string[][]",
          "name": "values",
          "type": "string[][]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getMany",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "values",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "keyHashes",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getManyByHash",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "values",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IUNSRegistry",
          "name": "unsRegistry",
          "type": "address"
        },
        {
          "internalType": "contract ICNSRegistry",
          "name": "cnsRegistry",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "isApprovedOrOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "labels",
          "type": "string[]"
        }
      ],
      "name": "namehash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "ownerOfForMany",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "owners",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "registryOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "resolverOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "reverseNameOf",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "reverseOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561000f575f80fd5b50612b068061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610187575f3560e01c8063869b8884116100d9578063b3f9e4cb11610093578063c15ae7cf1161006e578063c15ae7cf14610408578063c87b56dd14610428578063e985e9c51461043b578063ffa1ad741461044e575f80fd5b8063b3f9e4cb146103c1578063b85afd28146103d4578063bebec6b4146103f5575f80fd5b8063869b8884146102f757806391015f6b1461031a578063933c051d1461033c578063a3f4df7e1461035e578063a81ce6f91461038e578063ac9650d8146103a1575f80fd5b8063430c2081116101445780636352211e1161011f5780636352211e1461029d578063672b9f81146102b057806370a08231146102d15780637e37479e146102e4575f80fd5b8063430c208114610262578063485cc955146102755780634f558e791461028a575f80fd5b806301ffc9a71461018b57806303280755146101b3578063081812fc146101d65780631bd8cc1a146102015780631be5e7ed14610221578063276fabb114610241575b5f80fd5b61019e610199366004611f9e565b610472565b60405190151581526020015b60405180910390f35b6101c66101c1366004612005565b6104de565b6040516101aa94939291906120f1565b6101e96101e4366004612139565b610500565b6040516001600160a01b0390911681526020016101aa565b61021461020f366004612005565b6105ff565b6040516101aa9190612150565b61023461022f366004612162565b61061e565b6040516101aa91906121d2565b61025461024f3660046121e4565b610742565b6040519081526020016101aa565b61019e610270366004612239565b6107b3565b610288610283366004612263565b6108c0565b005b61019e610298366004612139565b610a0a565b6101e96102ab366004612139565b610a14565b6102c36102be36600461229a565b610a1e565b6040516101aa9291906122ba565b6102546102df3660046122de565b610b47565b6102546102f23660046122de565b610c40565b61030a6103053660046122f9565b610cac565b6040516101aa949392919061243a565b61032d610328366004612005565b610e97565b6040516101aa93929190612486565b61034f61034a3660046122f9565b610eb6565b6040516101aa939291906124b1565b610234604051806040016040528060118152602001702aa7299d10283937bc3c902932b0b232b960791b81525081565b6101e961039c366004612139565b611034565b6103b46103af3660046121e4565b6110fd565b6040516101aa91906124f3565b6101e96103cf366004612139565b6111e4565b6103e76103e2366004612005565b611268565b6040516101aa929190612555565b6102346104033660046122de565b61143d565b61041b6104163660046121e4565b6114ad565b6040516101aa9190612579565b610234610436366004612139565b611550565b61019e610449366004612263565b61161d565b61023460405180604001604052806005815260200164302e342e3160d81b81525081565b5f6001600160e01b031982166362526e6360e01b14806104a257506001600160e01b03198216636fa624af60e11b145b806104bd57506001600160e01b031982166308da864d60e31b145b806104d857506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f806060806104ee878787611667565b93509350935093505b93509350935093565b5f61050a826118bf565b61051557505f919050565b61051e82611953565b6105935760665460405163020604bf60e21b8152600481018490526001600160a01b039091169063081812fc906024015b602060405180830381865afa15801561056a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058e919061258b565b6104d8565b60655460405163020604bf60e21b8152600481018490526001600160a01b039091169063081812fc906024015b602060405180830381865afa1580156105db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d8919061258b565b606061061461060e8486612632565b83611999565b90505b9392505050565b606061062982611953565b156106aa57606554604051631be5e7ed60e01b81526001600160a01b0390911690631be5e7ed9061066290879087908790600401612705565b5f60405180830381865afa15801561067c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106a3919081019061276a565b9050610617565b5f6106b483611b14565b90506001600160a01b0381163b1561073a57604051631be5e7ed60e01b81526001600160a01b03821690631be5e7ed906106f690889088908890600401612705565b5f60405180830381865afa92505050801561073257506040513d5f823e601f3d908101601f1916820160405261072f919081019061276a565b60015b1561073a5791505b509392505050565b60655460405163276fabb160e01b81525f916001600160a01b03169063276fabb190610774908690869060040161281f565b602060405180830381865afa15801561078f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612832565b5f6107bd826118bf565b6107c857505f6104d8565b6107d182611953565b61084d5760665460405163430c208160e01b81526001600160a01b038581166004830152602482018590529091169063430c208190604401602060405180830381865afa158015610824573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190612849565b610617565b60655460405163430c208160e01b81526001600160a01b038581166004830152602482018590529091169063430c208190604401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612849565b5f54610100900460ff16158080156108de57505f54600160ff909116105b806108f75750303b1580156108f757505f5460ff166001145b61095f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610980575f805461ff0019166101001790555b606580546001600160a01b038086166001600160a01b03199283161790925560668054928516929091169190911790556109b8611b85565b6109c0611b85565b8015610a05575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f6104d8826118bf565b5f6104d882611bf1565b606080610a2a83611953565b15610aac5760655460405163672b9f8160e01b815260048101869052602481018590526001600160a01b039091169063672b9f81906044015f60405180830381865afa158015610a7c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610aa39190810190612868565b91509150610b40565b5f610ab684611b14565b90506001600160a01b0381163b15610b3e5760405163672b9f8160e01b815260048101869052602481018590526001600160a01b0382169063672b9f81906044015f60405180830381865afa925050508015610b3357506040513d5f823e601f3d908101601f19168201604052610b309190810190612868565b60015b15610b3e5790935091505b505b9250929050565b6065546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa158015610b92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb69190612832565b6066549091506001600160a01b0316156104d8576066546040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015610c12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c369190612832565b61061790826128c7565b606554604051633f1ba3cf60e11b81526001600160a01b0383811660048301525f921690637e37479e90602401602060405180830381865afa158015610c88573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d89190612832565b6060808080846001600160401b03811115610cc957610cc96125a6565b604051908082528060200260200182016040528015610cf2578160200160208202803683370190505b509350846001600160401b03811115610d0d57610d0d6125a6565b604051908082528060200260200182016040528015610d36578160200160208202803683370190505b509250846001600160401b03811115610d5157610d516125a6565b604051908082528060200260200182016040528015610d8457816020015b6060815260200190600190039081610d6f5790505b509150846001600160401b03811115610d9f57610d9f6125a6565b604051908082528060200260200182016040528015610dd257816020015b6060815260200190600190039081610dbd5790505b5090505f5b85811015610e8b57610e028989898985818110610df657610df66128e6565b90506020020135611667565b888581518110610e1457610e146128e6565b60200260200101888681518110610e2d57610e2d6128e6565b60200260200101888781518110610e4657610e466128e6565b60200260200101888881518110610e5f57610e5f6128e6565b6020908102919091010193909352929091526001600160a01b0392831690915291169052600101610dd7565b50945094509450949050565b5f806060610ea6868686611c11565b9250925092505b93509350939050565b60608080836001600160401b03811115610ed257610ed26125a6565b604051908082528060200260200182016040528015610efb578160200160208202803683370190505b509250836001600160401b03811115610f1657610f166125a6565b604051908082528060200260200182016040528015610f3f578160200160208202803683370190505b509150836001600160401b03811115610f5a57610f5a6125a6565b604051908082528060200260200182016040528015610f8d57816020015b6060815260200190600190039081610f785790505b5090505f5b8481101561102957610fbd8888888885818110610fb157610fb16128e6565b90506020020135611c11565b868481518110610fcf57610fcf6128e6565b60200260200101868581518110610fe857610fe86128e6565b60200260200101868681518110611001576110016128e6565b60209081029190910101929092526001600160a01b0392831690915291169052600101610f92565b509450945094915050565b606554604051634f558e7960e01b8152600481018390525f916001600160a01b031690634f558e7990602401602060405180830381865afa15801561107b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109f9190612849565b156110b55750506065546001600160a01b031690565b6066546001600160a01b0316158015906110e057505f6110d483611e13565b6001600160a01b031614155b156110f65750506066546001600160a01b031690565b505f919050565b6060816001600160401b03811115611117576111176125a6565b60405190808252806020026020018201604052801561114a57816020015b60608152602001906001900390816111355790505b5090505f5b828110156111dd576111b83085858481811061116d5761116d6128e6565b905060200281019061117f91906128fa565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611e4492505050565b8282815181106111ca576111ca6128e6565b602090810291909101015260010161114f565b5092915050565b5f6111ee826118bf565b6111f957505f919050565b61120282611953565b6112375760665460405163b3f9e4cb60e01b8152600481018490526001600160a01b039091169063b3f9e4cb9060240161054f565b60655460405163b3f9e4cb60e01b8152600481018490526001600160a01b039091169063b3f9e4cb906024016105c0565b606080836001600160401b03811115611283576112836125a6565b6040519080825280602002602001820160405280156112b657816020015b60608152602001906001900390816112a15790505b509150836001600160401b038111156112d1576112d16125a6565b60405190808252806020026020018201604052801561130457816020015b60608152602001906001900390816112ef5790505b50905061131083611953565b156113935760655460405163170b5fa560e31b81526001600160a01b039091169063b85afd28906113499088908890889060040161293c565b5f60405180830381865afa158015611363573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261138a91908101906129fd565b91509150611435565b5f61139d84611b14565b90506001600160a01b0381163b151580156113b757508415155b156114335760405163170b5fa560e31b81526001600160a01b0382169063b85afd28906113ec9089908990899060040161293c565b5f60405180830381865afa92505050801561142857506040513d5f823e601f3d908101601f1916820160405261142591908101906129fd565b60015b156114335790935091505b505b935093915050565b606554604051632fafb1ad60e21b81526001600160a01b038381166004830152606092169063bebec6b4906024015b5f60405180830381865afa158015611486573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104d8919081019061276a565b6060816001600160401b038111156114c7576114c76125a6565b6040519080825280602002602001820160405280156114f0578160200160208202803683370190505b5090505f5b828110156111dd5761151e848483818110611512576115126128e6565b90506020020135611bf1565b828281518110611530576115306128e6565b6001600160a01b03909216602092830291909101909101526001016114f5565b606061155b826118bf565b61157257505060408051602081019091525f815290565b61157b82611953565b6115ec5760665460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd906024015f60405180830381865afa1580156115c5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261058e919081019061276a565b60655460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd9060240161146c565b60405162461bcd60e51b815260206004820152601f60248201527f50726f78795265616465723a20554e535550504f525445445f4d4554484f440060448201525f90606401610956565b5f80606080856001600160401b03811115611684576116846125a6565b6040519080825280602002602001820160405280156116b757816020015b60608152602001906001900390816116a25790505b509150856001600160401b038111156116d2576116d26125a6565b60405190808252806020026020018201604052801561170557816020015b60608152602001906001900390816116f05790505b50905061171185611953565b1561180c5760655460405163b3f9e4cb60e01b8152600481018790526001600160a01b039091169063b3f9e4cb90602401602060405180830381865afa15801561175d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611781919061258b565b935061178c85611f34565b60655460405163170b5fa560e31b81529194506001600160a01b03169063b85afd28906117c1908a908a908a9060040161293c565b5f60405180830381865afa1580156117db573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261180291908101906129fd565b90925090506104f7565b61181585611b14565b935061182085611e13565b92506001600160a01b0384163b1515801561183b57505f8251115b156104f75760405163170b5fa560e31b81526001600160a01b0385169063b85afd2890611870908a908a908a9060040161293c565b5f60405180830381865afa9250505080156118ac57506040513d5f823e601f3d908101601f191682016040526118a991908101906129fd565b60015b156104f757909250905093509350935093565b5f6118c982611953565b6118e7575f6118d783611e13565b6001600160a01b031614156104d8565b606554604051634f558e7960e01b8152600481018490526001600160a01b0390911690634f558e79906024015b602060405180830381865afa15801561192f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d89190612849565b6066545f906001600160a01b031615806104d85750606554604051634f558e7960e01b8152600481018490526001600160a01b0390911690634f558e7990602401611914565b606082516001600160401b038111156119b4576119b46125a6565b6040519080825280602002602001820160405280156119e757816020015b60608152602001906001900390816119d25790505b5090506119f382611953565b15611a7257606554604051630dec660d60e11b81526001600160a01b0390911690631bd8cc1a90611a2a9086908690600401612a52565b5f60405180830381865afa158015611a44573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a6b9190810190612a73565b90506104d8565b5f611a7c83611b14565b90506001600160a01b0381163b15158015611a9757505f8451115b156111dd57604051630dec660d60e11b81526001600160a01b03821690631bd8cc1a90611aca9087908790600401612a52565b5f60405180830381865afa925050508015611b0657506040513d5f823e601f3d908101601f19168201604052611b039190810190612a73565b60015b156111dd575b949350505050565b60665460405163b3f9e4cb60e01b8152600481018390525f916001600160a01b03169063b3f9e4cb906024015b602060405180830381865afa925050508015611b7a575060408051601f3d908101601f19168201909252611b779181019061258b565b60015b6104d857505f919050565b5f54610100900460ff16611bef5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610956565b565b5f611bfb82611953565b611c085761058e82611e13565b6104d882611f34565b5f806060846001600160401b03811115611c2d57611c2d6125a6565b604051908082528060200260200182016040528015611c6057816020015b6060815260200190600190039081611c4b5790505b509050611c6c84611953565b15611d645760655460405163b3f9e4cb60e01b8152600481018690526001600160a01b039091169063b3f9e4cb90602401602060405180830381865afa158015611cb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cdc919061258b565b9250611ce784611f34565b606554604051630dec660d60e11b81529193506001600160a01b031690631bd8cc1a90611d1c90899089908990600401612aa4565b5f60405180830381865afa158015611d36573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d5d9190810190612a73565b9050610ead565b611d6d84611b14565b9250611d7884611e13565b91506001600160a01b0383163b15158015611d9257508415155b15610ead57604051630dec660d60e11b81526001600160a01b03841690631bd8cc1a90611dc790899089908990600401612aa4565b5f60405180830381865afa925050508015611e0357506040513d5f823e601f3d908101601f19168201604052611e009190810190612a73565b60015b15610ead57905093509350939050565b6066546040516331a9108f60e11b8152600481018390525f916001600160a01b031690636352211e90602401611b41565b60606001600160a01b0383163b611eac5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610956565b5f80846001600160a01b031684604051611ec69190612ab7565b5f60405180830381855af49150503d805f8114611efe576040519150601f19603f3d011682016040523d82523d5f602084013e611f03565b606091505b5091509150611f2b8282604051806060016040528060278152602001612ad360279139611f65565b95945050505050565b6065546040516331a9108f60e11b8152600481018390525f916001600160a01b031690636352211e90602401611b41565b60608315611f74575081610617565b825115611f845782518084602001fd5b8160405162461bcd60e51b815260040161095691906121d2565b5f60208284031215611fae575f80fd5b81356001600160e01b031981168114610617575f80fd5b5f8083601f840112611fd5575f80fd5b5081356001600160401b03811115611feb575f80fd5b6020830191508360208260051b8501011115610b40575f80fd5b5f805f60408486031215612017575f80fd5b83356001600160401b0381111561202c575f80fd5b61203886828701611fc5565b909790965060209590950135949350505050565b5f5b8381101561206657818101518382015260200161204e565b50505f910152565b5f815180845261208581602086016020860161204c565b601f01601f19169290920160200192915050565b5f8282518085526020808601955060208260051b840101602086015f5b848110156120e457601f198684030189526120d283835161206e565b988401989250908301906001016120b6565b5090979650505050505050565b6001600160a01b038581168252841660208201526080604082018190525f9061211c90830185612099565b828103606084015261212e8185612099565b979650505050505050565b5f60208284031215612149575f80fd5b5035919050565b602081525f6106176020830184612099565b5f805f60408486031215612174575f80fd5b83356001600160401b038082111561218a575f80fd5b818601915086601f83011261219d575f80fd5b8135818111156121ab575f80fd5b8760208285010111156121bc575f80fd5b6020928301989097509590910135949350505050565b602081525f610617602083018461206e565b5f80602083850312156121f5575f80fd5b82356001600160401b0381111561220a575f80fd5b61221685828601611fc5565b90969095509350505050565b6001600160a01b0381168114612236575f80fd5b50565b5f806040838503121561224a575f80fd5b823561225581612222565b946020939093013593505050565b5f8060408385031215612274575f80fd5b823561227f81612222565b9150602083013561228f81612222565b809150509250929050565b5f80604083850312156122ab575f80fd5b50508035926020909101359150565b604081525f6122cc604083018561206e565b8281036020840152611f2b818561206e565b5f602082840312156122ee575f80fd5b813561061781612222565b5f805f806040858703121561230c575f80fd5b84356001600160401b0380821115612322575f80fd5b61232e88838901611fc5565b90965094506020870135915080821115612346575f80fd5b5061235387828801611fc5565b95989497509550505050565b5f815180845260208085019450602084015f5b838110156123975781516001600160a01b031687529582019590820190600101612372565b509495945050505050565b5f828251808552602080860195506005818360051b8501018287015f5b8581101561242c57601f1987840381018b5282518051808652908701908786019080881b870189015f5b82811015612415578589830301845261240382865161206e565b948b0194938b019391506001016123e9565b509d89019d965050509286019250506001016123bf565b509098975050505050505050565b608081525f61244c608083018761235f565b828103602084015261245e818761235f565b9050828103604084015261247281866123a2565b9050828103606084015261212e81856123a2565b6001600160a01b038481168252831660208201526060604082018190525f90611f2b90830184612099565b606081525f6124c3606083018661235f565b82810360208401526124d5818661235f565b905082810360408401526124e981856123a2565b9695505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561254857603f1988860301845261253685835161206e565b9450928501929085019060010161251a565b5092979650505050505050565b604081525f6125676040830185612099565b8281036020840152611f2b8185612099565b602081525f610617602083018461235f565b5f6020828403121561259b575f80fd5b815161061781612222565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156125e2576125e26125a6565b604052919050565b5f6001600160401b03821115612602576126026125a6565b5060051b60200190565b5f6001600160401b03821115612624576126246125a6565b50601f01601f191660200190565b5f61264461263f846125ea565b6125ba565b80848252602080830192508560051b850136811115612661575f80fd5b855b818110156126d15780356001600160401b03811115612680575f80fd5b870136601f820112612690575f80fd5b803561269e61263f8261260c565b81815236868385010111156126b1575f80fd5b81868401878301375f918101860191909152865250938201938201612663565b50919695505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081525f6127186040830185876126dd565b9050826020830152949350505050565b5f82601f830112612737575f80fd5b815161274561263f8261260c565b818152846020838601011115612759575f80fd5b611b0c82602083016020870161204c565b5f6020828403121561277a575f80fd5b81516001600160401b0381111561278f575f80fd5b611b0c84828501612728565b5f838385526020808601955060208560051b830101845f5b878110156120e457848303601f19018952813536889003601e190181126127d8575f80fd5b870184810190356001600160401b038111156127f2575f80fd5b803603821315612800575f80fd5b61280b8582846126dd565b9a86019a94505050908301906001016127b3565b602081525f61061460208301848661279b565b5f60208284031215612842575f80fd5b5051919050565b5f60208284031215612859575f80fd5b81518015158114610617575f80fd5b5f8060408385031215612879575f80fd5b82516001600160401b038082111561288f575f80fd5b61289b86838701612728565b935060208501519150808211156128b0575f80fd5b506128bd85828601612728565b9150509250929050565b808201808211156104d857634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e1984360301811261290f575f80fd5b8301803591506001600160401b03821115612928575f80fd5b602001915036819003821315610b40575f80fd5b604080825281018390525f6001600160fb1b0384111561295a575f80fd5b8360051b808660608501376020830193909352500160600192915050565b5f82601f830112612987575f80fd5b8151602061299761263f836125ea565b82815260059290921b840181019181810190868411156129b5575f80fd5b8286015b848110156129f25780516001600160401b038111156129d6575f80fd5b6129e48986838b0101612728565b8452509183019183016129b9565b509695505050505050565b5f8060408385031215612a0e575f80fd5b82516001600160401b0380821115612a24575f80fd5b612a3086838701612978565b93506020850151915080821115612a45575f80fd5b506128bd85828601612978565b604081525f612a646040830185612099565b90508260208301529392505050565b5f60208284031215612a83575f80fd5b81516001600160401b03811115612a98575f80fd5b611b0c84828501612978565b604081525f61271860408301858761279b565b5f8251612ac881846020870161204c565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000818000a",
  "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610187575f3560e01c8063869b8884116100d9578063b3f9e4cb11610093578063c15ae7cf1161006e578063c15ae7cf14610408578063c87b56dd14610428578063e985e9c51461043b578063ffa1ad741461044e575f80fd5b8063b3f9e4cb146103c1578063b85afd28146103d4578063bebec6b4146103f5575f80fd5b8063869b8884146102f757806391015f6b1461031a578063933c051d1461033c578063a3f4df7e1461035e578063a81ce6f91461038e578063ac9650d8146103a1575f80fd5b8063430c2081116101445780636352211e1161011f5780636352211e1461029d578063672b9f81146102b057806370a08231146102d15780637e37479e146102e4575f80fd5b8063430c208114610262578063485cc955146102755780634f558e791461028a575f80fd5b806301ffc9a71461018b57806303280755146101b3578063081812fc146101d65780631bd8cc1a146102015780631be5e7ed14610221578063276fabb114610241575b5f80fd5b61019e610199366004611f9e565b610472565b60405190151581526020015b60405180910390f35b6101c66101c1366004612005565b6104de565b6040516101aa94939291906120f1565b6101e96101e4366004612139565b610500565b6040516001600160a01b0390911681526020016101aa565b61021461020f366004612005565b6105ff565b6040516101aa9190612150565b61023461022f366004612162565b61061e565b6040516101aa91906121d2565b61025461024f3660046121e4565b610742565b6040519081526020016101aa565b61019e610270366004612239565b6107b3565b610288610283366004612263565b6108c0565b005b61019e610298366004612139565b610a0a565b6101e96102ab366004612139565b610a14565b6102c36102be36600461229a565b610a1e565b6040516101aa9291906122ba565b6102546102df3660046122de565b610b47565b6102546102f23660046122de565b610c40565b61030a6103053660046122f9565b610cac565b6040516101aa949392919061243a565b61032d610328366004612005565b610e97565b6040516101aa93929190612486565b61034f61034a3660046122f9565b610eb6565b6040516101aa939291906124b1565b610234604051806040016040528060118152602001702aa7299d10283937bc3c902932b0b232b960791b81525081565b6101e961039c366004612139565b611034565b6103b46103af3660046121e4565b6110fd565b6040516101aa91906124f3565b6101e96103cf366004612139565b6111e4565b6103e76103e2366004612005565b611268565b6040516101aa929190612555565b6102346104033660046122de565b61143d565b61041b6104163660046121e4565b6114ad565b6040516101aa9190612579565b610234610436366004612139565b611550565b61019e610449366004612263565b61161d565b61023460405180604001604052806005815260200164302e342e3160d81b81525081565b5f6001600160e01b031982166362526e6360e01b14806104a257506001600160e01b03198216636fa624af60e11b145b806104bd57506001600160e01b031982166308da864d60e31b145b806104d857506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f806060806104ee878787611667565b93509350935093505b93509350935093565b5f61050a826118bf565b61051557505f919050565b61051e82611953565b6105935760665460405163020604bf60e21b8152600481018490526001600160a01b039091169063081812fc906024015b602060405180830381865afa15801561056a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058e919061258b565b6104d8565b60655460405163020604bf60e21b8152600481018490526001600160a01b039091169063081812fc906024015b602060405180830381865afa1580156105db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d8919061258b565b606061061461060e8486612632565b83611999565b90505b9392505050565b606061062982611953565b156106aa57606554604051631be5e7ed60e01b81526001600160a01b0390911690631be5e7ed9061066290879087908790600401612705565b5f60405180830381865afa15801561067c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106a3919081019061276a565b9050610617565b5f6106b483611b14565b90506001600160a01b0381163b1561073a57604051631be5e7ed60e01b81526001600160a01b03821690631be5e7ed906106f690889088908890600401612705565b5f60405180830381865afa92505050801561073257506040513d5f823e601f3d908101601f1916820160405261072f919081019061276a565b60015b1561073a5791505b509392505050565b60655460405163276fabb160e01b81525f916001600160a01b03169063276fabb190610774908690869060040161281f565b602060405180830381865afa15801561078f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612832565b5f6107bd826118bf565b6107c857505f6104d8565b6107d182611953565b61084d5760665460405163430c208160e01b81526001600160a01b038581166004830152602482018590529091169063430c208190604401602060405180830381865afa158015610824573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190612849565b610617565b60655460405163430c208160e01b81526001600160a01b038581166004830152602482018590529091169063430c208190604401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612849565b5f54610100900460ff16158080156108de57505f54600160ff909116105b806108f75750303b1580156108f757505f5460ff166001145b61095f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610980575f805461ff0019166101001790555b606580546001600160a01b038086166001600160a01b03199283161790925560668054928516929091169190911790556109b8611b85565b6109c0611b85565b8015610a05575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f6104d8826118bf565b5f6104d882611bf1565b606080610a2a83611953565b15610aac5760655460405163672b9f8160e01b815260048101869052602481018590526001600160a01b039091169063672b9f81906044015f60405180830381865afa158015610a7c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610aa39190810190612868565b91509150610b40565b5f610ab684611b14565b90506001600160a01b0381163b15610b3e5760405163672b9f8160e01b815260048101869052602481018590526001600160a01b0382169063672b9f81906044015f60405180830381865afa925050508015610b3357506040513d5f823e601f3d908101601f19168201604052610b309190810190612868565b60015b15610b3e5790935091505b505b9250929050565b6065546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa158015610b92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb69190612832565b6066549091506001600160a01b0316156104d8576066546040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015610c12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c369190612832565b61061790826128c7565b606554604051633f1ba3cf60e11b81526001600160a01b0383811660048301525f921690637e37479e90602401602060405180830381865afa158015610c88573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d89190612832565b6060808080846001600160401b03811115610cc957610cc96125a6565b604051908082528060200260200182016040528015610cf2578160200160208202803683370190505b509350846001600160401b03811115610d0d57610d0d6125a6565b604051908082528060200260200182016040528015610d36578160200160208202803683370190505b509250846001600160401b03811115610d5157610d516125a6565b604051908082528060200260200182016040528015610d8457816020015b6060815260200190600190039081610d6f5790505b509150846001600160401b03811115610d9f57610d9f6125a6565b604051908082528060200260200182016040528015610dd257816020015b6060815260200190600190039081610dbd5790505b5090505f5b85811015610e8b57610e028989898985818110610df657610df66128e6565b90506020020135611667565b888581518110610e1457610e146128e6565b60200260200101888681518110610e2d57610e2d6128e6565b60200260200101888781518110610e4657610e466128e6565b60200260200101888881518110610e5f57610e5f6128e6565b6020908102919091010193909352929091526001600160a01b0392831690915291169052600101610dd7565b50945094509450949050565b5f806060610ea6868686611c11565b9250925092505b93509350939050565b60608080836001600160401b03811115610ed257610ed26125a6565b604051908082528060200260200182016040528015610efb578160200160208202803683370190505b509250836001600160401b03811115610f1657610f166125a6565b604051908082528060200260200182016040528015610f3f578160200160208202803683370190505b509150836001600160401b03811115610f5a57610f5a6125a6565b604051908082528060200260200182016040528015610f8d57816020015b6060815260200190600190039081610f785790505b5090505f5b8481101561102957610fbd8888888885818110610fb157610fb16128e6565b90506020020135611c11565b868481518110610fcf57610fcf6128e6565b60200260200101868581518110610fe857610fe86128e6565b60200260200101868681518110611001576110016128e6565b60209081029190910101929092526001600160a01b0392831690915291169052600101610f92565b509450945094915050565b606554604051634f558e7960e01b8152600481018390525f916001600160a01b031690634f558e7990602401602060405180830381865afa15801561107b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109f9190612849565b156110b55750506065546001600160a01b031690565b6066546001600160a01b0316158015906110e057505f6110d483611e13565b6001600160a01b031614155b156110f65750506066546001600160a01b031690565b505f919050565b6060816001600160401b03811115611117576111176125a6565b60405190808252806020026020018201604052801561114a57816020015b60608152602001906001900390816111355790505b5090505f5b828110156111dd576111b83085858481811061116d5761116d6128e6565b905060200281019061117f91906128fa565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611e4492505050565b8282815181106111ca576111ca6128e6565b602090810291909101015260010161114f565b5092915050565b5f6111ee826118bf565b6111f957505f919050565b61120282611953565b6112375760665460405163b3f9e4cb60e01b8152600481018490526001600160a01b039091169063b3f9e4cb9060240161054f565b60655460405163b3f9e4cb60e01b8152600481018490526001600160a01b039091169063b3f9e4cb906024016105c0565b606080836001600160401b03811115611283576112836125a6565b6040519080825280602002602001820160405280156112b657816020015b60608152602001906001900390816112a15790505b509150836001600160401b038111156112d1576112d16125a6565b60405190808252806020026020018201604052801561130457816020015b60608152602001906001900390816112ef5790505b50905061131083611953565b156113935760655460405163170b5fa560e31b81526001600160a01b039091169063b85afd28906113499088908890889060040161293c565b5f60405180830381865afa158015611363573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261138a91908101906129fd565b91509150611435565b5f61139d84611b14565b90506001600160a01b0381163b151580156113b757508415155b156114335760405163170b5fa560e31b81526001600160a01b0382169063b85afd28906113ec9089908990899060040161293c565b5f60405180830381865afa92505050801561142857506040513d5f823e601f3d908101601f1916820160405261142591908101906129fd565b60015b156114335790935091505b505b935093915050565b606554604051632fafb1ad60e21b81526001600160a01b038381166004830152606092169063bebec6b4906024015b5f60405180830381865afa158015611486573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104d8919081019061276a565b6060816001600160401b038111156114c7576114c76125a6565b6040519080825280602002602001820160405280156114f0578160200160208202803683370190505b5090505f5b828110156111dd5761151e848483818110611512576115126128e6565b90506020020135611bf1565b828281518110611530576115306128e6565b6001600160a01b03909216602092830291909101909101526001016114f5565b606061155b826118bf565b61157257505060408051602081019091525f815290565b61157b82611953565b6115ec5760665460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd906024015f60405180830381865afa1580156115c5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261058e919081019061276a565b60655460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd9060240161146c565b60405162461bcd60e51b815260206004820152601f60248201527f50726f78795265616465723a20554e535550504f525445445f4d4554484f440060448201525f90606401610956565b5f80606080856001600160401b03811115611684576116846125a6565b6040519080825280602002602001820160405280156116b757816020015b60608152602001906001900390816116a25790505b509150856001600160401b038111156116d2576116d26125a6565b60405190808252806020026020018201604052801561170557816020015b60608152602001906001900390816116f05790505b50905061171185611953565b1561180c5760655460405163b3f9e4cb60e01b8152600481018790526001600160a01b039091169063b3f9e4cb90602401602060405180830381865afa15801561175d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611781919061258b565b935061178c85611f34565b60655460405163170b5fa560e31b81529194506001600160a01b03169063b85afd28906117c1908a908a908a9060040161293c565b5f60405180830381865afa1580156117db573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261180291908101906129fd565b90925090506104f7565b61181585611b14565b935061182085611e13565b92506001600160a01b0384163b1515801561183b57505f8251115b156104f75760405163170b5fa560e31b81526001600160a01b0385169063b85afd2890611870908a908a908a9060040161293c565b5f60405180830381865afa9250505080156118ac57506040513d5f823e601f3d908101601f191682016040526118a991908101906129fd565b60015b156104f757909250905093509350935093565b5f6118c982611953565b6118e7575f6118d783611e13565b6001600160a01b031614156104d8565b606554604051634f558e7960e01b8152600481018490526001600160a01b0390911690634f558e79906024015b602060405180830381865afa15801561192f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d89190612849565b6066545f906001600160a01b031615806104d85750606554604051634f558e7960e01b8152600481018490526001600160a01b0390911690634f558e7990602401611914565b606082516001600160401b038111156119b4576119b46125a6565b6040519080825280602002602001820160405280156119e757816020015b60608152602001906001900390816119d25790505b5090506119f382611953565b15611a7257606554604051630dec660d60e11b81526001600160a01b0390911690631bd8cc1a90611a2a9086908690600401612a52565b5f60405180830381865afa158015611a44573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a6b9190810190612a73565b90506104d8565b5f611a7c83611b14565b90506001600160a01b0381163b15158015611a9757505f8451115b156111dd57604051630dec660d60e11b81526001600160a01b03821690631bd8cc1a90611aca9087908790600401612a52565b5f60405180830381865afa925050508015611b0657506040513d5f823e601f3d908101601f19168201604052611b039190810190612a73565b60015b156111dd575b949350505050565b60665460405163b3f9e4cb60e01b8152600481018390525f916001600160a01b03169063b3f9e4cb906024015b602060405180830381865afa925050508015611b7a575060408051601f3d908101601f19168201909252611b779181019061258b565b60015b6104d857505f919050565b5f54610100900460ff16611bef5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610956565b565b5f611bfb82611953565b611c085761058e82611e13565b6104d882611f34565b5f806060846001600160401b03811115611c2d57611c2d6125a6565b604051908082528060200260200182016040528015611c6057816020015b6060815260200190600190039081611c4b5790505b509050611c6c84611953565b15611d645760655460405163b3f9e4cb60e01b8152600481018690526001600160a01b039091169063b3f9e4cb90602401602060405180830381865afa158015611cb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cdc919061258b565b9250611ce784611f34565b606554604051630dec660d60e11b81529193506001600160a01b031690631bd8cc1a90611d1c90899089908990600401612aa4565b5f60405180830381865afa158015611d36573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d5d9190810190612a73565b9050610ead565b611d6d84611b14565b9250611d7884611e13565b91506001600160a01b0383163b15158015611d9257508415155b15610ead57604051630dec660d60e11b81526001600160a01b03841690631bd8cc1a90611dc790899089908990600401612aa4565b5f60405180830381865afa925050508015611e0357506040513d5f823e601f3d908101601f19168201604052611e009190810190612a73565b60015b15610ead57905093509350939050565b6066546040516331a9108f60e11b8152600481018390525f916001600160a01b031690636352211e90602401611b41565b60606001600160a01b0383163b611eac5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610956565b5f80846001600160a01b031684604051611ec69190612ab7565b5f60405180830381855af49150503d805f8114611efe576040519150601f19603f3d011682016040523d82523d5f602084013e611f03565b606091505b5091509150611f2b8282604051806060016040528060278152602001612ad360279139611f65565b95945050505050565b6065546040516331a9108f60e11b8152600481018390525f916001600160a01b031690636352211e90602401611b41565b60608315611f74575081610617565b825115611f845782518084602001fd5b8160405162461bcd60e51b815260040161095691906121d2565b5f60208284031215611fae575f80fd5b81356001600160e01b031981168114610617575f80fd5b5f8083601f840112611fd5575f80fd5b5081356001600160401b03811115611feb575f80fd5b6020830191508360208260051b8501011115610b40575f80fd5b5f805f60408486031215612017575f80fd5b83356001600160401b0381111561202c575f80fd5b61203886828701611fc5565b909790965060209590950135949350505050565b5f5b8381101561206657818101518382015260200161204e565b50505f910152565b5f815180845261208581602086016020860161204c565b601f01601f19169290920160200192915050565b5f8282518085526020808601955060208260051b840101602086015f5b848110156120e457601f198684030189526120d283835161206e565b988401989250908301906001016120b6565b5090979650505050505050565b6001600160a01b038581168252841660208201526080604082018190525f9061211c90830185612099565b828103606084015261212e8185612099565b979650505050505050565b5f60208284031215612149575f80fd5b5035919050565b602081525f6106176020830184612099565b5f805f60408486031215612174575f80fd5b83356001600160401b038082111561218a575f80fd5b818601915086601f83011261219d575f80fd5b8135818111156121ab575f80fd5b8760208285010111156121bc575f80fd5b6020928301989097509590910135949350505050565b602081525f610617602083018461206e565b5f80602083850312156121f5575f80fd5b82356001600160401b0381111561220a575f80fd5b61221685828601611fc5565b90969095509350505050565b6001600160a01b0381168114612236575f80fd5b50565b5f806040838503121561224a575f80fd5b823561225581612222565b946020939093013593505050565b5f8060408385031215612274575f80fd5b823561227f81612222565b9150602083013561228f81612222565b809150509250929050565b5f80604083850312156122ab575f80fd5b50508035926020909101359150565b604081525f6122cc604083018561206e565b8281036020840152611f2b818561206e565b5f602082840312156122ee575f80fd5b813561061781612222565b5f805f806040858703121561230c575f80fd5b84356001600160401b0380821115612322575f80fd5b61232e88838901611fc5565b90965094506020870135915080821115612346575f80fd5b5061235387828801611fc5565b95989497509550505050565b5f815180845260208085019450602084015f5b838110156123975781516001600160a01b031687529582019590820190600101612372565b509495945050505050565b5f828251808552602080860195506005818360051b8501018287015f5b8581101561242c57601f1987840381018b5282518051808652908701908786019080881b870189015f5b82811015612415578589830301845261240382865161206e565b948b0194938b019391506001016123e9565b509d89019d965050509286019250506001016123bf565b509098975050505050505050565b608081525f61244c608083018761235f565b828103602084015261245e818761235f565b9050828103604084015261247281866123a2565b9050828103606084015261212e81856123a2565b6001600160a01b038481168252831660208201526060604082018190525f90611f2b90830184612099565b606081525f6124c3606083018661235f565b82810360208401526124d5818661235f565b905082810360408401526124e981856123a2565b9695505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561254857603f1988860301845261253685835161206e565b9450928501929085019060010161251a565b5092979650505050505050565b604081525f6125676040830185612099565b8281036020840152611f2b8185612099565b602081525f610617602083018461235f565b5f6020828403121561259b575f80fd5b815161061781612222565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156125e2576125e26125a6565b604052919050565b5f6001600160401b03821115612602576126026125a6565b5060051b60200190565b5f6001600160401b03821115612624576126246125a6565b50601f01601f191660200190565b5f61264461263f846125ea565b6125ba565b80848252602080830192508560051b850136811115612661575f80fd5b855b818110156126d15780356001600160401b03811115612680575f80fd5b870136601f820112612690575f80fd5b803561269e61263f8261260c565b81815236868385010111156126b1575f80fd5b81868401878301375f918101860191909152865250938201938201612663565b50919695505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081525f6127186040830185876126dd565b9050826020830152949350505050565b5f82601f830112612737575f80fd5b815161274561263f8261260c565b818152846020838601011115612759575f80fd5b611b0c82602083016020870161204c565b5f6020828403121561277a575f80fd5b81516001600160401b0381111561278f575f80fd5b611b0c84828501612728565b5f838385526020808601955060208560051b830101845f5b878110156120e457848303601f19018952813536889003601e190181126127d8575f80fd5b870184810190356001600160401b038111156127f2575f80fd5b803603821315612800575f80fd5b61280b8582846126dd565b9a86019a94505050908301906001016127b3565b602081525f61061460208301848661279b565b5f60208284031215612842575f80fd5b5051919050565b5f60208284031215612859575f80fd5b81518015158114610617575f80fd5b5f8060408385031215612879575f80fd5b82516001600160401b038082111561288f575f80fd5b61289b86838701612728565b935060208501519150808211156128b0575f80fd5b506128bd85828601612728565b9150509250929050565b808201808211156104d857634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e1984360301811261290f575f80fd5b8301803591506001600160401b03821115612928575f80fd5b602001915036819003821315610b40575f80fd5b604080825281018390525f6001600160fb1b0384111561295a575f80fd5b8360051b808660608501376020830193909352500160600192915050565b5f82601f830112612987575f80fd5b8151602061299761263f836125ea565b82815260059290921b840181019181810190868411156129b5575f80fd5b8286015b848110156129f25780516001600160401b038111156129d6575f80fd5b6129e48986838b0101612728565b8452509183019183016129b9565b509695505050505050565b5f8060408385031215612a0e575f80fd5b82516001600160401b0380821115612a24575f80fd5b612a3086838701612978565b93506020850151915080821115612a45575f80fd5b506128bd85828601612978565b604081525f612a646040830185612099565b90508260208301529392505050565b5f60208284031215612a83575f80fd5b81516001600160401b03811115612a98575f80fd5b611b0c84828501612978565b604081525f61271860408301858761279b565b5f8251612ac881846020870161204c565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000818000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
