{
    "_format": "hh-sol-artifact-1",
    "contractName": "OrgId",
    "sourceName": "contracts/OrgId.sol",
    "abi": [
        {
            "inputs": [],
            "name": "CalledNotByOrgIdOwner",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "InvalidDelegatesInput",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                }
            ],
            "name": "OrgIdAlreadyExists",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                }
            ],
            "name": "OrgIdNotFound",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "OrgJsonUriEmpty",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "TokenNotFound",
            "type": "error"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "approved",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "approved",
                    "type": "bool"
                }
            ],
            "name": "ApprovalForAll",
            "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": "orgId",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "OrgIdCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "string[]",
                    "name": "delegates",
                    "type": "string[]"
                }
            ],
            "name": "OrgIdDelegatesAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "string[]",
                    "name": "delegates",
                    "type": "string[]"
                }
            ],
            "name": "OrgIdDelegatesRemoved",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "orgJsonUri",
                    "type": "string"
                }
            ],
            "name": "OrgJsonUriChanged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "internalType": "string[]",
                    "name": "dids",
                    "type": "string[]"
                }
            ],
            "name": "addDelegates",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "salt",
                    "type": "bytes32"
                },
                {
                    "internalType": "string",
                    "name": "orgJsonUri",
                    "type": "string"
                }
            ],
            "name": "createOrgId",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "salt",
                    "type": "bytes32"
                },
                {
                    "internalType": "string",
                    "name": "orgJsonUri",
                    "type": "string"
                },
                {
                    "internalType": "string[]",
                    "name": "dids",
                    "type": "string[]"
                }
            ],
            "name": "createOrgId",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "internalType": "string",
                    "name": "orgJsonUri",
                    "type": "string"
                },
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "string[]",
                    "name": "dids",
                    "type": "string[]"
                }
            ],
            "name": "createOrgIdFor",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "getApproved",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                }
            ],
            "name": "getDelegates",
            "outputs": [
                {
                    "internalType": "string[]",
                    "name": "dids",
                    "type": "string[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "getOrgId",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "exists",
                    "type": "bool"
                },
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "internalType": "string",
                    "name": "orgJsonUri",
                    "type": "string"
                },
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "cursor",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "count",
                    "type": "uint256"
                }
            ],
            "name": "getOrgIds",
            "outputs": [
                {
                    "internalType": "bytes32[]",
                    "name": "orgIds",
                    "type": "bytes32[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getOrgIds",
            "outputs": [
                {
                    "internalType": "bytes32[]",
                    "name": "orgIds",
                    "type": "bytes32[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                }
            ],
            "name": "getTokenId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "isApprovedForAll",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "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": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                }
            ],
            "name": "removeDelegates",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "internalType": "string[]",
                    "name": "dids",
                    "type": "string[]"
                }
            ],
            "name": "removeDelegates",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "internalType": "bool",
                    "name": "approved",
                    "type": "bool"
                }
            ],
            "name": "setApprovalForAll",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "internalType": "string",
                    "name": "orgJsonUri",
                    "type": "string"
                }
            ],
            "name": "setOrgJson",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "orgId",
                    "type": "bytes32"
                },
                {
                    "internalType": "string",
                    "name": "orgJsonUri",
                    "type": "string"
                },
                {
                    "internalType": "string[]",
                    "name": "dids",
                    "type": "string[]"
                }
            ],
            "name": "setOrgJson",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "index",
                    "type": "uint256"
                }
            ],
            "name": "tokenByIndex",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "index",
                    "type": "uint256"
                }
            ],
            "name": "tokenOfOwnerByIndex",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "tokenURI",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b506131e0806100206000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636bad883511610104578063b676e2ff116100a2578063c9cb65e111610071578063c9cb65e114610419578063dfe0f51114610439578063e4f649901461044c578063e985e9c51461045457600080fd5b8063b676e2ff146103cd578063b88d4fde146103e0578063bc52570b146103f3578063c87b56dd1461040657600080fd5b80638129fc1c116100de5780638129fc1c1461038757806395d89b411461038f57806398980a8a14610397578063a22cb465146103ba57600080fd5b80636bad88351461034e57806370a0823114610361578063740fd7cd1461037457600080fd5b806323b872dd1161017c5780634f6ccce71161014b5780634f6ccce7146102f55780635d96b739146103085780636352211e1461031b57806363ceab541461032e57600080fd5b806323b872dd146102a95780632f745c59146102bc57806335178d91146102cf57806342842e0e146102e257600080fd5b8063081812fc116101b8578063081812fc14610240578063095ea7b31461026b5780630ad0abce1461028057806318160ddd146102a157600080fd5b80630193eda6146101df57806301ffc9a71461020857806306fdde031461022b575b600080fd5b6101f26101ed3660046125d7565b610490565b6040516101ff91906125f9565b60405180910390f35b61021b610216366004612653565b610665565b60405190151581526020016101ff565b610233610676565b6040516101ff91906126c7565b61025361024e3660046126da565b610708565b6040516001600160a01b0390911681526020016101ff565b61027e61027936600461270a565b61072f565b005b61029361028e36600461277c565b610849565b6040519081526020016101ff565b609954610293565b61027e6102b73660046127c7565b61095e565b6102936102ca36600461270a565b61098f565b61027e6102dd36600461277c565b610a25565b61027e6102f03660046127c7565b610b2a565b6102936103033660046126da565b610b45565b61027e610316366004612847565b610bd8565b6102536103293660046126da565b610d65565b61034161033c3660046126da565b610dc5565b6040516101ff9190612885565b61027e61035c3660046128e7565b610de0565b61029361036f366004612960565b610e1e565b61027e61038236600461297b565b610ea4565b61027e610f51565b6102336110a6565b6103aa6103a53660046126da565b6110b5565b6040516101ff9493929190612a07565b61027e6103c8366004612a41565b61118f565b61027e6103db3660046128e7565b61119e565b61027e6103ee366004612b1a565b6111be565b61027e6104013660046126da565b6111f6565b6102336104143660046126da565b6112f6565b6102936104273660046126da565b600090815260c9602052604090205490565b61027e610447366004612b95565b6113cf565b6101f261151c565b61021b610462366004612c79565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60606000826001600160401b038111156104ac576104ac612a7d565b6040519080825280602002602001820160405280156104d5578160200160208202803683370190505b509050600080855b60cc54811080156104f657506104f38688612cc2565b81105b1561058c5760cc818154811061050e5761050e612cd5565b906000526020600020015484848151811061052b5761052b612cd5565b6020026020010181815250506000801b60cc828154811061054e5761054e612cd5565b90600052602060002001541461056c578161056881612ceb565b9250505b8261057681612ceb565b935050808061058490612ceb565b9150506104dd565b50806001600160401b038111156105a5576105a5612a7d565b6040519080825280602002602001820160405280156105ce578160200160208202803683370190505b5093506000915060005b835181101561065b576000801b8482815181106105f7576105f7612cd5565b6020026020010151146106495783818151811061061657610616612cd5565b602002602001015185848151811061063057610630612cd5565b60209081029190910101528261064581612ceb565b9350505b8061065381612ceb565b9150506105d8565b5050505092915050565b600061067082611573565b92915050565b60606065805461068590612d04565b80601f01602080910402602001604051908101604052809291908181526020018280546106b190612d04565b80156106fe5780601f106106d3576101008083540402835291602001916106fe565b820191906000526020600020905b8154815290600101906020018083116106e157829003601f168201915b5050505050905090565b60006107138261157e565b506000908152606960205260409020546001600160a01b031690565b600061073a82610d65565b9050806001600160a01b0316836001600160a01b0316036107ac5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806107c857506107c88133610462565b61083a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016107a3565b61084483836115dd565b505050565b600081810361086b57604051633f0e0a7f60e21b815260040160405180910390fd5b6000336040516bffffffffffffffffffffffff19606083901b1660208201526034810187905290915060009060540160408051601f19818403018152918152815160209283012060cc8054600181019091557f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe01819055600081815260c990935291205490915015610913576040516358dc901360e01b8152600481018290526024016107a3565b6109558186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925061164b915050565b95945050505050565b6109683382611706565b6109845760405162461bcd60e51b81526004016107a390612d3e565b610844838383611785565b600061099a83610e1e565b82106109fc5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016107a3565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b82801580610a3f5750600081815260c96020526040902054155b15610a60576040516387fe3aad60e01b8152600481018290526024016107a3565b600081815260c960205260409020543390610a7a90610d65565b6001600160a01b031614610aa157604051635612e54f60e11b815260040160405180910390fd5b6000829003610ac357604051633f0e0a7f60e21b815260040160405180910390fd5b600084815260c96020908152604080832054835260cb9091529020610ae9838583612dd2565b50837f4e0249d19860daeb2f0627d804cc93426e237cb754fef478c3a6cbcbc27626578484604051610b1c929190612eba565b60405180910390a250505050565b610844838383604051806020016040528060008152506111be565b6000610b5060995490565b8210610bb35760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016107a3565b60998281548110610bc657610bc6612cd5565b90600052602060002001549050919050565b82801580610bf25750600081815260c96020526040902054155b15610c13576040516387fe3aad60e01b8152600481018290526024016107a3565b600081815260c960205260409020543390610c2d90610d65565b6001600160a01b031614610c5457604051635612e54f60e11b815260040160405180910390fd5b6000829003610c7657604051634816a76760e01b815260040160405180910390fd5b6000805b83811015610d2357610cf1858583818110610c9757610c97612cd5565b9050602002810190610ca99190612ece565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508b8152610100602052604090209392505061192c9050565b915081610d1157604051634816a76760e01b815260040160405180910390fd5b80610d1b81612ceb565b915050610c7a565b50847f9af1bf1f55d94dc29bfe249a6e5c1f9b82c06fee0cdaeada46f044b69f68c7cc8585604051610d56929190612f14565b60405180910390a25050505050565b6000818152606760205260408120546001600160a01b0316806106705760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107a3565b600081815261010060205260409020606090610670906119cd565b610deb858585610a25565b6000610df686610dc5565b511115610e0657610e06856111f6565b8015610e1757610e17858383610bd8565b5050505050565b60006001600160a01b038216610e885760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107a3565b506001600160a01b031660009081526068602052604090205490565b600086815260c9602052604090205415610ed4576040516358dc901360e01b8152600481018790526024016107a3565b6000849003610ef657604051633f0e0a7f60e21b815260040160405180910390fd5b610f388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925061164b915050565b8015610f4957610f49868383610bd8565b505050505050565b600054610100900460ff1615808015610f715750600054600160ff909116105b80610f8b5750303b158015610f8b575060005460ff166001145b610fee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a3565b6000805460ff191660011790558015611011576000805461ff0019166101001790555b6110556040518060400160405280600581526020016413d491da5160da1b8152506040518060400160405280600581526020016413d491da5160da1b815250611aaa565b61105d611adb565b80156110a3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60606066805461068590612d04565b600081815260ca602090815260408083205460679092528220546001600160a01b03161580159260609161118857600085815260cb6020526040902080546110fc90612d04565b80601f016020809104026020016040519081016040528092919081815260200182805461112890612d04565b80156111755780601f1061114a57610100808354040283529160200191611175565b820191906000526020600020905b81548152906001019060200180831161115857829003601f168201915b5050505050915061118585610d65565b90505b9193509193565b61119a338383611b0c565b5050565b60006111ab868686610849565b90508115610f4957610f49818484610bd8565b6111c83383611706565b6111e45760405162461bcd60e51b81526004016107a390612d3e565b6111f084848484611bda565b50505050565b808015806112105750600081815260c96020526040902054155b15611231576040516387fe3aad60e01b8152600481018290526024016107a3565b600081815260c96020526040902054339061124b90610d65565b6001600160a01b03161461127257604051635612e54f60e11b815260040160405180910390fd5b60008281526101006020526040812061128a906119cd565b600084815261010060205260408120919250906112a690611c0d565b9050806112c657604051634816a76760e01b815260040160405180910390fd5b837fb3c3b87d0ea8237b590c2dbf7d3acf90e54a40cf0ef1e4c0d948736e1fabd8a983604051610b1c9190612885565b6000818152606760205260409020546060906001600160a01b0316611331576040516306caeb1360e41b8152600481018390526024016107a3565b600082815260cb60205260409020805461134a90612d04565b80601f016020809104026020016040519081016040528092919081815260200182805461137690612d04565b80156113c35780601f10611398576101008083540402835291602001916113c3565b820191906000526020600020905b8154815290600101906020018083116113a657829003601f168201915b50505050509050919050565b818015806113e95750600081815260c96020526040902054155b1561140a576040516387fe3aad60e01b8152600481018290526024016107a3565b600081815260c96020526040902054339061142490610d65565b6001600160a01b03161461144b57604051635612e54f60e11b815260040160405180910390fd5b815160000361146d57604051634816a76760e01b815260040160405180910390fd5b6000805b83518110156114eb576114b984828151811061148f5761148f612cd5565b60200260200101516101006000888152602001908152602001600020611d3190919063ffffffff16565b9150816114d957604051634816a76760e01b815260040160405180910390fd5b806114e381612ceb565b915050611471565b50837fb3c3b87d0ea8237b590c2dbf7d3acf90e54a40cf0ef1e4c0d948736e1fabd8a984604051610b1c9190612885565b606060cc8054806020026020016040519081016040528092919081815260200182805480156106fe57602002820191906000526020600020905b815481526020019060010190808311611556575050505050905090565b600061067082611f0f565b6000818152606760205260409020546001600160a01b03166110a35760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107a3565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061161282610d65565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061165660995490565b611661906001612cc2565b905061166d8282611f34565b600084815260c96020908152604080832084905583835260ca825280832087905560cb909152902061169f8482612faf565b506040516001600160a01b0383169085907f49422f7ad2eca08595f1596952d2d805b5d5ba06f8c371dcb617c86a5b42ba0790600090a3837f4e0249d19860daeb2f0627d804cc93426e237cb754fef478c3a6cbcbc276265784604051610b1c91906126c7565b60008061171283610d65565b9050806001600160a01b0316846001600160a01b0316148061175957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061177d5750836001600160a01b031661177284610708565b6001600160a01b0316145b949350505050565b826001600160a01b031661179882610d65565b6001600160a01b0316146117fc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016107a3565b6001600160a01b03821661185e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107a3565b611869838383611f4e565b6118746000826115dd565b6001600160a01b038316600090815260686020526040812080546001929061189d90849061306e565b90915550506001600160a01b03821660009081526068602052604081208054600192906118cb908490612cc2565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000815160000361193f57506000610670565b600061194a83612006565b600081815260018601602052604090205490915060ff166119b2576000818152600185810160209081526040808420805460ff19168417905587546002890183529084208190559182018755868352909120016119a78482612faf565b506001915050610670565b600090815260018401602052604090205460ff169050610670565b606081600001805480602002602001604051908101604052809291908181526020016000905b82821015611a9f578382906000526020600020018054611a1290612d04565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3e90612d04565b8015611a8b5780601f10611a6057610100808354040283529160200191611a8b565b820191906000526020600020905b815481529060010190602001808311611a6e57829003601f168201915b5050505050815260200190600101906119f3565b505050509050919050565b600054610100900460ff16611ad15760405162461bcd60e51b81526004016107a390613081565b61119a8282612036565b600054610100900460ff16611b025760405162461bcd60e51b81526004016107a390613081565b611b0a612076565b565b816001600160a01b0316836001600160a01b031603611b6d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107a3565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611be5848484611785565b611bf18484848461209d565b6111f05760405162461bcd60e51b81526004016107a3906130cc565b805460009015611d24576000805b8354811015611d0f57611cd4846000018281548110611c3c57611c3c612cd5565b906000526020600020018054611c5190612d04565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7d90612d04565b8015611cca5780601f10611c9f57610100808354040283529160200191611cca565b820191906000526020600020905b815481529060010190602001808311611cad57829003601f168201915b5050505050612006565b60008181526002860160209081526040808320839055600188019091529020805460ff19169055915080611d0781612ceb565b915050611c1b565b50611d1b836000612549565b50600192915050565b506000919050565b919050565b60008151600003611d4457506000610670565b6000611d4f83612006565b600081815260018601602052604090205490915060ff1615611ef35760008181526002850160205260408120548554909190611d8d9060019061306e565b9050818114611e92576000866000018281548110611dad57611dad612cd5565b906000526020600020018054611dc290612d04565b80601f0160208091040260200160405190810160405280929190818152602001828054611dee90612d04565b8015611e3b5780601f10611e1057610100808354040283529160200191611e3b565b820191906000526020600020905b815481529060010190602001808311611e1e57829003601f168201915b5050505050905080876000018481548110611e5857611e58612cd5565b906000526020600020019081611e6e9190612faf565b5082876002016000611e7f84612006565b8152602081019190915260400160002055505b8554869080611ea357611ea361311e565b600190038181906000526020600020016000611ebf9190612567565b90555050600090815260028401602090815260408083208390556001808701909252909120805460ff191690559050610670565b600090815260018401602052604090205460ff16159050610670565b60006001600160e01b03198216635deabe7760e01b148061067057506106708261219e565b61119a8282604051806020016040528060008152506121c3565b6001600160a01b038316611fa957611fa481609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b611fcc565b816001600160a01b0316836001600160a01b031614611fcc57611fcc83826121f6565b6001600160a01b038216611fe35761084481612293565b826001600160a01b0316826001600160a01b031614610844576108448282612342565b6000816040516020016120199190613134565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff1661205d5760405162461bcd60e51b81526004016107a390613081565b60656120698382612faf565b5060666108448282612faf565b600054610100900460ff16611b0a5760405162461bcd60e51b81526004016107a390613081565b60006001600160a01b0384163b1561219357604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120e1903390899088908890600401613150565b6020604051808303816000875af192505050801561211c575060408051601f3d908101601f191682019092526121199181019061318d565b60015b612179573d80801561214a576040519150601f19603f3d011682016040523d82523d6000602084013e61214f565b606091505b5080516000036121715760405162461bcd60e51b81526004016107a3906130cc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061177d565b506001949350505050565b60006001600160e01b031982166345f8f68160e11b1480610670575061067082612386565b6121cd83836123ab565b6121da600084848461209d565b6108445760405162461bcd60e51b81526004016107a3906130cc565b6000600161220384610e1e565b61220d919061306e565b600083815260986020526040902054909150808214612260576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906122a59060019061306e565b6000838152609a6020526040812054609980549394509092849081106122cd576122cd612cd5565b9060005260206000200154905080609983815481106122ee576122ee612cd5565b6000918252602080832090910192909255828152609a909152604080822084905585825281205560998054806123265761232661311e565b6001900381819060005260206000200160009055905550505050565b600061234d83610e1e565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b60006001600160e01b0319821663780e9d6360e01b14806106705750610670826124f9565b6001600160a01b0382166124015760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107a3565b6000818152606760205260409020546001600160a01b0316156124665760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107a3565b61247260008383611f4e565b6001600160a01b038216600090815260686020526040812080546001929061249b908490612cc2565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160e01b031982166380ac58cd60e01b148061252a57506001600160e01b03198216635b5e139f60e01b145b8061067057506301ffc9a760e01b6001600160e01b0319831614610670565b50805460008255906000526020600020908101906110a391906125a1565b50805461257390612d04565b6000825580601f10612583575050565b601f0160209004906000526020600020908101906110a391906125c2565b808211156125be5760006125b58282612567565b506001016125a1565b5090565b5b808211156125be57600081556001016125c3565b600080604083850312156125ea57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561263157835183529284019291840191600101612615565b50909695505050505050565b6001600160e01b0319811681146110a357600080fd5b60006020828403121561266557600080fd5b81356126708161263d565b9392505050565b60005b8381101561269257818101518382015260200161267a565b50506000910152565b600081518084526126b3816020860160208601612677565b601f01601f19169290920160200192915050565b602081526000612670602083018461269b565b6000602082840312156126ec57600080fd5b5035919050565b80356001600160a01b0381168114611d2c57600080fd5b6000806040838503121561271d57600080fd5b612726836126f3565b946020939093013593505050565b60008083601f84011261274657600080fd5b5081356001600160401b0381111561275d57600080fd5b60208301915083602082850101111561277557600080fd5b9250929050565b60008060006040848603121561279157600080fd5b8335925060208401356001600160401b038111156127ae57600080fd5b6127ba86828701612734565b9497909650939450505050565b6000806000606084860312156127dc57600080fd5b6127e5846126f3565b92506127f3602085016126f3565b9150604084013590509250925092565b60008083601f84011261281557600080fd5b5081356001600160401b0381111561282c57600080fd5b6020830191508360208260051b850101111561277557600080fd5b60008060006040848603121561285c57600080fd5b8335925060208401356001600160401b0381111561287957600080fd5b6127ba86828701612803565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156128da57603f198886030184526128c885835161269b565b945092850192908501906001016128ac565b5092979650505050505050565b6000806000806000606086880312156128ff57600080fd5b8535945060208601356001600160401b038082111561291d57600080fd5b61292989838a01612734565b9096509450604088013591508082111561294257600080fd5b5061294f88828901612803565b969995985093965092949392505050565b60006020828403121561297257600080fd5b612670826126f3565b6000806000806000806080878903121561299457600080fd5b8635955060208701356001600160401b03808211156129b257600080fd5b6129be8a838b01612734565b90975095508591506129d260408a016126f3565b945060608901359150808211156129e857600080fd5b506129f589828a01612803565b979a9699509497509295939492505050565b8415158152836020820152608060408201526000612a28608083018561269b565b905060018060a01b038316606083015295945050505050565b60008060408385031215612a5457600080fd5b612a5d836126f3565b915060208301358015158114612a7257600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612abb57612abb612a7d565b604052919050565b60006001600160401b03831115612adc57612adc612a7d565b612aef601f8401601f1916602001612a93565b9050828152838383011115612b0357600080fd5b828260208301376000602084830101529392505050565b60008060008060808587031215612b3057600080fd5b612b39856126f3565b9350612b47602086016126f3565b92506040850135915060608501356001600160401b03811115612b6957600080fd5b8501601f81018713612b7a57600080fd5b612b8987823560208401612ac3565b91505092959194509250565b6000806040808486031215612ba957600080fd5b833592506020808501356001600160401b0380821115612bc857600080fd5b818701915087601f830112612bdc57600080fd5b813581811115612bee57612bee612a7d565b8060051b612bfd858201612a93565b918252838101850191858101908b841115612c1757600080fd5b86860192505b83831015612c6757823585811115612c355760008081fd5b8601603f81018d13612c475760008081fd5b612c578d898301358b8401612ac3565b8352509186019190860190612c1d565b80985050505050505050509250929050565b60008060408385031215612c8c57600080fd5b612c95836126f3565b9150612ca3602084016126f3565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561067057610670612cac565b634e487b7160e01b600052603260045260246000fd5b600060018201612cfd57612cfd612cac565b5060010190565b600181811c90821680612d1857607f821691505b602082108103612d3857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f82111561084457600081815260208120601f850160051c81016020861015612db35750805b601f850160051c820191505b81811015610f4957828155600101612dbf565b6001600160401b03831115612de957612de9612a7d565b612dfd83612df78354612d04565b83612d8c565b6000601f841160018114612e315760008515612e195750838201355b600019600387901b1c1916600186901b178355610e17565b600083815260209020601f19861690835b82811015612e625786850135825560209485019460019092019101612e42565b5086821015612e7f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061177d602083018486612e91565b6000808335601e19843603018112612ee557600080fd5b8301803591506001600160401b03821115612eff57600080fd5b60200191503681900382131561277557600080fd5b60208082528181018390526000906040600585901b8401810190840186845b87811015612fa257868403603f190183528135368a9003601e19018112612f5957600080fd5b890185810190356001600160401b03811115612f7457600080fd5b803603821315612f8357600080fd5b612f8e868284612e91565b955050509184019190840190600101612f33565b5091979650505050505050565b81516001600160401b03811115612fc857612fc8612a7d565b612fdc81612fd68454612d04565b84612d8c565b602080601f8311600181146130115760008415612ff95750858301515b600019600386901b1c1916600185901b178555610f49565b600085815260208120601f198616915b8281101561304057888601518255948401946001909101908401613021565b508582101561305e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067057610670612cac565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b60008251613146818460208701612677565b9190910192915050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906131839083018461269b565b9695505050505050565b60006020828403121561319f57600080fd5b81516126708161263d56fea2646970667358221220ca25120caf3e118fcaf67dff80c5952373ff6f3c0505989a9b5363440da2fa3f64736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636bad883511610104578063b676e2ff116100a2578063c9cb65e111610071578063c9cb65e114610419578063dfe0f51114610439578063e4f649901461044c578063e985e9c51461045457600080fd5b8063b676e2ff146103cd578063b88d4fde146103e0578063bc52570b146103f3578063c87b56dd1461040657600080fd5b80638129fc1c116100de5780638129fc1c1461038757806395d89b411461038f57806398980a8a14610397578063a22cb465146103ba57600080fd5b80636bad88351461034e57806370a0823114610361578063740fd7cd1461037457600080fd5b806323b872dd1161017c5780634f6ccce71161014b5780634f6ccce7146102f55780635d96b739146103085780636352211e1461031b57806363ceab541461032e57600080fd5b806323b872dd146102a95780632f745c59146102bc57806335178d91146102cf57806342842e0e146102e257600080fd5b8063081812fc116101b8578063081812fc14610240578063095ea7b31461026b5780630ad0abce1461028057806318160ddd146102a157600080fd5b80630193eda6146101df57806301ffc9a71461020857806306fdde031461022b575b600080fd5b6101f26101ed3660046125d7565b610490565b6040516101ff91906125f9565b60405180910390f35b61021b610216366004612653565b610665565b60405190151581526020016101ff565b610233610676565b6040516101ff91906126c7565b61025361024e3660046126da565b610708565b6040516001600160a01b0390911681526020016101ff565b61027e61027936600461270a565b61072f565b005b61029361028e36600461277c565b610849565b6040519081526020016101ff565b609954610293565b61027e6102b73660046127c7565b61095e565b6102936102ca36600461270a565b61098f565b61027e6102dd36600461277c565b610a25565b61027e6102f03660046127c7565b610b2a565b6102936103033660046126da565b610b45565b61027e610316366004612847565b610bd8565b6102536103293660046126da565b610d65565b61034161033c3660046126da565b610dc5565b6040516101ff9190612885565b61027e61035c3660046128e7565b610de0565b61029361036f366004612960565b610e1e565b61027e61038236600461297b565b610ea4565b61027e610f51565b6102336110a6565b6103aa6103a53660046126da565b6110b5565b6040516101ff9493929190612a07565b61027e6103c8366004612a41565b61118f565b61027e6103db3660046128e7565b61119e565b61027e6103ee366004612b1a565b6111be565b61027e6104013660046126da565b6111f6565b6102336104143660046126da565b6112f6565b6102936104273660046126da565b600090815260c9602052604090205490565b61027e610447366004612b95565b6113cf565b6101f261151c565b61021b610462366004612c79565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60606000826001600160401b038111156104ac576104ac612a7d565b6040519080825280602002602001820160405280156104d5578160200160208202803683370190505b509050600080855b60cc54811080156104f657506104f38688612cc2565b81105b1561058c5760cc818154811061050e5761050e612cd5565b906000526020600020015484848151811061052b5761052b612cd5565b6020026020010181815250506000801b60cc828154811061054e5761054e612cd5565b90600052602060002001541461056c578161056881612ceb565b9250505b8261057681612ceb565b935050808061058490612ceb565b9150506104dd565b50806001600160401b038111156105a5576105a5612a7d565b6040519080825280602002602001820160405280156105ce578160200160208202803683370190505b5093506000915060005b835181101561065b576000801b8482815181106105f7576105f7612cd5565b6020026020010151146106495783818151811061061657610616612cd5565b602002602001015185848151811061063057610630612cd5565b60209081029190910101528261064581612ceb565b9350505b8061065381612ceb565b9150506105d8565b5050505092915050565b600061067082611573565b92915050565b60606065805461068590612d04565b80601f01602080910402602001604051908101604052809291908181526020018280546106b190612d04565b80156106fe5780601f106106d3576101008083540402835291602001916106fe565b820191906000526020600020905b8154815290600101906020018083116106e157829003601f168201915b5050505050905090565b60006107138261157e565b506000908152606960205260409020546001600160a01b031690565b600061073a82610d65565b9050806001600160a01b0316836001600160a01b0316036107ac5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806107c857506107c88133610462565b61083a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016107a3565b61084483836115dd565b505050565b600081810361086b57604051633f0e0a7f60e21b815260040160405180910390fd5b6000336040516bffffffffffffffffffffffff19606083901b1660208201526034810187905290915060009060540160408051601f19818403018152918152815160209283012060cc8054600181019091557f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe01819055600081815260c990935291205490915015610913576040516358dc901360e01b8152600481018290526024016107a3565b6109558186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925061164b915050565b95945050505050565b6109683382611706565b6109845760405162461bcd60e51b81526004016107a390612d3e565b610844838383611785565b600061099a83610e1e565b82106109fc5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016107a3565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b82801580610a3f5750600081815260c96020526040902054155b15610a60576040516387fe3aad60e01b8152600481018290526024016107a3565b600081815260c960205260409020543390610a7a90610d65565b6001600160a01b031614610aa157604051635612e54f60e11b815260040160405180910390fd5b6000829003610ac357604051633f0e0a7f60e21b815260040160405180910390fd5b600084815260c96020908152604080832054835260cb9091529020610ae9838583612dd2565b50837f4e0249d19860daeb2f0627d804cc93426e237cb754fef478c3a6cbcbc27626578484604051610b1c929190612eba565b60405180910390a250505050565b610844838383604051806020016040528060008152506111be565b6000610b5060995490565b8210610bb35760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016107a3565b60998281548110610bc657610bc6612cd5565b90600052602060002001549050919050565b82801580610bf25750600081815260c96020526040902054155b15610c13576040516387fe3aad60e01b8152600481018290526024016107a3565b600081815260c960205260409020543390610c2d90610d65565b6001600160a01b031614610c5457604051635612e54f60e11b815260040160405180910390fd5b6000829003610c7657604051634816a76760e01b815260040160405180910390fd5b6000805b83811015610d2357610cf1858583818110610c9757610c97612cd5565b9050602002810190610ca99190612ece565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508b8152610100602052604090209392505061192c9050565b915081610d1157604051634816a76760e01b815260040160405180910390fd5b80610d1b81612ceb565b915050610c7a565b50847f9af1bf1f55d94dc29bfe249a6e5c1f9b82c06fee0cdaeada46f044b69f68c7cc8585604051610d56929190612f14565b60405180910390a25050505050565b6000818152606760205260408120546001600160a01b0316806106705760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107a3565b600081815261010060205260409020606090610670906119cd565b610deb858585610a25565b6000610df686610dc5565b511115610e0657610e06856111f6565b8015610e1757610e17858383610bd8565b5050505050565b60006001600160a01b038216610e885760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107a3565b506001600160a01b031660009081526068602052604090205490565b600086815260c9602052604090205415610ed4576040516358dc901360e01b8152600481018790526024016107a3565b6000849003610ef657604051633f0e0a7f60e21b815260040160405180910390fd5b610f388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925061164b915050565b8015610f4957610f49868383610bd8565b505050505050565b600054610100900460ff1615808015610f715750600054600160ff909116105b80610f8b5750303b158015610f8b575060005460ff166001145b610fee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a3565b6000805460ff191660011790558015611011576000805461ff0019166101001790555b6110556040518060400160405280600581526020016413d491da5160da1b8152506040518060400160405280600581526020016413d491da5160da1b815250611aaa565b61105d611adb565b80156110a3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60606066805461068590612d04565b600081815260ca602090815260408083205460679092528220546001600160a01b03161580159260609161118857600085815260cb6020526040902080546110fc90612d04565b80601f016020809104026020016040519081016040528092919081815260200182805461112890612d04565b80156111755780601f1061114a57610100808354040283529160200191611175565b820191906000526020600020905b81548152906001019060200180831161115857829003601f168201915b5050505050915061118585610d65565b90505b9193509193565b61119a338383611b0c565b5050565b60006111ab868686610849565b90508115610f4957610f49818484610bd8565b6111c83383611706565b6111e45760405162461bcd60e51b81526004016107a390612d3e565b6111f084848484611bda565b50505050565b808015806112105750600081815260c96020526040902054155b15611231576040516387fe3aad60e01b8152600481018290526024016107a3565b600081815260c96020526040902054339061124b90610d65565b6001600160a01b03161461127257604051635612e54f60e11b815260040160405180910390fd5b60008281526101006020526040812061128a906119cd565b600084815261010060205260408120919250906112a690611c0d565b9050806112c657604051634816a76760e01b815260040160405180910390fd5b837fb3c3b87d0ea8237b590c2dbf7d3acf90e54a40cf0ef1e4c0d948736e1fabd8a983604051610b1c9190612885565b6000818152606760205260409020546060906001600160a01b0316611331576040516306caeb1360e41b8152600481018390526024016107a3565b600082815260cb60205260409020805461134a90612d04565b80601f016020809104026020016040519081016040528092919081815260200182805461137690612d04565b80156113c35780601f10611398576101008083540402835291602001916113c3565b820191906000526020600020905b8154815290600101906020018083116113a657829003601f168201915b50505050509050919050565b818015806113e95750600081815260c96020526040902054155b1561140a576040516387fe3aad60e01b8152600481018290526024016107a3565b600081815260c96020526040902054339061142490610d65565b6001600160a01b03161461144b57604051635612e54f60e11b815260040160405180910390fd5b815160000361146d57604051634816a76760e01b815260040160405180910390fd5b6000805b83518110156114eb576114b984828151811061148f5761148f612cd5565b60200260200101516101006000888152602001908152602001600020611d3190919063ffffffff16565b9150816114d957604051634816a76760e01b815260040160405180910390fd5b806114e381612ceb565b915050611471565b50837fb3c3b87d0ea8237b590c2dbf7d3acf90e54a40cf0ef1e4c0d948736e1fabd8a984604051610b1c9190612885565b606060cc8054806020026020016040519081016040528092919081815260200182805480156106fe57602002820191906000526020600020905b815481526020019060010190808311611556575050505050905090565b600061067082611f0f565b6000818152606760205260409020546001600160a01b03166110a35760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107a3565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061161282610d65565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061165660995490565b611661906001612cc2565b905061166d8282611f34565b600084815260c96020908152604080832084905583835260ca825280832087905560cb909152902061169f8482612faf565b506040516001600160a01b0383169085907f49422f7ad2eca08595f1596952d2d805b5d5ba06f8c371dcb617c86a5b42ba0790600090a3837f4e0249d19860daeb2f0627d804cc93426e237cb754fef478c3a6cbcbc276265784604051610b1c91906126c7565b60008061171283610d65565b9050806001600160a01b0316846001600160a01b0316148061175957506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061177d5750836001600160a01b031661177284610708565b6001600160a01b0316145b949350505050565b826001600160a01b031661179882610d65565b6001600160a01b0316146117fc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016107a3565b6001600160a01b03821661185e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107a3565b611869838383611f4e565b6118746000826115dd565b6001600160a01b038316600090815260686020526040812080546001929061189d90849061306e565b90915550506001600160a01b03821660009081526068602052604081208054600192906118cb908490612cc2565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000815160000361193f57506000610670565b600061194a83612006565b600081815260018601602052604090205490915060ff166119b2576000818152600185810160209081526040808420805460ff19168417905587546002890183529084208190559182018755868352909120016119a78482612faf565b506001915050610670565b600090815260018401602052604090205460ff169050610670565b606081600001805480602002602001604051908101604052809291908181526020016000905b82821015611a9f578382906000526020600020018054611a1290612d04565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3e90612d04565b8015611a8b5780601f10611a6057610100808354040283529160200191611a8b565b820191906000526020600020905b815481529060010190602001808311611a6e57829003601f168201915b5050505050815260200190600101906119f3565b505050509050919050565b600054610100900460ff16611ad15760405162461bcd60e51b81526004016107a390613081565b61119a8282612036565b600054610100900460ff16611b025760405162461bcd60e51b81526004016107a390613081565b611b0a612076565b565b816001600160a01b0316836001600160a01b031603611b6d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107a3565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611be5848484611785565b611bf18484848461209d565b6111f05760405162461bcd60e51b81526004016107a3906130cc565b805460009015611d24576000805b8354811015611d0f57611cd4846000018281548110611c3c57611c3c612cd5565b906000526020600020018054611c5190612d04565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7d90612d04565b8015611cca5780601f10611c9f57610100808354040283529160200191611cca565b820191906000526020600020905b815481529060010190602001808311611cad57829003601f168201915b5050505050612006565b60008181526002860160209081526040808320839055600188019091529020805460ff19169055915080611d0781612ceb565b915050611c1b565b50611d1b836000612549565b50600192915050565b506000919050565b919050565b60008151600003611d4457506000610670565b6000611d4f83612006565b600081815260018601602052604090205490915060ff1615611ef35760008181526002850160205260408120548554909190611d8d9060019061306e565b9050818114611e92576000866000018281548110611dad57611dad612cd5565b906000526020600020018054611dc290612d04565b80601f0160208091040260200160405190810160405280929190818152602001828054611dee90612d04565b8015611e3b5780601f10611e1057610100808354040283529160200191611e3b565b820191906000526020600020905b815481529060010190602001808311611e1e57829003601f168201915b5050505050905080876000018481548110611e5857611e58612cd5565b906000526020600020019081611e6e9190612faf565b5082876002016000611e7f84612006565b8152602081019190915260400160002055505b8554869080611ea357611ea361311e565b600190038181906000526020600020016000611ebf9190612567565b90555050600090815260028401602090815260408083208390556001808701909252909120805460ff191690559050610670565b600090815260018401602052604090205460ff16159050610670565b60006001600160e01b03198216635deabe7760e01b148061067057506106708261219e565b61119a8282604051806020016040528060008152506121c3565b6001600160a01b038316611fa957611fa481609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b611fcc565b816001600160a01b0316836001600160a01b031614611fcc57611fcc83826121f6565b6001600160a01b038216611fe35761084481612293565b826001600160a01b0316826001600160a01b031614610844576108448282612342565b6000816040516020016120199190613134565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff1661205d5760405162461bcd60e51b81526004016107a390613081565b60656120698382612faf565b5060666108448282612faf565b600054610100900460ff16611b0a5760405162461bcd60e51b81526004016107a390613081565b60006001600160a01b0384163b1561219357604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120e1903390899088908890600401613150565b6020604051808303816000875af192505050801561211c575060408051601f3d908101601f191682019092526121199181019061318d565b60015b612179573d80801561214a576040519150601f19603f3d011682016040523d82523d6000602084013e61214f565b606091505b5080516000036121715760405162461bcd60e51b81526004016107a3906130cc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061177d565b506001949350505050565b60006001600160e01b031982166345f8f68160e11b1480610670575061067082612386565b6121cd83836123ab565b6121da600084848461209d565b6108445760405162461bcd60e51b81526004016107a3906130cc565b6000600161220384610e1e565b61220d919061306e565b600083815260986020526040902054909150808214612260576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906122a59060019061306e565b6000838152609a6020526040812054609980549394509092849081106122cd576122cd612cd5565b9060005260206000200154905080609983815481106122ee576122ee612cd5565b6000918252602080832090910192909255828152609a909152604080822084905585825281205560998054806123265761232661311e565b6001900381819060005260206000200160009055905550505050565b600061234d83610e1e565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b60006001600160e01b0319821663780e9d6360e01b14806106705750610670826124f9565b6001600160a01b0382166124015760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107a3565b6000818152606760205260409020546001600160a01b0316156124665760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107a3565b61247260008383611f4e565b6001600160a01b038216600090815260686020526040812080546001929061249b908490612cc2565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160e01b031982166380ac58cd60e01b148061252a57506001600160e01b03198216635b5e139f60e01b145b8061067057506301ffc9a760e01b6001600160e01b0319831614610670565b50805460008255906000526020600020908101906110a391906125a1565b50805461257390612d04565b6000825580601f10612583575050565b601f0160209004906000526020600020908101906110a391906125c2565b808211156125be5760006125b58282612567565b506001016125a1565b5090565b5b808211156125be57600081556001016125c3565b600080604083850312156125ea57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561263157835183529284019291840191600101612615565b50909695505050505050565b6001600160e01b0319811681146110a357600080fd5b60006020828403121561266557600080fd5b81356126708161263d565b9392505050565b60005b8381101561269257818101518382015260200161267a565b50506000910152565b600081518084526126b3816020860160208601612677565b601f01601f19169290920160200192915050565b602081526000612670602083018461269b565b6000602082840312156126ec57600080fd5b5035919050565b80356001600160a01b0381168114611d2c57600080fd5b6000806040838503121561271d57600080fd5b612726836126f3565b946020939093013593505050565b60008083601f84011261274657600080fd5b5081356001600160401b0381111561275d57600080fd5b60208301915083602082850101111561277557600080fd5b9250929050565b60008060006040848603121561279157600080fd5b8335925060208401356001600160401b038111156127ae57600080fd5b6127ba86828701612734565b9497909650939450505050565b6000806000606084860312156127dc57600080fd5b6127e5846126f3565b92506127f3602085016126f3565b9150604084013590509250925092565b60008083601f84011261281557600080fd5b5081356001600160401b0381111561282c57600080fd5b6020830191508360208260051b850101111561277557600080fd5b60008060006040848603121561285c57600080fd5b8335925060208401356001600160401b0381111561287957600080fd5b6127ba86828701612803565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156128da57603f198886030184526128c885835161269b565b945092850192908501906001016128ac565b5092979650505050505050565b6000806000806000606086880312156128ff57600080fd5b8535945060208601356001600160401b038082111561291d57600080fd5b61292989838a01612734565b9096509450604088013591508082111561294257600080fd5b5061294f88828901612803565b969995985093965092949392505050565b60006020828403121561297257600080fd5b612670826126f3565b6000806000806000806080878903121561299457600080fd5b8635955060208701356001600160401b03808211156129b257600080fd5b6129be8a838b01612734565b90975095508591506129d260408a016126f3565b945060608901359150808211156129e857600080fd5b506129f589828a01612803565b979a9699509497509295939492505050565b8415158152836020820152608060408201526000612a28608083018561269b565b905060018060a01b038316606083015295945050505050565b60008060408385031215612a5457600080fd5b612a5d836126f3565b915060208301358015158114612a7257600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612abb57612abb612a7d565b604052919050565b60006001600160401b03831115612adc57612adc612a7d565b612aef601f8401601f1916602001612a93565b9050828152838383011115612b0357600080fd5b828260208301376000602084830101529392505050565b60008060008060808587031215612b3057600080fd5b612b39856126f3565b9350612b47602086016126f3565b92506040850135915060608501356001600160401b03811115612b6957600080fd5b8501601f81018713612b7a57600080fd5b612b8987823560208401612ac3565b91505092959194509250565b6000806040808486031215612ba957600080fd5b833592506020808501356001600160401b0380821115612bc857600080fd5b818701915087601f830112612bdc57600080fd5b813581811115612bee57612bee612a7d565b8060051b612bfd858201612a93565b918252838101850191858101908b841115612c1757600080fd5b86860192505b83831015612c6757823585811115612c355760008081fd5b8601603f81018d13612c475760008081fd5b612c578d898301358b8401612ac3565b8352509186019190860190612c1d565b80985050505050505050509250929050565b60008060408385031215612c8c57600080fd5b612c95836126f3565b9150612ca3602084016126f3565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561067057610670612cac565b634e487b7160e01b600052603260045260246000fd5b600060018201612cfd57612cfd612cac565b5060010190565b600181811c90821680612d1857607f821691505b602082108103612d3857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f82111561084457600081815260208120601f850160051c81016020861015612db35750805b601f850160051c820191505b81811015610f4957828155600101612dbf565b6001600160401b03831115612de957612de9612a7d565b612dfd83612df78354612d04565b83612d8c565b6000601f841160018114612e315760008515612e195750838201355b600019600387901b1c1916600186901b178355610e17565b600083815260209020601f19861690835b82811015612e625786850135825560209485019460019092019101612e42565b5086821015612e7f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061177d602083018486612e91565b6000808335601e19843603018112612ee557600080fd5b8301803591506001600160401b03821115612eff57600080fd5b60200191503681900382131561277557600080fd5b60208082528181018390526000906040600585901b8401810190840186845b87811015612fa257868403603f190183528135368a9003601e19018112612f5957600080fd5b890185810190356001600160401b03811115612f7457600080fd5b803603821315612f8357600080fd5b612f8e868284612e91565b955050509184019190840190600101612f33565b5091979650505050505050565b81516001600160401b03811115612fc857612fc8612a7d565b612fdc81612fd68454612d04565b84612d8c565b602080601f8311600181146130115760008415612ff95750858301515b600019600386901b1c1916600185901b178555610f49565b600085815260208120601f198616915b8281101561304057888601518255948401946001909101908401613021565b508582101561305e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067057610670612cac565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b60008251613146818460208701612677565b9190910192915050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906131839083018461269b565b9695505050505050565b60006020828403121561319f57600080fd5b81516126708161263d56fea2646970667358221220ca25120caf3e118fcaf67dff80c5952373ff6f3c0505989a9b5363440da2fa3f64736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
