{
    "_format": "hh-sol-artifact-1",
    "contractName": "VToken",
    "sourceName": "contracts/core/VToken.sol",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "DOMAIN_SEPARATOR",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "burnVToken",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "collateralAsset",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "controller",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "subtractedValue",
                    "type": "uint256"
                }
            ],
            "name": "decreaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "expiryTimestamp",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getVTokenDetails",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "addedValue",
                    "type": "uint256"
                }
            ],
            "name": "increaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_addressBook",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_underlyingAsset",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_strikeAsset",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_collateralAsset",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_strikePrice",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_expiryTimestamp",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "_isPut",
                    "type": "bool"
                }
            ],
            "name": "init",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "isPut",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "mintVToken",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "nonces",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "deadline",
                    "type": "uint256"
                },
                {
                    "internalType": "uint8",
                    "name": "v",
                    "type": "uint8"
                },
                {
                    "internalType": "bytes32",
                    "name": "r",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "s",
                    "type": "bytes32"
                }
            ],
            "name": "permit",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "strikeAsset",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "strikePrice",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "symbol",
            "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": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "underlyingAsset",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50612a5f806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637158da7c116100de578063ade6e2aa11610097578063dd62ed3e11610071578063dd62ed3e14610351578063f3c274a61461038a578063f630df3414610397578063f77c4791146103aa57610173565b8063ade6e2aa1461032c578063c52987cf14610335578063d505accf1461033e57610173565b80637158da7c146102c55780637ecebe00146102d857806395d89b41146102eb578063a457c2d7146102f3578063a9059cbb14610306578063aabaecd61461031957610173565b806329368e4e1161013057806329368e4e14610260578063313ce567146102755780633644e51514610284578063395093511461028c5780636481ad5d1461029f57806370a08231146102b257610173565b806306fdde03146101785780630812c45214610196578063095ea7b3146101ed57806317d69bc81461021057806318160ddd1461023b57806323b872dd1461024d575b600080fd5b6101806103bd565b60405161018d9190612645565b60405180910390f35b60cf5460cd5460ce5460d05460d15460d254604080516001600160a01b039788168152958716602087015295909316948401949094526060830152608082019290925260ff909116151560a082015260c00161018d565b6102006101fb36600461233a565b61044f565b604051901515815260200161018d565b60ce54610223906001600160a01b031681565b6040516001600160a01b03909116815260200161018d565b6035545b60405190815260200161018d565b61020061025b366004612285565b610467565b61027361026e36600461233a565b61048d565b005b6040516008815260200161018d565b61023f61050b565b61020061029a36600461233a565b61051a565b6102736102ad36600461233a565b610559565b61023f6102c036600461218e565b6105ce565b60cd54610223906001600160a01b031681565b61023f6102e636600461218e565b6105ed565b61018061060d565b61020061030136600461233a565b61061c565b61020061031436600461233a565b6106b9565b60cf54610223906001600160a01b031681565b61023f60d15481565b61023f60d05481565b61027361034c3660046122c5565b6106c7565b61023f61035f3660046121c6565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b60d2546102009060ff1681565b6102736103a53660046121fe565b61080d565b60cc54610223906001600160a01b031681565b6060603680546103cc9061296e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f89061296e565b80156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b5050505050905090565b60003361045d8185856109dc565b5060019392505050565b600033610475858285610b01565b610480858585610b93565b60019150505b9392505050565b60cc546001600160a01b031633146104fd5760405162461bcd60e51b815260206004820152602860248201527f56546f6b656e3a204f6e6c7920436f6e74726f6c6c65722063616e206275726e6044820152672056546f6b656e7360c01b60648201526084015b60405180910390fd5b6105078282610d61565b5050565b6000610515610eac565b905090565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919061045d9082908690610554908790612704565b6109dc565b60cc546001600160a01b031633146105c45760405162461bcd60e51b815260206004820152602860248201527f56546f6b656e3a204f6e6c7920436f6e74726f6c6c65722063616e206d696e746044820152672056546f6b656e7360c01b60648201526084016104f4565b6105078282610f27565b6001600160a01b0381166000908152603360205260409020545b919050565b6001600160a01b0381166000908152609960205260408120545b92915050565b6060603780546103cc9061296e565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190838110156106a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104f4565b6106ae82868684036109dc565b506001949350505050565b60003361045d818585610b93565b834211156107175760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016104f4565b6000609a548888886107288c611007565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006107838261102f565b905060006107938287878761107d565b9050896001600160a01b0316816001600160a01b0316146107f65760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016104f4565b6108018a8a8a6109dc565b50505050505050505050565b600054610100900460ff166108285760005460ff161561082c565b303b155b61088f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104f4565b600054610100900460ff161580156108ba576000805460ff1961ff0019909116610100171660011790555b876001600160a01b0316633018205f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f357600080fd5b505afa158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b91906121aa565b60cc80546001600160a01b03199081166001600160a01b039384161790915560cd805482168a841617905560ce8054821689841617905560cf805490911691871691909117905560d084905560d183905560d2805460ff19168315151790556000806109956110a5565b915091506109a282611330565b6109ab81611330565b6109b58282611376565b6109be826113c4565b505080156109d2576000805461ff00191690555b5050505050505050565b6001600160a01b038316610a3e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f4565b6001600160a01b038216610a9f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f4565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114610b8d5781811015610b805760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f4565b610b8d84848484036109dc565b50505050565b6001600160a01b038316610bf75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f4565b6001600160a01b038216610c595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f4565b6001600160a01b03831660009081526033602052604090205481811015610cd15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f4565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290610d08908490612704565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5491815260200190565b60405180910390a3610b8d565b6001600160a01b038216610dc15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104f4565b6001600160a01b03821660009081526033602052604090205481811015610e355760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104f4565b6001600160a01b0383166000908152603360205260408120838303905560358054849290610e6490849061292b565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610af4565b505050565b60006105157f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610edb60655490565b6066546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6001600160a01b038216610f7d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f4565b8060356000828254610f8f9190612704565b90915550506001600160a01b03821660009081526033602052604081208054839290610fbc908490612704565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610507565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b600061060761103c610eac565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061108e87878787611417565b9150915061109b81611504565b5095945050505050565b606080600060cd60009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156110f857600080fd5b505afa15801561110c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111349190810190612365565b9050600060ce60009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561118657600080fd5b505afa15801561119a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111c29190810190612365565b9050600060cf60009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112509190810190612365565b9050600061125f60d054611707565b9050600080600061127160d1546117fd565b60d2549295509093509150600090819061128d9060ff16611823565b9150915060008061129d866118ac565b915091508a8a6112ac87611c44565b836112b68b611c9b565b8c888f6040516020016112d098979695949392919061242a565b6040516020818303038152906040529c508a8a8a6112ed88611c44565b856112f78c611c44565b8d8a60405160200161131098979695949392919061257e565b6040516020818303038152906040529b5050505050505050505050509091565b611373816040516024016113449190612645565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052611dbe565b50565b600054610100900460ff1661139d5760405162461bcd60e51b81526004016104f490612678565b81516113b09060369060208501906120f5565b508051610ea79060379060208401906120f5565b600054610100900460ff166113eb5760405162461bcd60e51b81526004016104f490612678565b61140e81604051806040016040528060018152602001603160f81b815250611ddf565b61137381611e20565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561144e57506000905060036114fb565b8460ff16601b1415801561146657508460ff16601c14155b1561147757506000905060046114fb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156114cb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114f4576000600192509250506114fb565b9150600090505b94509492505050565b600081600481111561152657634e487b7160e01b600052602160045260246000fd5b141561153157611373565b600181600481111561155357634e487b7160e01b600052602160045260246000fd5b14156115a15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104f4565b60028160048111156115c357634e487b7160e01b600052602160045260246000fd5b14156116115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104f4565b600381600481111561163357634e487b7160e01b600052602160045260246000fd5b141561168c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104f4565b60048160048111156116ae57634e487b7160e01b600052602160045260246000fd5b14156113735760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016104f4565b60606000611719836305f5e100611e6e565b9050600061172b846305f5e100611e7a565b9050600061173882611c9b565b9050826117495792506105e8915050565b60005b61175784600a611e6e565b61177a57611766600a8561274a565b9350611773600182612704565b905061174c565b61178581600861292b565b61179090600a61279b565b61179a9085612704565b935060006117a785611c9b565b90506117ca816001846117bb600883612704565b6117c5919061292b565b611e86565b9050600083826040516020016117e1929190612519565b60408051808303601f1901815291905298975050505050505050565b60008080611816611811620151808661274a565b611f81565b9196909550909350915050565b606080821561186b57604051806040016040528060018152602001600560fc1b81525060405180604001604052806003815260200162141d5d60ea1b815250915091506118a7565b604051806040016040528060018152602001604360f81b8152506040518060400160405280600481526020016310d85b1b60e21b815250915091505b915091565b60608082600114156118fd57604051806040016040528060038152602001622520a760e91b815250604051806040016040528060078152602001664a616e7561727960c81b815250915091506118a7565b826002141561194c57604051806040016040528060038152602001622322a160e91b81525060405180604001604052806008815260200167466562727561727960c01b815250915091506118a7565b8260031415611998576040518060400160405280600381526020016226a0a960e91b8152506040518060400160405280600581526020016409ac2e4c6d60db1b815250915091506118a7565b82600414156119e4576040518060400160405280600381526020016220a82960e91b81525060405180604001604052806005815260200164105c1c9a5b60da1b815250915091506118a7565b8260051415611a2e57604051806040016040528060038152602001624d415960e81b815250604051806040016040528060038152602001624d617960e81b815250915091506118a7565b8260061415611a795760405180604001604052806003815260200162252aa760e91b815250604051806040016040528060048152602001634a756e6560e01b815250915091506118a7565b8260071415611ac4576040518060400160405280600381526020016212955360ea1b815250604051806040016040528060048152602001634a756c7960e01b815250915091506118a7565b8260081415611b11576040518060400160405280600381526020016241554760e81b81525060405180604001604052806006815260200165105d59dd5cdd60d21b815250915091506118a7565b8260091415611b61576040518060400160405280600381526020016205345560ec1b8152506040518060400160405280600981526020016829b2b83a32b6b132b960b91b815250915091506118a7565b82600a1415611baf576040518060400160405280600381526020016213d0d560ea1b8152506040518060400160405280600781526020016627b1ba37b132b960c91b815250915091506118a7565b82600b1415611bfe57604051806040016040528060038152602001622727ab60e91b815250604051806040016040528060088152602001672737bb32b6b132b960c11b815250915091506118a7565b6040518060400160405280600381526020016244454360e81b815250604051806040016040528060088152602001672232b1b2b6b132b960c11b815250915091506118a7565b60606063821115611c5d57611c5a6064836129be565b91505b6000611c6883611c9b565b9050600a8310156106075780604051602001611c849190612555565b6040516020818303038152906040529150506105e8565b606081611cc057506040805180820190915260018152600360fc1b60208201526105e8565b8160005b8115611cea5780611cd4816129a3565b9150611ce39050600a8361274a565b9150611cc4565b60008167ffffffffffffffff811115611d1357634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d3d576020820181803683370190505b5090505b8415611db657611d5260018361292b565b9150611d5f600a866129be565b611d6a906030612704565b60f81b818381518110611d8d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611daf600a8661274a565b9450611d41565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600054610100900460ff16611e065760405162461bcd60e51b81526004016104f490612678565b815160209283012081519190920120606591909155606655565b600054610100900460ff16611e475760405162461bcd60e51b81526004016104f490612678565b507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9609a55565b600061048682846129be565b6000610486828461274a565b60606000611e94848461292b565b67ffffffffffffffff811115611eba57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611ee4576020820181803683370190505b50905060005b611ef4858561292b565b811015611f785785611f068287612704565b81518110611f2457634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b828281518110611f4f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535080611f70816129a3565b915050611eea565b50949350505050565b60008080838162253d8c611f988362010bd96126c3565b611fa291906126c3565b9050600062023ab1611fb5836004612869565b611fbf919061271c565b90506004611fd08262023ab1612869565b611fdb9060036126c3565b611fe5919061271c565b611fef90836128ec565b9150600062164b096120028460016126c3565b61200e90610fa0612869565b612018919061271c565b90506004612028826105b5612869565b612032919061271c565b61203c90846128ec565b61204790601f6126c3565b9250600061098f612059856050612869565b612063919061271c565b9050600060506120758361098f612869565b61207f919061271c565b61208990866128ec565b9050612096600b8361271c565b94506120a385600c612869565b6120ae8360026126c3565b6120b891906128ec565b915084836120c76031876128ec565b6120d2906064612869565b6120dc91906126c3565b6120e691906126c3565b9a919950975095505050505050565b8280546121019061296e565b90600052602060002090601f0160209004810192826121235760008555612169565b82601f1061213c57805160ff1916838001178555612169565b82800160010185558215612169579182015b8281111561216957825182559160200191906001019061214e565b50612175929150612179565b5090565b5b80821115612175576000815560010161217a565b60006020828403121561219f578081fd5b813561048681612a14565b6000602082840312156121bb578081fd5b815161048681612a14565b600080604083850312156121d8578081fd5b82356121e381612a14565b915060208301356121f381612a14565b809150509250929050565b600080600080600080600060e0888a031215612218578283fd5b873561222381612a14565b9650602088013561223381612a14565b9550604088013561224381612a14565b9450606088013561225381612a14565b93506080880135925060a0880135915060c08801358015158114612275578182fd5b8091505092959891949750929550565b600080600060608486031215612299578283fd5b83356122a481612a14565b925060208401356122b481612a14565b929592945050506040919091013590565b600080600080600080600060e0888a0312156122df578283fd5b87356122ea81612a14565b965060208801356122fa81612a14565b95506040880135945060608801359350608088013560ff8116811461231d578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561234c578182fd5b823561235781612a14565b946020939093013593505050565b600060208284031215612376578081fd5b815167ffffffffffffffff8082111561238d578283fd5b818401915084601f8301126123a0578283fd5b8151818111156123b2576123b26129fe565b604051601f8201601f19908116603f011681019083821181831017156123da576123da6129fe565b816040528281528760208487010111156123f2578586fd5b612403836020830160208801612942565b979650505050505050565b60008151612420818560208601612942565b9290920192915050565b60008951602061243d8285838f01612942565b8a51918401916124508184848f01612942565b600160fd1b92018281528a5190929061246f8160018601858f01612942565b808401935050602d60f81b8060018501528a516124928160028701868f01612942565b600294019384015288516124ac8160038601858d01612942565b600393019283015286516124c68160048501848b01612942565b6125086124f16124eb6124de6004858801018b61240e565b600160fd1b815260010190565b8861240e565b6a0810dbdb1b185d195c985b60aa1b8152600b0190565b9d9c50505050505050505050505050565b6000835161252b818460208801612942565b601760f91b9083019081528351612549816001840160208801612942565b01600101949350505050565b6000600360fc1b82528251612571816001850160208701612942565b9190910160010192915050565b6000603b60f91b82528951602061259b8260018601838f01612942565b8a51918401916125b18160018501848f01612942565b602f60f81b6001939091019283015289516125d28160028501848e01612942565b602d60f81b6002939091019283015288516125f38160038501848d01612942565b88519201916126088160038501848c01612942565b875192019161261d8160038501848b01612942565b61250861263f612639600384870101602d60f81b815260010190565b8961240e565b8761240e565b6000602082528251806020840152612664816040850160208701612942565b601f01601f19169190910160400192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600080821280156001600160ff1b03849003851316156126e5576126e56129d2565b600160ff1b83900384128116156126fe576126fe6129d2565b50500190565b60008219821115612717576127176129d2565b500190565b60008261272b5761272b6129e8565b600160ff1b821460001984141615612745576127456129d2565b500590565b600082612759576127596129e8565b500490565b80825b600180861161277057506114fb565b818704821115612782576127826129d2565b8086161561278f57918102915b9490941c938002612761565b600061048660001984846000826127b457506001610486565b816127c157506000610486565b81600181146127d757600281146127e15761280e565b6001915050610486565b60ff8411156127f2576127f26129d2565b6001841b915084821115612808576128086129d2565b50610486565b5060208310610133831016604e8410600b8410161715612841575081810a8381111561283c5761283c6129d2565b610486565b61284e848484600161275e565b808604821115612860576128606129d2565b02949350505050565b60006001600160ff1b038184138284138082168684048611161561288f5761288f6129d2565b600160ff1b848712828116878305891216156128ad576128ad6129d2565b8587129250878205871284841616156128c8576128c86129d2565b878505871281841616156128de576128de6129d2565b505050929093029392505050565b60008083128015600160ff1b85018412161561290a5761290a6129d2565b6001600160ff1b0384018313811615612925576129256129d2565b50500390565b60008282101561293d5761293d6129d2565b500390565b60005b8381101561295d578181015183820152602001612945565b83811115610b8d5750506000910152565b60028104600182168061298257607f821691505b6020821081141561102957634e487b7160e01b600052602260045260246000fd5b60006000198214156129b7576129b76129d2565b5060010190565b6000826129cd576129cd6129e8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461137357600080fdfea2646970667358221220472ff7f61b965f16b88cef5221fb5b6aeae87b8e349c76aab175772b80d813dd64736f6c63430008020033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c80637158da7c116100de578063ade6e2aa11610097578063dd62ed3e11610071578063dd62ed3e14610351578063f3c274a61461038a578063f630df3414610397578063f77c4791146103aa57610173565b8063ade6e2aa1461032c578063c52987cf14610335578063d505accf1461033e57610173565b80637158da7c146102c55780637ecebe00146102d857806395d89b41146102eb578063a457c2d7146102f3578063a9059cbb14610306578063aabaecd61461031957610173565b806329368e4e1161013057806329368e4e14610260578063313ce567146102755780633644e51514610284578063395093511461028c5780636481ad5d1461029f57806370a08231146102b257610173565b806306fdde03146101785780630812c45214610196578063095ea7b3146101ed57806317d69bc81461021057806318160ddd1461023b57806323b872dd1461024d575b600080fd5b6101806103bd565b60405161018d9190612645565b60405180910390f35b60cf5460cd5460ce5460d05460d15460d254604080516001600160a01b039788168152958716602087015295909316948401949094526060830152608082019290925260ff909116151560a082015260c00161018d565b6102006101fb36600461233a565b61044f565b604051901515815260200161018d565b60ce54610223906001600160a01b031681565b6040516001600160a01b03909116815260200161018d565b6035545b60405190815260200161018d565b61020061025b366004612285565b610467565b61027361026e36600461233a565b61048d565b005b6040516008815260200161018d565b61023f61050b565b61020061029a36600461233a565b61051a565b6102736102ad36600461233a565b610559565b61023f6102c036600461218e565b6105ce565b60cd54610223906001600160a01b031681565b61023f6102e636600461218e565b6105ed565b61018061060d565b61020061030136600461233a565b61061c565b61020061031436600461233a565b6106b9565b60cf54610223906001600160a01b031681565b61023f60d15481565b61023f60d05481565b61027361034c3660046122c5565b6106c7565b61023f61035f3660046121c6565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b60d2546102009060ff1681565b6102736103a53660046121fe565b61080d565b60cc54610223906001600160a01b031681565b6060603680546103cc9061296e565b80601f01602080910402602001604051908101604052809291908181526020018280546103f89061296e565b80156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b5050505050905090565b60003361045d8185856109dc565b5060019392505050565b600033610475858285610b01565b610480858585610b93565b60019150505b9392505050565b60cc546001600160a01b031633146104fd5760405162461bcd60e51b815260206004820152602860248201527f56546f6b656e3a204f6e6c7920436f6e74726f6c6c65722063616e206275726e6044820152672056546f6b656e7360c01b60648201526084015b60405180910390fd5b6105078282610d61565b5050565b6000610515610eac565b905090565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919061045d9082908690610554908790612704565b6109dc565b60cc546001600160a01b031633146105c45760405162461bcd60e51b815260206004820152602860248201527f56546f6b656e3a204f6e6c7920436f6e74726f6c6c65722063616e206d696e746044820152672056546f6b656e7360c01b60648201526084016104f4565b6105078282610f27565b6001600160a01b0381166000908152603360205260409020545b919050565b6001600160a01b0381166000908152609960205260408120545b92915050565b6060603780546103cc9061296e565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190838110156106a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104f4565b6106ae82868684036109dc565b506001949350505050565b60003361045d818585610b93565b834211156107175760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016104f4565b6000609a548888886107288c611007565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006107838261102f565b905060006107938287878761107d565b9050896001600160a01b0316816001600160a01b0316146107f65760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016104f4565b6108018a8a8a6109dc565b50505050505050505050565b600054610100900460ff166108285760005460ff161561082c565b303b155b61088f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104f4565b600054610100900460ff161580156108ba576000805460ff1961ff0019909116610100171660011790555b876001600160a01b0316633018205f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f357600080fd5b505afa158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b91906121aa565b60cc80546001600160a01b03199081166001600160a01b039384161790915560cd805482168a841617905560ce8054821689841617905560cf805490911691871691909117905560d084905560d183905560d2805460ff19168315151790556000806109956110a5565b915091506109a282611330565b6109ab81611330565b6109b58282611376565b6109be826113c4565b505080156109d2576000805461ff00191690555b5050505050505050565b6001600160a01b038316610a3e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f4565b6001600160a01b038216610a9f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f4565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114610b8d5781811015610b805760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f4565b610b8d84848484036109dc565b50505050565b6001600160a01b038316610bf75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f4565b6001600160a01b038216610c595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f4565b6001600160a01b03831660009081526033602052604090205481811015610cd15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f4565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290610d08908490612704565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5491815260200190565b60405180910390a3610b8d565b6001600160a01b038216610dc15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104f4565b6001600160a01b03821660009081526033602052604090205481811015610e355760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104f4565b6001600160a01b0383166000908152603360205260408120838303905560358054849290610e6490849061292b565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610af4565b505050565b60006105157f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610edb60655490565b6066546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6001600160a01b038216610f7d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f4565b8060356000828254610f8f9190612704565b90915550506001600160a01b03821660009081526033602052604081208054839290610fbc908490612704565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610507565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b600061060761103c610eac565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061108e87878787611417565b9150915061109b81611504565b5095945050505050565b606080600060cd60009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156110f857600080fd5b505afa15801561110c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111349190810190612365565b9050600060ce60009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561118657600080fd5b505afa15801561119a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111c29190810190612365565b9050600060cf60009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112509190810190612365565b9050600061125f60d054611707565b9050600080600061127160d1546117fd565b60d2549295509093509150600090819061128d9060ff16611823565b9150915060008061129d866118ac565b915091508a8a6112ac87611c44565b836112b68b611c9b565b8c888f6040516020016112d098979695949392919061242a565b6040516020818303038152906040529c508a8a8a6112ed88611c44565b856112f78c611c44565b8d8a60405160200161131098979695949392919061257e565b6040516020818303038152906040529b5050505050505050505050509091565b611373816040516024016113449190612645565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052611dbe565b50565b600054610100900460ff1661139d5760405162461bcd60e51b81526004016104f490612678565b81516113b09060369060208501906120f5565b508051610ea79060379060208401906120f5565b600054610100900460ff166113eb5760405162461bcd60e51b81526004016104f490612678565b61140e81604051806040016040528060018152602001603160f81b815250611ddf565b61137381611e20565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561144e57506000905060036114fb565b8460ff16601b1415801561146657508460ff16601c14155b1561147757506000905060046114fb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156114cb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114f4576000600192509250506114fb565b9150600090505b94509492505050565b600081600481111561152657634e487b7160e01b600052602160045260246000fd5b141561153157611373565b600181600481111561155357634e487b7160e01b600052602160045260246000fd5b14156115a15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104f4565b60028160048111156115c357634e487b7160e01b600052602160045260246000fd5b14156116115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104f4565b600381600481111561163357634e487b7160e01b600052602160045260246000fd5b141561168c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104f4565b60048160048111156116ae57634e487b7160e01b600052602160045260246000fd5b14156113735760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016104f4565b60606000611719836305f5e100611e6e565b9050600061172b846305f5e100611e7a565b9050600061173882611c9b565b9050826117495792506105e8915050565b60005b61175784600a611e6e565b61177a57611766600a8561274a565b9350611773600182612704565b905061174c565b61178581600861292b565b61179090600a61279b565b61179a9085612704565b935060006117a785611c9b565b90506117ca816001846117bb600883612704565b6117c5919061292b565b611e86565b9050600083826040516020016117e1929190612519565b60408051808303601f1901815291905298975050505050505050565b60008080611816611811620151808661274a565b611f81565b9196909550909350915050565b606080821561186b57604051806040016040528060018152602001600560fc1b81525060405180604001604052806003815260200162141d5d60ea1b815250915091506118a7565b604051806040016040528060018152602001604360f81b8152506040518060400160405280600481526020016310d85b1b60e21b815250915091505b915091565b60608082600114156118fd57604051806040016040528060038152602001622520a760e91b815250604051806040016040528060078152602001664a616e7561727960c81b815250915091506118a7565b826002141561194c57604051806040016040528060038152602001622322a160e91b81525060405180604001604052806008815260200167466562727561727960c01b815250915091506118a7565b8260031415611998576040518060400160405280600381526020016226a0a960e91b8152506040518060400160405280600581526020016409ac2e4c6d60db1b815250915091506118a7565b82600414156119e4576040518060400160405280600381526020016220a82960e91b81525060405180604001604052806005815260200164105c1c9a5b60da1b815250915091506118a7565b8260051415611a2e57604051806040016040528060038152602001624d415960e81b815250604051806040016040528060038152602001624d617960e81b815250915091506118a7565b8260061415611a795760405180604001604052806003815260200162252aa760e91b815250604051806040016040528060048152602001634a756e6560e01b815250915091506118a7565b8260071415611ac4576040518060400160405280600381526020016212955360ea1b815250604051806040016040528060048152602001634a756c7960e01b815250915091506118a7565b8260081415611b11576040518060400160405280600381526020016241554760e81b81525060405180604001604052806006815260200165105d59dd5cdd60d21b815250915091506118a7565b8260091415611b61576040518060400160405280600381526020016205345560ec1b8152506040518060400160405280600981526020016829b2b83a32b6b132b960b91b815250915091506118a7565b82600a1415611baf576040518060400160405280600381526020016213d0d560ea1b8152506040518060400160405280600781526020016627b1ba37b132b960c91b815250915091506118a7565b82600b1415611bfe57604051806040016040528060038152602001622727ab60e91b815250604051806040016040528060088152602001672737bb32b6b132b960c11b815250915091506118a7565b6040518060400160405280600381526020016244454360e81b815250604051806040016040528060088152602001672232b1b2b6b132b960c11b815250915091506118a7565b60606063821115611c5d57611c5a6064836129be565b91505b6000611c6883611c9b565b9050600a8310156106075780604051602001611c849190612555565b6040516020818303038152906040529150506105e8565b606081611cc057506040805180820190915260018152600360fc1b60208201526105e8565b8160005b8115611cea5780611cd4816129a3565b9150611ce39050600a8361274a565b9150611cc4565b60008167ffffffffffffffff811115611d1357634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d3d576020820181803683370190505b5090505b8415611db657611d5260018361292b565b9150611d5f600a866129be565b611d6a906030612704565b60f81b818381518110611d8d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611daf600a8661274a565b9450611d41565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600054610100900460ff16611e065760405162461bcd60e51b81526004016104f490612678565b815160209283012081519190920120606591909155606655565b600054610100900460ff16611e475760405162461bcd60e51b81526004016104f490612678565b507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9609a55565b600061048682846129be565b6000610486828461274a565b60606000611e94848461292b565b67ffffffffffffffff811115611eba57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611ee4576020820181803683370190505b50905060005b611ef4858561292b565b811015611f785785611f068287612704565b81518110611f2457634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b828281518110611f4f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535080611f70816129a3565b915050611eea565b50949350505050565b60008080838162253d8c611f988362010bd96126c3565b611fa291906126c3565b9050600062023ab1611fb5836004612869565b611fbf919061271c565b90506004611fd08262023ab1612869565b611fdb9060036126c3565b611fe5919061271c565b611fef90836128ec565b9150600062164b096120028460016126c3565b61200e90610fa0612869565b612018919061271c565b90506004612028826105b5612869565b612032919061271c565b61203c90846128ec565b61204790601f6126c3565b9250600061098f612059856050612869565b612063919061271c565b9050600060506120758361098f612869565b61207f919061271c565b61208990866128ec565b9050612096600b8361271c565b94506120a385600c612869565b6120ae8360026126c3565b6120b891906128ec565b915084836120c76031876128ec565b6120d2906064612869565b6120dc91906126c3565b6120e691906126c3565b9a919950975095505050505050565b8280546121019061296e565b90600052602060002090601f0160209004810192826121235760008555612169565b82601f1061213c57805160ff1916838001178555612169565b82800160010185558215612169579182015b8281111561216957825182559160200191906001019061214e565b50612175929150612179565b5090565b5b80821115612175576000815560010161217a565b60006020828403121561219f578081fd5b813561048681612a14565b6000602082840312156121bb578081fd5b815161048681612a14565b600080604083850312156121d8578081fd5b82356121e381612a14565b915060208301356121f381612a14565b809150509250929050565b600080600080600080600060e0888a031215612218578283fd5b873561222381612a14565b9650602088013561223381612a14565b9550604088013561224381612a14565b9450606088013561225381612a14565b93506080880135925060a0880135915060c08801358015158114612275578182fd5b8091505092959891949750929550565b600080600060608486031215612299578283fd5b83356122a481612a14565b925060208401356122b481612a14565b929592945050506040919091013590565b600080600080600080600060e0888a0312156122df578283fd5b87356122ea81612a14565b965060208801356122fa81612a14565b95506040880135945060608801359350608088013560ff8116811461231d578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561234c578182fd5b823561235781612a14565b946020939093013593505050565b600060208284031215612376578081fd5b815167ffffffffffffffff8082111561238d578283fd5b818401915084601f8301126123a0578283fd5b8151818111156123b2576123b26129fe565b604051601f8201601f19908116603f011681019083821181831017156123da576123da6129fe565b816040528281528760208487010111156123f2578586fd5b612403836020830160208801612942565b979650505050505050565b60008151612420818560208601612942565b9290920192915050565b60008951602061243d8285838f01612942565b8a51918401916124508184848f01612942565b600160fd1b92018281528a5190929061246f8160018601858f01612942565b808401935050602d60f81b8060018501528a516124928160028701868f01612942565b600294019384015288516124ac8160038601858d01612942565b600393019283015286516124c68160048501848b01612942565b6125086124f16124eb6124de6004858801018b61240e565b600160fd1b815260010190565b8861240e565b6a0810dbdb1b185d195c985b60aa1b8152600b0190565b9d9c50505050505050505050505050565b6000835161252b818460208801612942565b601760f91b9083019081528351612549816001840160208801612942565b01600101949350505050565b6000600360fc1b82528251612571816001850160208701612942565b9190910160010192915050565b6000603b60f91b82528951602061259b8260018601838f01612942565b8a51918401916125b18160018501848f01612942565b602f60f81b6001939091019283015289516125d28160028501848e01612942565b602d60f81b6002939091019283015288516125f38160038501848d01612942565b88519201916126088160038501848c01612942565b875192019161261d8160038501848b01612942565b61250861263f612639600384870101602d60f81b815260010190565b8961240e565b8761240e565b6000602082528251806020840152612664816040850160208701612942565b601f01601f19169190910160400192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600080821280156001600160ff1b03849003851316156126e5576126e56129d2565b600160ff1b83900384128116156126fe576126fe6129d2565b50500190565b60008219821115612717576127176129d2565b500190565b60008261272b5761272b6129e8565b600160ff1b821460001984141615612745576127456129d2565b500590565b600082612759576127596129e8565b500490565b80825b600180861161277057506114fb565b818704821115612782576127826129d2565b8086161561278f57918102915b9490941c938002612761565b600061048660001984846000826127b457506001610486565b816127c157506000610486565b81600181146127d757600281146127e15761280e565b6001915050610486565b60ff8411156127f2576127f26129d2565b6001841b915084821115612808576128086129d2565b50610486565b5060208310610133831016604e8410600b8410161715612841575081810a8381111561283c5761283c6129d2565b610486565b61284e848484600161275e565b808604821115612860576128606129d2565b02949350505050565b60006001600160ff1b038184138284138082168684048611161561288f5761288f6129d2565b600160ff1b848712828116878305891216156128ad576128ad6129d2565b8587129250878205871284841616156128c8576128c86129d2565b878505871281841616156128de576128de6129d2565b505050929093029392505050565b60008083128015600160ff1b85018412161561290a5761290a6129d2565b6001600160ff1b0384018313811615612925576129256129d2565b50500390565b60008282101561293d5761293d6129d2565b500390565b60005b8381101561295d578181015183820152602001612945565b83811115610b8d5750506000910152565b60028104600182168061298257607f821691505b6020821081141561102957634e487b7160e01b600052602260045260246000fd5b60006000198214156129b7576129b76129d2565b5060010190565b6000826129cd576129cd6129e8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461137357600080fdfea2646970667358221220472ff7f61b965f16b88cef5221fb5b6aeae87b8e349c76aab175772b80d813dd64736f6c63430008020033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
