{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockAToken",
  "sourceName": "contracts/mocks/upgradeability/MockAToken.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IPool",
          "name": "pool",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "BalanceTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balanceIncrease",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "treasury",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "aTokenDecimals",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "aTokenName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "aTokenSymbol",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balanceIncrease",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "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": "ATOKEN_REVISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EIP712_REVISION",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "POOL",
      "outputs": [
        {
          "internalType": "contract IPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RESERVE_TREASURY_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNDERLYING_ASSET_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "user",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiverOfUnderlying",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "getIncentivesController",
      "outputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getPreviousIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getScaledUserBalanceAndSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "handleRepayment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "contract IPool",
          "name": "initializingPool",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "treasury",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "aTokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "aTokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "aTokenSymbol",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mintToTreasury",
      "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": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "rescueTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "scaledBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "scaledTotalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "controller",
          "type": "address"
        }
      ],
      "name": "setIncentivesController",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "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": "value",
          "type": "uint256"
        }
      ],
      "name": "transferOnLiquidation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferUnderlyingTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e0604052600080553480156200001557600080fd5b50604051620038ee380380620038ee83398101604081905262000038916200021f565b80806040518060400160405280600b81526020016a105513d2d15397d253541360aa1b8152506040518060400160405280600b81526020016a105513d2d15397d253541360aa1b81525060008383838383838383836001600160a01b0316630542975c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f191906200021f565b6001600160a01b031660805282516200011290603790602086019062000160565b5081516200012890603890602085019062000160565b506039805460ff191660ff9290921691909117905550506001600160a01b031660a05250504660c05250620002839650505050505050565b8280546200016e9062000246565b90600052602060002090601f016020900481019282620001925760008555620001dd565b82601f10620001ad57805160ff1916838001178555620001dd565b82800160010185558215620001dd579182015b82811115620001dd578251825591602001919060010190620001c0565b50620001eb929150620001ef565b5090565b5b80821115620001eb5760008155600101620001f0565b6001600160a01b03811681146200021c57600080fd5b50565b6000602082840312156200023257600080fd5b81516200023f8162000206565b9392505050565b600181811c908216806200025b57607f821691505b602082108114156200027d57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c0516135d9620003156000396000611ccd0152600081816103bc0152818161071d0152818161088401528181610a8301528181610c9d01528181610d6a01528181610e2c01528181610f0f01528181610f8f015281816110b701528181611709015281816119d90152818161238201526124f901526000818161113e01526117c801526135d96000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c8063781603761161012a578063b1bf962d116100bd578063d7020d0a1161008c578063e075398611610071578063e07539861461058c578063e655dbd8146105e8578063f866c319146105fb57600080fd5b8063d7020d0a14610533578063dd62ed3e1461054657600080fd5b8063b1bf962d146104f2578063b3f1c93d146104fa578063cea9d26f1461050d578063d505accf1461052057600080fd5b8063a457c2d7116100f9578063a457c2d714610490578063a9059cbb146104a3578063ae167335146104b6578063b16a19de146104d457600080fd5b806378160376146104265780637df5bd3b146104625780637ecebe001461047557806395d89b411461048857600080fd5b806330adf81f116101bd5780634efecaa51161018c57806370a082311161017157806370a08231146103a45780637535d246146103b757806375d264131461040357600080fd5b80634efecaa51461037e5780636fd976761461039157600080fd5b806330adf81f14610327578063313ce5671461034e5780633644e51514610363578063395093511461036b57600080fd5b806318160ddd116101f957806318160ddd146102e4578063183fb413146102ec5780631da24f3e1461030157806323b872dd1461031457600080fd5b806306fdde031461022b578063095ea7b3146102495780630afbcdc91461026c5780630bd7ad3b146102ce575b600080fd5b61023361060e565b6040516102409190613040565b60405180910390f35b61025c61025736600461308f565b6106a0565b6040519015158152602001610240565b6102b961027a3660046130bb565b73ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546036546fffffffffffffffffffffffffffffffff90911691565b60408051928352602083019190915201610240565b6102d6600181565b604051908152602001610240565b6102d66106b6565b6102ff6102fa366004613132565b610795565b005b6102d661030f3660046130bb565b610b54565b61025c610322366004613226565b610b93565b6102d67f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460405160ff9091168152602001610240565b6102d6610c13565b61025c61037936600461308f565b610c22565b6102ff61038c36600461308f565b610c66565b6102ff61039f366004613226565b610d33565b6102d66103b23660046130bb565b610ddd565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b603954610100900473ffffffffffffffffffffffffffffffffffffffff166103de565b6102336040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6102ff610470366004613267565b610ed8565b6102d66104833660046130bb565b610fd1565b610233610ffc565b61025c61049e36600461308f565b61100b565b61025c6104b136600461308f565b61104f565b603c5473ffffffffffffffffffffffffffffffffffffffff166103de565b603d5473ffffffffffffffffffffffffffffffffffffffff166103de565b6102d6611072565b61025c610508366004613289565b61107d565b6102ff61051b366004613226565b61113a565b6102ff61052e3660046132cf565b611378565b6102ff610541366004613289565b6116d2565b6102d661055436600461333d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b6102d661059a3660046130bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6102ff6105f63660046130bb565b6117c4565b6102ff610609366004613226565b6119a2565b60606037805461061d90613376565b80601f016020809104026020016040519081016040528092919081815260200182805461064990613376565b80156106965780601f1061066b57610100808354040283529160200191610696565b820191906000526020600020905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b60006106ad338484611a54565b50600192915050565b6000806106c260365490565b9050806106d157600091505090565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261078f917f0000000000000000000000000000000000000000000000000000000000000000169063d15e005390602401602060405180830381865afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078891906133c4565b8290611ac2565b91505090565b60015460029060ff16806107a85750303b155b806107b4575060005481115b610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60015460ff1615801561088257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905560008290555b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f38370000000000000000000000000000000000000000000000000000000000008152509061093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5061097f88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b1992505050565b6109be86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b2c92505050565b603980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8b16179055603c805473ffffffffffffffffffffffffffffffffffffffff808f167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255603d80548e8416921691909117905560398054918c16610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055610a7b611b3f565b603b819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8e8d8d8d8d8d8d8d8d604051610b0e99989796959493929190613426565b60405180910390a38015610b4557600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603460205260408120546fffffffffffffffffffffffffffffffff165b92915050565b600080610b9f83611c04565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260356020908152604080832033808552925290912054919250610bfd91879190610bf8906fffffffffffffffffffffffffffffffff8616906134d0565b611a54565b610c08858583611caa565b506001949350505050565b6000610c1d611cc9565b905090565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106ad918590610bf89086906134e7565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50603d54610d2f9073ffffffffffffffffffffffffffffffffffffffff168383611d02565b5050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091610b8d917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9991906133c4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260409020546fffffffffffffffffffffffffffffffff165b90611ac2565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5081610f86575050565b603c54610fcc907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff168484611dd5565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603a6020526040812054610b8d565b60606038805461061d90613376565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106ad918590610bf89086906134d0565b60008061105b83611c04565b9050611068338583611caa565b5060019392505050565b6000610c1d60365490565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152600090337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5061113185858585611dd5565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb91906134ff565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125c919061351c565b6040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250906112ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50603d5460408051808201909152600281527f383500000000000000000000000000000000000000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff86811691161415611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50610dd773ffffffffffffffffffffffffffffffffffffffff85168484611d02565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff88166113fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50834211156040518060400160405280600281526020017f37380000000000000000000000000000000000000000000000000000000000008152509061146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5073ffffffffffffffffffffffffffffffffffffffff87166000908152603a60205260408120549061149d610c13565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082015273ffffffffffffffffffffffffffffffffffffffff808d1692820192909252908a1660608201526080810189905260a0810184905260c0810188905260e0016040516020818303038152906040528051906020012060405160200161155e9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa1580156115e4573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f37390000000000000000000000000000000000000000000000000000000000008152509061168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b506116968260016134e7565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152603a60205260409020556116c7898989611a54565b505050505050505050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5061178384848484612016565b73ffffffffffffffffffffffffffffffffffffffff83163014610dd757603d54610dd79073ffffffffffffffffffffffffffffffffffffffff168484611d02565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185591906134ff565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e6919061351c565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50506039805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50610fcc8383836000612334565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081157ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff83900484111517611af757600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b8051610d2f906037906020840190612f45565b8051610d2f906038906020840190612f45565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611b6a6125b0565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006fffffffffffffffffffffffffffffffff821115611ca6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3238206269747300000000000000000000000000000000000000000000000000606482015260840161083c565b5090565b610fcc8383836fffffffffffffffffffffffffffffffff166001612334565b60007f0000000000000000000000000000000000000000000000000000000000000000461415611cfa5750603b5490565b610c1d611b3f565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af1611d65573d6000803e3d6000fd5b50611d6f846125ba565b610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f475076323a206661696c6564207472616e736665720000000000000000000000604482015260640161083c565b600080611de28484612686565b60408051808201909152600281527f3234000000000000000000000000000000000000000000000000000000000000602082015290915081611e51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291611eae918491700100000000000000000000000000000000900416611ac2565b611eb88387611ac2565b611ec291906134d0565b9050611ecd85611c04565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055611f3587611f3085611c04565b6126c5565b6000611f4182886134e7565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fa391815260200190565b60405180910390a3604080518281526020810184905290810187905273ffffffffffffffffffffffffffffffffffffffff808a1691908b16907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35050159695505050505050565b60006120228383612686565b60408051808201909152600281527f3235000000000000000000000000000000000000000000000000000000000000602082015290915081612091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff80821692916120ee918491700100000000000000000000000000000000900416611ac2565b6120f88386611ac2565b61210291906134d0565b905061210d84611c04565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292169190911790556121758761217085611c04565b612841565b8481111561225457600061218986836134d0565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121eb91815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff89169081907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35061232b565b600061226082876134d0565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122c291815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff80891691908a16907f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f90906060015b60405180910390a3505b50505050505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201819052916000917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa1580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef91906133c4565b9050600061243582610ed28973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b9050600061247b83610ed28973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b9050612489888888866128a5565b8415612556576040517fd5ed393300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015289811660248301528881166044830152606482018890526084820184905260a482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d5ed39339060c401600060405180830381600087803b15801561253d57600080fd5b505af1158015612551573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff8088169089167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda866661259c8987612686565b604080519182526020820188905201612321565b6060610c1d61060e565b60006125fa565b7f08c379a00000000000000000000000000000000000000000000000000000000060005260206004528060245250806044525060646000fd5b3d80156126395760208114612673576126347f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f6125c1565b612680565b823b61266a5761266a7f475076323a206e6f74206120636f6e747261637400000000000000000000000060146125c1565b60019150612680565b3d6000803e600051151591505b50919050565b600081156b033b2e3c9fd0803ce8000000600284041904841117156126aa57600080fd5b506b033b2e3c9fd0803ce80000009190910260028204010490565b6036546126e46fffffffffffffffffffffffffffffffff8316826134e7565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612729838261353e565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9390931692909217909155603954610100900416801561283a576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018590526fffffffffffffffffffffffffffffffff841660448301528216906331873e2e90606401600060405180830381600087803b15801561282657600080fd5b505af11580156116c7573d6000803e3d6000fd5b5050505050565b6036546128606fffffffffffffffffffffffffffffffff8316826134d0565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff166127298382613572565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291612901918491700100000000000000000000000000000000900416611ac2565b61290b8385611ac2565b61291591906134d0565b905060006129578673ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260346020526040812054919250906129b290839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611ac2565b6129bc8387611ac2565b6129c691906134d0565b90506129d185611c04565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612a3085611c04565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612aa28888612a9d612a988a8a612686565b611c04565b612c9a565b8215612b515760405183815273ffffffffffffffffffffffffffffffffffffffff8916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805184815260208101859052808201879052905173ffffffffffffffffffffffffffffffffffffffff8a169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614158015612b8d5750600081115b15612c3b5760405181815273ffffffffffffffffffffffffffffffffffffffff8816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805182815260208101839052808201879052905173ffffffffffffffffffffffffffffffffffffffff89169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161232191815260200190565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612cdc8282613572565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526034602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9586161790559186168152205416612d50838261353e565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff93909316929092179091556039546101009004168015612f3d576036546040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018390526fffffffffffffffffffffffffffffffff861660448301528316906331873e2e90606401600060405180830381600087803b158015612e5057600080fd5b505af1158015612e64573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461232b576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018390526fffffffffffffffffffffffffffffffff851660448301528316906331873e2e90606401600060405180830381600087803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b50505050505b505050505050565b828054612f5190613376565b90600052602060002090601f016020900481019282612f735760008555612fb9565b82601f10612f8c57805160ff1916838001178555612fb9565b82800160010185558215612fb9579182015b82811115612fb9578251825591602001919060010190612f9e565b50611ca69291505b80821115611ca65760008155600101612fc1565b6000815180845260005b81811015612ffb57602081850181015186830182015201612fdf565b8181111561300d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130536020830184612fd5565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461307c57600080fd5b50565b803561308a8161305a565b919050565b600080604083850312156130a257600080fd5b82356130ad8161305a565b946020939093013593505050565b6000602082840312156130cd57600080fd5b81356130538161305a565b803560ff8116811461308a57600080fd5b60008083601f8401126130fb57600080fd5b50813567ffffffffffffffff81111561311357600080fd5b60208301915083602082850101111561312b57600080fd5b9250929050565b60008060008060008060008060008060006101008c8e03121561315457600080fd5b61315d8c61307f565b9a5061316b60208d0161307f565b995061317960408d0161307f565b985061318760608d0161307f565b975061319560808d016130d8565b965067ffffffffffffffff8060a08e013511156131b157600080fd5b6131c18e60a08f01358f016130e9565b909750955060c08d01358110156131d757600080fd5b6131e78e60c08f01358f016130e9565b909550935060e08d01358110156131fd57600080fd5b5061320e8d60e08e01358e016130e9565b81935080925050509295989b509295989b9093969950565b60008060006060848603121561323b57600080fd5b83356132468161305a565b925060208401356132568161305a565b929592945050506040919091013590565b6000806040838503121561327a57600080fd5b50508035926020909101359150565b6000806000806080858703121561329f57600080fd5b84356132aa8161305a565b935060208501356132ba8161305a565b93969395505050506040820135916060013590565b600080600080600080600060e0888a0312156132ea57600080fd5b87356132f58161305a565b965060208801356133058161305a565b95506040880135945060608801359350613321608089016130d8565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561335057600080fd5b823561335b8161305a565b9150602083013561336b8161305a565b809150509250929050565b600181811c9082168061338a57607f821691505b60208210811415612680577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602082840312156133d657600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808c168352808b1660208401525060ff8916604083015260c0606083015261346960c08301888a6133dd565b828103608084015261347c8187896133dd565b905082810360a08401526134918185876133dd565b9c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156134e2576134e26134a1565b500390565b600082198211156134fa576134fa6134a1565b500190565b60006020828403121561351157600080fd5b81516130538161305a565b60006020828403121561352e57600080fd5b8151801515811461305357600080fd5b60006fffffffffffffffffffffffffffffffff808316818516808303821115613569576135696134a1565b01949350505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561359b5761359b6134a1565b03939250505056fea2646970667358221220ac468757d0f026a6b3a52b58a4305cc76754b4319bb541eb3c25ef99f422775b64736f6c634300080a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102265760003560e01c8063781603761161012a578063b1bf962d116100bd578063d7020d0a1161008c578063e075398611610071578063e07539861461058c578063e655dbd8146105e8578063f866c319146105fb57600080fd5b8063d7020d0a14610533578063dd62ed3e1461054657600080fd5b8063b1bf962d146104f2578063b3f1c93d146104fa578063cea9d26f1461050d578063d505accf1461052057600080fd5b8063a457c2d7116100f9578063a457c2d714610490578063a9059cbb146104a3578063ae167335146104b6578063b16a19de146104d457600080fd5b806378160376146104265780637df5bd3b146104625780637ecebe001461047557806395d89b411461048857600080fd5b806330adf81f116101bd5780634efecaa51161018c57806370a082311161017157806370a08231146103a45780637535d246146103b757806375d264131461040357600080fd5b80634efecaa51461037e5780636fd976761461039157600080fd5b806330adf81f14610327578063313ce5671461034e5780633644e51514610363578063395093511461036b57600080fd5b806318160ddd116101f957806318160ddd146102e4578063183fb413146102ec5780631da24f3e1461030157806323b872dd1461031457600080fd5b806306fdde031461022b578063095ea7b3146102495780630afbcdc91461026c5780630bd7ad3b146102ce575b600080fd5b61023361060e565b6040516102409190613040565b60405180910390f35b61025c61025736600461308f565b6106a0565b6040519015158152602001610240565b6102b961027a3660046130bb565b73ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546036546fffffffffffffffffffffffffffffffff90911691565b60408051928352602083019190915201610240565b6102d6600181565b604051908152602001610240565b6102d66106b6565b6102ff6102fa366004613132565b610795565b005b6102d661030f3660046130bb565b610b54565b61025c610322366004613226565b610b93565b6102d67f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460405160ff9091168152602001610240565b6102d6610c13565b61025c61037936600461308f565b610c22565b6102ff61038c36600461308f565b610c66565b6102ff61039f366004613226565b610d33565b6102d66103b23660046130bb565b610ddd565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b603954610100900473ffffffffffffffffffffffffffffffffffffffff166103de565b6102336040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6102ff610470366004613267565b610ed8565b6102d66104833660046130bb565b610fd1565b610233610ffc565b61025c61049e36600461308f565b61100b565b61025c6104b136600461308f565b61104f565b603c5473ffffffffffffffffffffffffffffffffffffffff166103de565b603d5473ffffffffffffffffffffffffffffffffffffffff166103de565b6102d6611072565b61025c610508366004613289565b61107d565b6102ff61051b366004613226565b61113a565b6102ff61052e3660046132cf565b611378565b6102ff610541366004613289565b6116d2565b6102d661055436600461333d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b6102d661059a3660046130bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6102ff6105f63660046130bb565b6117c4565b6102ff610609366004613226565b6119a2565b60606037805461061d90613376565b80601f016020809104026020016040519081016040528092919081815260200182805461064990613376565b80156106965780601f1061066b57610100808354040283529160200191610696565b820191906000526020600020905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b60006106ad338484611a54565b50600192915050565b6000806106c260365490565b9050806106d157600091505090565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261078f917f0000000000000000000000000000000000000000000000000000000000000000169063d15e005390602401602060405180830381865afa158015610764573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078891906133c4565b8290611ac2565b91505090565b60015460029060ff16806107a85750303b155b806107b4575060005481115b610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60015460ff1615801561088257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905560008290555b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f38370000000000000000000000000000000000000000000000000000000000008152509061093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5061097f88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b1992505050565b6109be86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b2c92505050565b603980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8b16179055603c805473ffffffffffffffffffffffffffffffffffffffff808f167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255603d80548e8416921691909117905560398054918c16610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055610a7b611b3f565b603b819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8e8d8d8d8d8d8d8d8d604051610b0e99989796959493929190613426565b60405180910390a38015610b4557600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603460205260408120546fffffffffffffffffffffffffffffffff165b92915050565b600080610b9f83611c04565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260356020908152604080832033808552925290912054919250610bfd91879190610bf8906fffffffffffffffffffffffffffffffff8616906134d0565b611a54565b610c08858583611caa565b506001949350505050565b6000610c1d611cc9565b905090565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106ad918590610bf89086906134e7565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50603d54610d2f9073ffffffffffffffffffffffffffffffffffffffff168383611d02565b5050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091610b8d917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9991906133c4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260409020546fffffffffffffffffffffffffffffffff165b90611ac2565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5081610f86575050565b603c54610fcc907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff168484611dd5565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603a6020526040812054610b8d565b60606038805461061d90613376565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106ad918590610bf89086906134d0565b60008061105b83611c04565b9050611068338583611caa565b5060019392505050565b6000610c1d60365490565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152600090337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5061113185858585611dd5565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb91906134ff565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125c919061351c565b6040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250906112ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50603d5460408051808201909152600281527f383500000000000000000000000000000000000000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff86811691161415611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50610dd773ffffffffffffffffffffffffffffffffffffffff85168484611d02565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff88166113fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50834211156040518060400160405280600281526020017f37380000000000000000000000000000000000000000000000000000000000008152509061146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5073ffffffffffffffffffffffffffffffffffffffff87166000908152603a60205260408120549061149d610c13565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082015273ffffffffffffffffffffffffffffffffffffffff808d1692820192909252908a1660608201526080810189905260a0810184905260c0810188905260e0016040516020818303038152906040528051906020012060405160200161155e9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa1580156115e4573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f37390000000000000000000000000000000000000000000000000000000000008152509061168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b506116968260016134e7565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152603a60205260409020556116c7898989611a54565b505050505050505050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5061178384848484612016565b73ffffffffffffffffffffffffffffffffffffffff83163014610dd757603d54610dd79073ffffffffffffffffffffffffffffffffffffffff168484611d02565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185591906134ff565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e6919061351c565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50506039805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b50610fcc8383836000612334565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081157ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff83900484111517611af757600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b8051610d2f906037906020840190612f45565b8051610d2f906038906020840190612f45565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611b6a6125b0565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006fffffffffffffffffffffffffffffffff821115611ca6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3238206269747300000000000000000000000000000000000000000000000000606482015260840161083c565b5090565b610fcc8383836fffffffffffffffffffffffffffffffff166001612334565b60007f0000000000000000000000000000000000000000000000000000000000000000461415611cfa5750603b5490565b610c1d611b3f565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af1611d65573d6000803e3d6000fd5b50611d6f846125ba565b610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f475076323a206661696c6564207472616e736665720000000000000000000000604482015260640161083c565b600080611de28484612686565b60408051808201909152600281527f3234000000000000000000000000000000000000000000000000000000000000602082015290915081611e51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291611eae918491700100000000000000000000000000000000900416611ac2565b611eb88387611ac2565b611ec291906134d0565b9050611ecd85611c04565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055611f3587611f3085611c04565b6126c5565b6000611f4182886134e7565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fa391815260200190565b60405180910390a3604080518281526020810184905290810187905273ffffffffffffffffffffffffffffffffffffffff808a1691908b16907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35050159695505050505050565b60006120228383612686565b60408051808201909152600281527f3235000000000000000000000000000000000000000000000000000000000000602082015290915081612091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c9190613040565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff80821692916120ee918491700100000000000000000000000000000000900416611ac2565b6120f88386611ac2565b61210291906134d0565b905061210d84611c04565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292169190911790556121758761217085611c04565b612841565b8481111561225457600061218986836134d0565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121eb91815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff89169081907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35061232b565b600061226082876134d0565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122c291815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff80891691908a16907f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f90906060015b60405180910390a3505b50505050505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201819052916000917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa1580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef91906133c4565b9050600061243582610ed28973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b9050600061247b83610ed28973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b9050612489888888866128a5565b8415612556576040517fd5ed393300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015289811660248301528881166044830152606482018890526084820184905260a482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d5ed39339060c401600060405180830381600087803b15801561253d57600080fd5b505af1158015612551573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff8088169089167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda866661259c8987612686565b604080519182526020820188905201612321565b6060610c1d61060e565b60006125fa565b7f08c379a00000000000000000000000000000000000000000000000000000000060005260206004528060245250806044525060646000fd5b3d80156126395760208114612673576126347f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f6125c1565b612680565b823b61266a5761266a7f475076323a206e6f74206120636f6e747261637400000000000000000000000060146125c1565b60019150612680565b3d6000803e600051151591505b50919050565b600081156b033b2e3c9fd0803ce8000000600284041904841117156126aa57600080fd5b506b033b2e3c9fd0803ce80000009190910260028204010490565b6036546126e46fffffffffffffffffffffffffffffffff8316826134e7565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612729838261353e565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9390931692909217909155603954610100900416801561283a576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018590526fffffffffffffffffffffffffffffffff841660448301528216906331873e2e90606401600060405180830381600087803b15801561282657600080fd5b505af11580156116c7573d6000803e3d6000fd5b5050505050565b6036546128606fffffffffffffffffffffffffffffffff8316826134d0565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff166127298382613572565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291612901918491700100000000000000000000000000000000900416611ac2565b61290b8385611ac2565b61291591906134d0565b905060006129578673ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260346020526040812054919250906129b290839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611ac2565b6129bc8387611ac2565b6129c691906134d0565b90506129d185611c04565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612a3085611c04565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612aa28888612a9d612a988a8a612686565b611c04565b612c9a565b8215612b515760405183815273ffffffffffffffffffffffffffffffffffffffff8916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805184815260208101859052808201879052905173ffffffffffffffffffffffffffffffffffffffff8a169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614158015612b8d5750600081115b15612c3b5760405181815273ffffffffffffffffffffffffffffffffffffffff8816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805182815260208101839052808201879052905173ffffffffffffffffffffffffffffffffffffffff89169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161232191815260200190565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612cdc8282613572565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526034602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9586161790559186168152205416612d50838261353e565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff93909316929092179091556039546101009004168015612f3d576036546040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018390526fffffffffffffffffffffffffffffffff861660448301528316906331873e2e90606401600060405180830381600087803b158015612e5057600080fd5b505af1158015612e64573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461232b576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018390526fffffffffffffffffffffffffffffffff851660448301528316906331873e2e90606401600060405180830381600087803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b50505050505b505050505050565b828054612f5190613376565b90600052602060002090601f016020900481019282612f735760008555612fb9565b82601f10612f8c57805160ff1916838001178555612fb9565b82800160010185558215612fb9579182015b82811115612fb9578251825591602001919060010190612f9e565b50611ca69291505b80821115611ca65760008155600101612fc1565b6000815180845260005b81811015612ffb57602081850181015186830182015201612fdf565b8181111561300d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130536020830184612fd5565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461307c57600080fd5b50565b803561308a8161305a565b919050565b600080604083850312156130a257600080fd5b82356130ad8161305a565b946020939093013593505050565b6000602082840312156130cd57600080fd5b81356130538161305a565b803560ff8116811461308a57600080fd5b60008083601f8401126130fb57600080fd5b50813567ffffffffffffffff81111561311357600080fd5b60208301915083602082850101111561312b57600080fd5b9250929050565b60008060008060008060008060008060006101008c8e03121561315457600080fd5b61315d8c61307f565b9a5061316b60208d0161307f565b995061317960408d0161307f565b985061318760608d0161307f565b975061319560808d016130d8565b965067ffffffffffffffff8060a08e013511156131b157600080fd5b6131c18e60a08f01358f016130e9565b909750955060c08d01358110156131d757600080fd5b6131e78e60c08f01358f016130e9565b909550935060e08d01358110156131fd57600080fd5b5061320e8d60e08e01358e016130e9565b81935080925050509295989b509295989b9093969950565b60008060006060848603121561323b57600080fd5b83356132468161305a565b925060208401356132568161305a565b929592945050506040919091013590565b6000806040838503121561327a57600080fd5b50508035926020909101359150565b6000806000806080858703121561329f57600080fd5b84356132aa8161305a565b935060208501356132ba8161305a565b93969395505050506040820135916060013590565b600080600080600080600060e0888a0312156132ea57600080fd5b87356132f58161305a565b965060208801356133058161305a565b95506040880135945060608801359350613321608089016130d8565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561335057600080fd5b823561335b8161305a565b9150602083013561336b8161305a565b809150509250929050565b600181811c9082168061338a57607f821691505b60208210811415612680577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602082840312156133d657600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808c168352808b1660208401525060ff8916604083015260c0606083015261346960c08301888a6133dd565b828103608084015261347c8187896133dd565b905082810360a08401526134918185876133dd565b9c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156134e2576134e26134a1565b500390565b600082198211156134fa576134fa6134a1565b500190565b60006020828403121561351157600080fd5b81516130538161305a565b60006020828403121561352e57600080fd5b8151801515811461305357600080fd5b60006fffffffffffffffffffffffffffffffff808316818516808303821115613569576135696134a1565b01949350505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561359b5761359b6134a1565b03939250505056fea2646970667358221220ac468757d0f026a6b3a52b58a4305cc76754b4319bb541eb3c25ef99f422775b64736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
