UNPKG

@animoca/ethereum-contracts-sale

Version:
648 lines 83.5 kB
{
  "_format": "hh-sol-artifact-1",
  "contractName": "UniswapSwapSale",
  "sourceName": "contracts/sale/UniswapSwapSale.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "payoutWallet_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "skusCapacity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokensPerSkuCapacity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "referenceToken",
          "type": "address"
        },
        {
          "internalType": "contract IUniswapV2Router",
          "name": "uniswapV2Router",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "names",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "values",
          "type": "bytes32[]"
        }
      ],
      "name": "MagicValues",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "payoutWallet_",
          "type": "address"
        }
      ],
      "name": "PayoutWalletSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "purchaser",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extData",
          "type": "bytes"
        }
      ],
      "name": "Purchase",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxQuantityPerPurchase",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "notificationsReceiver",
          "type": "address"
        }
      ],
      "name": "SkuCreation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "name": "SkuPricingUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Started",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IUniswapV2Router",
          "name": "uniswapV2Router",
          "type": "address"
        }
      ],
      "name": "UniswapV2RouterSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "PRICE_CONVERT_VIA_ORACLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRICE_SWAP_VIA_ORACLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SUPPLY_UNLIMITED",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TOKEN_ETH",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "conversionRates",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "rates",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        }
      ],
      "name": "estimatePurchase",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalPrice",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[]",
          "name": "pricingData",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        }
      ],
      "name": "getSkuInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "remainingSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxQuantityPerPurchase",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "notificationsReceiver",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSkus",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "skus",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "payoutWallet",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        }
      ],
      "name": "purchaseFor",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "referenceToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "payoutWallet_",
          "type": "address"
        }
      ],
      "name": "setPayoutWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "start",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "referenceAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "swapRates",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "rates",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "uniswapV2Router",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Router",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "sku",
          "type": "bytes32"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        }
      ],
      "name": "updateSkuPricing",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b506040516200476a3803806200476a833981810160405260a08110156200003757600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b0319163390811782559351959694959294939192839288928892889288928692869286928692869286928692859285928592600192918691839182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03811662000119576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f8559181900360200190a150506003805460ff1916911515919091179055608082905260a081905260408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833750508351919250680a89e968a9cbe8aa8960bb1b9173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee91508490600090620001fe57fe5b60200260200101836000815181106200021357fe5b602002602001018281525082815250505060001960001b6f14d55414131657d5539312535255115160821b90836001815181106200024d57fe5b60200260200101836001815181106200026257fe5b60200260200101828152508281525050506000805160206200474a8339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015620002cb578181015183820152602001620002b1565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156200030c578181015183820152602001620002f2565b5050505090500194505050505060405180910390a15050600780546001600160a01b0319166001600160a01b03891617905550600094506001935084925062000353915050565b506040519080825280602002602001820160405280156200037e578160200160208202803683370190505b50604080516001808252818301909252919250600091906020808301908036833701905050905060001960001b7f50524943455f434f4e564552545f5649415f4f5241434c4500000000000000009083600081518110620003db57fe5b6020026020010183600081518110620003f057fe5b60200260200101828152508281525050506000805160206200474a8339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015620004595781810151838201526020016200043f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156200049a57818101518382015260200162000480565b5050505090500194505050505060405180910390a1505050505050600060016001600160401b0381118015620004cf57600080fd5b50604051908082528060200260200182016040528015620004fa578160200160208202803683370190505b506040805160018082528183019092529192506000919060208083019080368337505083519192507f50524943455f535741505f5649415f4f5241434c45000000000000000000000091600119915084906000906200055557fe5b60200260200101836000815181106200056a57fe5b60200260200101828152508281525050506000805160206200474a8339815191528282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015620005d3578181015183820152602001620005b9565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101562000614578181015183820152602001620005fa565b5050505090500194505050505060405180910390a150505050505062000640816200064c60201b60201c565b505050505050620006a0565b600880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffe70995e26c62b71bbd53a5b9e09215c42e2006fad72ba845051faa8de1510ba9181900360200190a150565b60805160a05161408b620006bf60003980611e1452505061408b6000f3fe6080604052600436106101795760003560e01c80638456cb59116100cb578063a963b2571161007f578063c7b778db11610059578063c7b778db1461083d578063f21f537d1461090c578063f2fde38b14610921576101ef565b8063a963b257146106c0578063bda4c5ab14610755578063be9a655514610828576101ef565b80638da5cb5b116100b05780638da5cb5b146106965780639865bcc8146106ab5780639e049545146106ab576101ef565b80638456cb591461066c5780638488bb4e14610681576101ef565b8063579f2c771161012d5780635e6e9f70116101075780635e6e9f701461049957806361bd3851146105d45780636b8f9c4314610639576101ef565b8063579f2c77146104345780635c4fafc71461045b5780635c975abb14610470576101ef565b80631694505e1161015e5780631694505e146103225780632a8a45bc146103375780633f4ba83a1461041f576101ef565b80631265b651146101f45780631323b06614610225576101ef565b366101ef576008546001600160a01b0316610192610954565b6001600160a01b0316146101ed576040805162461bcd60e51b815260206004820152601860248201527f53616c653a20496e76616c6964204554482073656e6465720000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561020057600080fd5b50610209610958565b604080516001600160a01b039092168252519081900360200190f35b34801561023157600080fd5b506102c7600480360360a081101561024857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561028857600080fd5b82018360208201111561029a57600080fd5b803590602001918460018302840111640100000000831117156102bc57600080fd5b509092509050610967565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561030d5781810151838201526020016102f5565b50505050905001935050505060405180910390f35b34801561032e57600080fd5b50610209610a5c565b34801561034357600080fd5b506103616004803603602081101561035a57600080fd5b5035610a6b565b60405180878152602001868152602001858152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156103c65781810151838201526020016103ae565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156104055781810151838201526020016103ed565b505050509050019850505050505050505060405180910390f35b34801561042b57600080fd5b506101ed610c10565b34801561044057600080fd5b50610449610c7e565b60408051918252519081900360200190f35b34801561046757600080fd5b50610209610c84565b34801561047c57600080fd5b50610485610c9c565b604080519115158252519081900360200190f35b3480156104a557600080fd5b506101ed600480360360608110156104bc57600080fd5b813591908101906040810160208201356401000000008111156104de57600080fd5b8201836020820111156104f057600080fd5b8035906020019184602083028401116401000000008311171561051257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561056257600080fd5b82018360208201111561057457600080fd5b8035906020019184602083028401116401000000008311171561059657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ca5945050505050565b3480156105e057600080fd5b506105e9610e82565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561062557818101518382015260200161060d565b505050509050019250505060405180910390f35b34801561064557600080fd5b506101ed6004803603602081101561065c57600080fd5b50356001600160a01b0316610edd565b34801561067857600080fd5b506101ed610fb5565b34801561068d57600080fd5b5061020961101c565b3480156106a257600080fd5b5061020961102b565b3480156106b757600080fd5b5061044961103a565b6101ed600480360360a08110156106d657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561071657600080fd5b82018360208201111561072857600080fd5b8035906020019184600183028401116401000000008311171561074a57600080fd5b509092509050611040565b34801561076157600080fd5b506105e96004803603606081101561077857600080fd5b81019060208101813564010000000081111561079357600080fd5b8201836020820111156107a557600080fd5b803590602001918460208302840111640100000000831117156107c757600080fd5b919390928235926040810190602001356401000000008111156107e957600080fd5b8201836020820111156107fb57600080fd5b8035906020019184600183028401116401000000008311171561081d57600080fd5b509092509050611126565b34801561083457600080fd5b506101ed611235565b34801561084957600080fd5b506105e96004803603604081101561086057600080fd5b81019060208101813564010000000081111561087b57600080fd5b82018360208201111561088d57600080fd5b803590602001918460208302840111640100000000831117156108af57600080fd5b9193909290916020810190356401000000008111156108cd57600080fd5b8201836020820111156108df57600080fd5b8035906020019184600183028401116401000000008311171561090157600080fd5b509092509050611248565b34801561091857600080fd5b50610449611334565b34801561092d57600080fd5b506101ed6004803603602081101561094457600080fd5b50356001600160a01b031661133a565b3390565b6007546001600160a01b031681565b60006060600254600014156109c3576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b6109cb6113ab565b6109d3613fc3565b6109db610954565b6001600160a01b03908116825289811660208084019190915290891660408084019190915260608301899052608083018890528051601f870183900483028101830190915285815290869086908190840183828082843760009201919091525050505060a0820152610a4c81611403565b9250925050965096945050505050565b6008546001600160a01b031681565b6000818152600660205260408120819081908190606090819083610a916004830161142a565b82549850905087610ae9576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b60018201546002830154600384015491985096506001600160a01b031694508067ffffffffffffffff81118015610b1f57600080fd5b50604051908082528060200260200182016040528015610b49578160200160208202803683370190505b5093508067ffffffffffffffff81118015610b6357600080fd5b50604051908082528060200260200182016040528015610b8d578160200160208202803683370190505b50925060005b81811015610c0457600080610bab600486018461142e565b915091508160001c878481518110610bbf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508060001c868481518110610bef57fe5b60209081029190910101525050600101610b93565b50505091939550919395565b600254610c64576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610c74610c6f610954565b6114c0565b610c7c611587565b565b60011981565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b60035460ff1681565b610cb0610c6f610954565b815181518114610d07576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e636f6e73697374656e742061727261797300000000000000604482015290519081900360640190fd5b60008481526006602052604090208054610d68576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b6004810182610db3576000610d7c8261142a565b905060005b81811015610dac576000610d95848261142e565b509050610da284826115df565b5050600101610d81565b5050610dbe565b610dbe8186866116bf565b857fcb3fe5489e0cd43d0f4a33d1e09a4a0463a03d0d38f56165530854e5540db1438686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610e26578181015183820152602001610e0e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e65578181015183820152602001610e4d565b5050505090500194505050505060405180910390a2505050505050565b60606004600001805480602002602001604051908101604052809291908181526020018280548015610ed357602002820191906000526020600020905b815481526020019060010190808311610ebf575b5050505050905090565b610ee8610c6f610954565b6001600160a01b038116610f43576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091179182905560408051929091168252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f855916020908290030190a150565b600254611009576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b611014610c6f610954565b610c7c611747565b6001546001600160a01b031681565b6000546001600160a01b031690565b60001981565b600254611094576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b61109c6113ab565b6110a4613fc3565b6110ac610954565b6001600160a01b03908116825287811660208084019190915290871660408084019190915260608301879052608083018690528051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060a082015261111d81611785565b50505050505050565b6060848067ffffffffffffffff8111801561114057600080fd5b5060405190808252806020026020018201604052801561116a578160200160208202803683370190505b50915060005b8181101561122a5760006111ec89898481811061118957fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b03168989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117b292505050565b905061120a8161120489670de0b6b3a764000061190c565b9061196c565b84838151811061121657fe5b602090810291909101015250600101611170565b505095945050505050565b611240610c6f610954565b610c746119d3565b6060838067ffffffffffffffff8111801561126257600080fd5b5060405190808252806020026020018201604052801561128c578160200160208202803683370190505b50915060005b8181101561132a5761130b8787838181106112a957fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b031687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a5592505050565b83828151811061131757fe5b6020908102919091010152600101611292565b5050949350505050565b60025490565b611345610c6f610954565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60035460ff1615610c7c576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6000606061141083611bcd565b61141983611c31565b505060c081015160e0909101519091565b5490565b815460009081908310611488576040805162461bcd60e51b815260206004820152601c60248201527f456e756d4d61703a20696e646578206f7574206f6620626f756e647300000000604482015290519081900360640190fd5b600084600001848154811061149957fe5b906000526020600020906002020190508060000154816001015492509250505b9250929050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114f957600080fd5b505afa15801561150d573d6000803e3d6000fd5b505050506040513d602081101561152357600080fd5b50516001600160a01b03828116911614611584576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b50565b61158f611cd4565b6003805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6115c2610954565b604080516001600160a01b039092168252519081900360200190a1565b600081815260018301602052604081205480156116b3578354600019808301919081019060009087908390811061161257fe5b906000526020600020906002020190508087600001848154811061163257fe5b60009182526020808320845460029093020191825560019384015491840191909155835482528983019052604090209084019055865487908061167157fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506116b99350505050565b60009150505b92915050565b6116ca838383611d2b565b6116d38361142a565b15806116f157506007546116f19084906001600160a01b0316611e8f565b611742576040805162461bcd60e51b815260206004820152601860248201527f53616c653a206e6f207265666572656e636520746f6b656e0000000000000000604482015290519081900360640190fd5b505050565b61174f6113ab565b6003805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115c2610954565b61178e81611bcd565b61179781611c31565b6117a081611ea7565b6117a981611f20565b61158481611f6c565b60006001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561185657600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561182757600080fd5b505afa15801561183b573d6000803e3d6000fd5b505050506040513d602081101561185157600080fd5b505194505b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156118f857600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c957600080fd5b505afa1580156118dd573d6000803e3d6000fd5b505050506040513d60208110156118f357600080fd5b505193505b611903858585612451565b95945050505050565b60008261191b575060006116b9565b8282028284828161192857fe5b04146119655760405162461bcd60e51b81526004018080602001828103825260218152602001806140356021913960400191505060405180910390fd5b9392505050565b60008082116119c2576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816119cb57fe5b049392505050565b60025415611a28576040805162461bcd60e51b815260206004820152601260248201527f537461727461626c653a20737461727465640000000000000000000000000000604482015290519081900360640190fd5b426002557f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94176115c2610954565b60006001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611af957600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611aca57600080fd5b505afa158015611ade573d6000803e3d6000fd5b505050506040513d6020811015611af457600080fd5b505193505b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611b9b57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b6c57600080fd5b505afa158015611b80573d6000803e3d6000fd5b505050506040513d6020811015611b9657600080fd5b505192505b600080611ba88686612658565b9092509050611bc38261120483670de0b6b3a764000061190c565b9695505050505050565b611bd681612724565b60408160a00151511015611584576040805162461bcd60e51b815260206004820152601760248201527f53616c653a206d697373696e6720757365722064617461000000000000000000604482015290519081900360640190fd5b606081015160009081526006602052604090208054611c97576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20756e737570706f7274656420534b550000000000000000000000604482015290519081900360640190fd5b600481016000611ca784836129ce565b9050611cb4848383612a3e565b611cce576080840151611cc890829061190c565b60c08501525b50505050565b60035460ff16610c7c576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b60005b8251811015611e11576000838281518110611d4557fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415611db7576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b6000838381518110611dc557fe5b602002602001015190508060001415611df157611deb866001600160a01b0384166115df565b50611e07565b611e05866001600160a01b03841683612b42565b505b5050600101611d2e565b507f0000000000000000000000000000000000000000000000000000000000000000611e3c8461142a565b1115611742576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20746f6f206d616e7920746f6b656e730000000000000000000000604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b60e08101515115801590611edc575060408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b15611f175760a0810151602081015180611ef557506000195b6008546040840151611f14916001600160a01b03918216911683612bd9565b50505b61158481612c59565b60608101516000908152600660205260409020805460001914611f685760808201516001820154611f5091612ef8565b60608301516000908152600660205260409020600101555b5050565b806060015181604001516001600160a01b031682600001516001600160a01b03167f29f844483ca6b10b5c0611d039afc15ce8f6380e905307b381c3a8ee4e90e11e846020015185608001518660a001518760c001518860e001518961010001518a610120015160405160200180848051906020019060200280838360005b83811015612003578181015183820152602001611feb565b50505050905001838051906020019060200280838360005b8381101561203357818101518382015260200161201b565b50505050905001828051906020019060200280838360005b8381101561206357818101518382015260200161204b565b50505050905001935050505060405160208183030381529060405260405180866001600160a01b031681526020018581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156120da5781810151838201526020016120c2565b50505050905090810190601f1680156121075780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561213a578181015183820152602001612122565b50505050905090810190601f1680156121675780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a460608101516000908152600660205260409020600301546001600160a01b03168015611f68576361eceae860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816001600160a01b03166361eceae8846000015185602001518660400151876060015188608001518960a001518a60c001518b60e001518c61010001518d61012001516040518b63ffffffff1660e01b8152600401808b6001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b031681526020018881526020018781526020018060200186815260200180602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156122a0578181015183820152602001612288565b50505050905090810190601f1680156122cd5780820380516001836020036101000a031916815260200191505b508581038452885181528851602091820191808b01910280838360005b838110156123025781810151838201526020016122ea565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015612341578181015183820152602001612329565b50505050905001858103825286818151815260200191508051906020019060200280838360005b83811015612380578181015183820152602001612368565b505050509050019e505050505050505050505050505050602060405180830381600087803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b505050506040513d60208110156123db57600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614611f68576040805162461bcd60e51b815260206004820152601a60248201527f53616c653a206e6f74696669636174696f6e2072656675736564000000000000604482015290519081900360640190fd5b60408051600280825260608201835260009283929190602083019080368337019050509050848160008151811061248457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083816001815181106124b257fe5b6001600160a01b03928316602091820292909201810191909152600854604080517f1f00ca7400000000000000000000000000000000000000000000000000000000815260048101888152602482019283528651604483015286516000969490941694631f00ca74948a948994909260649091019185820191028083838c5b83811015612549578181015183820152602001612531565b50505050905001935050505060006040518083038186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156125aa57600080fd5b81019080805160405193929190846401000000008211156125ca57600080fd5b9083019060208201858111156125df57600080fd5b82518660208202830111640100000000821117156125fc57600080fd5b82525081516020918201928201910280838360005b83811015612629578181015183820152602001612611565b5050505090500160405250505090508060008151811061264557fe5b6020026020010151925050509392505050565b60008060006126678585612f55565b5090506000806126778787613042565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156126af57600080fd5b505afa1580156126c3573d6000803e3d6000fd5b505050506040513d60608110156126d957600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614612713578082612716565b81815b909890975095505050505050565b60208101516001600160a01b0316612783576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f206164647265737320726563697069656e7400000000604482015290519081900360640190fd5b60408101516001600160a01b03166127e2576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b6080810151612838576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f207175616e7469747920707572636861736500000000604482015290519081900360640190fd5b60608101516000908152600660205260409020805461289e576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b8160800151816002015410156128fb576040805162461bcd60e51b815260206004820152601860248201527f53616c653a2061626f7665206d6178207175616e746974790000000000000000604482015290519081900360640190fd5b80546000191461296257816080015181600101541015612962576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e73756666696369656e7420737570706c7900000000000000604482015290519081900360640190fd5b60408201516001600160a01b031661297d6004830182611e8f565b611742576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a206e6f6e2d6578697374656e7420736b7520746f6b656e00000000604482015290519081900360640190fd5b60408201516000906129ea9083906001600160a01b03166131a5565b9050806116b9576040805162461bcd60e51b815260206004820152601f60248201527f53616c653a20756e737570706f72746564207061796d656e7420746f6b656e00604482015290519081900360640190fd5b60006001198214612a5b57612a54848484613235565b9050611965565b600754600090612a759085906001600160a01b03166131a5565b6080860151909150600090612a8b90839061190c565b604087015160075460a0890151929350600092612ab492916001600160a01b03169085906117b2565b90506000612ace8261120485670de0b6b3a764000061190c565b604080516002808252606082018352929350919060208301908036833750505060e089018190528051879190600090612b0357fe5b6020026020010181815250508060001b8860e00151600181518110612b2457fe5b60209081029190910101525060c08701525060019150509392505050565b600082815260018401602052604081205480612ba7575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611965565b82856000016001830381548110612bba57fe5b9060005260206000209060020201600101819055506000915050611965565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261174290849061332d565b60e0810151511580612c8b57506001600019038160e00151600081518110612c7d57fe5b602002602001015160001c14155b15612c9e57612c9981613517565b611584565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612d25578060c00151341015612d20576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b612d4c565b612d4c612d30610954565b60c083015160408401516001600160a01b031691903090613662565b60008160e00151600181518110612d5f57fe5b602002602001015160001c90506000612d91670de0b6b3a76400006112048560c001518561190c90919063ffffffff16565b604084015160075460a0860151929350600092612dba92916001600160a01b03169085906136ea565b60408501519091506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612e3b576000612df23483612ef8565b90508015612e355784516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612e33573d6000803e3d6000fd5b505b50612e74565b60c0840151600090612e4d9083612ef8565b90508015612e725784516040860151612e72916001600160a01b039091169083613897565b505b6007546001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612edb576001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612ed5573d6000803e3d6000fd5b50611cce565b600154600754611cce916001600160a01b03918216911683613897565b600082821115612f4f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080826001600160a01b0316846001600160a01b03161415612fbf576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b031610612fdf578284612fe2565b83835b90925090506001600160a01b0382166114b9576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60008060006130518585612f55565b91509150600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156130a357600080fd5b505afa1580156130b7573d6000803e3d6000fd5b505050506040513d60208110156130cd57600080fd5b5051604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606095861b811660208381019190915294861b81166034830152825160288184030181526048830184528051908601207fff0000000000000000000000000000000000000000000000000000000000000060688401529390951b9094166069850152607d8401919091527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808501919091528151808503909101815260bd909301905281519101209392505050565b600081815260018301602052604081205480613208576040805162461bcd60e51b815260206004820152601860248201527f456e756d4d61703a206e6f6e6578697374656e74206b65790000000000000000604482015290519081900360640190fd5b83600001600182038154811061321a57fe5b90600052602060002090600202016001015491505092915050565b6000600019821461324857506000611965565b6007546000906132629085906001600160a01b03166131a5565b604086015160075460a088015192935060009261328992916001600160a01b031690611a55565b905060006132ba87608001516132b484611204670de0b6b3a76400008861190c90919063ffffffff16565b9061190c565b604080516002808252606082018352929350919060208301908036833750505060e0880181905280518691906000906132ef57fe5b6020026020010181815250508160001b8760e0015160018151811061331057fe5b602090810291909101015260c08701525060019150509392505050565b816133406001600160a01b038216613917565b613391576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106133ce5780518252601f1990920191602091820191016133af565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613430576040519150601f19603f3d011682016040523d82523d6000602084013e613435565b606091505b509150915081156134b4578051156134af5780806020019051602081101561345c57600080fd5b50516134af576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b613510565b8051613507576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561363a578060c00151341015613599576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b60015460c08201516040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156135d7573d6000803e3d6000fd5b5060006135f18260c0015134612ef890919063ffffffff16565b905080156136345781516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613632573d6000803e3d6000fd5b505b50611584565b611584613645610954565b60015460c084015160408501516001600160a01b03908116939216905b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611cce90859061332d565b602081015160408201516000919081613730576001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561372a57349150613730565b60001991505b8061373a57506000195b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156137dc57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137ad57600080fd5b505afa1580156137c1573d6000803e3d6000fd5b505050506040513d60208110156137d757600080fd5b505196505b6001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561387e57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561384f57600080fd5b505afa158015613863573d6000803e3d6000fd5b505050506040513d602081101561387957600080fd5b505195505b61388c87878785308661391d565b979650505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261174290849061332d565b3b151590565b6000856001600160a01b0316876001600160a01b03161415613986576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b60408051600280825260608201835260009260208301908036833701905050905087816000815181106139b557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505086816001815181106139e357fe5b6001600160a01b03928316602091820292909201810191909152600854604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051606094929092169263ad5c464892600480840193829003018186803b158015613a5157600080fd5b505afa158015613a65573d6000803e3d6000fd5b505050506040513d6020811015613a7b57600080fd5b50516001600160a01b038a811691161415613c7657348614613ae4576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056323a20696e76616c6964206d6178416d6f756e74496e0000604482015290519081900360640190fd5b6008546040517ffb3bdb41000000000000000000000000000000000000000000000000000000008152600481018981526001600160a01b03888116604484015260648301889052608060248401908152865160848501528651919094169363fb3bdb419334938d9389938d938d939260a4909101906020808801910280838360005b83811015613b7e578181015183820152602001613b66565b50505050905001955050505050506000604051808303818588803b158015613ba557600080fd5b505af1158015613bb9573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015613be357600080fd5b8101908080516040519392919084640100000000821115613c0357600080fd5b908301906020820185811115613c1857600080fd5b8251866020820283011164010000000082111715613c3557600080fd5b82525081516020918201928201910280838360005b83811015613c62578181015183820152602001613c4a565b505050509050016040525050509050613fa0565b600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cc457600080fd5b505afa158015613cd8573d6000803e3d6000fd5b505050506040513d6020811015613cee57600080fd5b50516001600160a01b0389811691161415613e0a576008546040517f4a25d94a00000000000000000000000000000000000000000000000000000000815260048101898152602482018990526001600160a01b0388811660648401526084830188905260a060448401908152865160a485015286519190941693634a25d94a938c938c9389938d938d939260c4909101906020808801910280838360005b83811015613da4578181015183820152602001613d8c565b505050509050019650505050505050600060405180830381600087803b158015613dcd57600080fd5b505af1158015613de1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613be357600080fd5b6008546040517f8803dbee00000000000000000000000000000000000000000000000000000000815260048101898152602482018990526001600160a01b0388811660648401526084830188905260a060448401908152865160a485015286519190941693638803dbee938c938c9389938d938d939260c4909101906020808801910280838360005b83811015613eab578181015183820152602001613e93565b505050509050019650505050505050600060405180830381600087803b158015613ed457600080fd5b505af1158015613ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613f1157600080fd5b8101908080516040519392919084640100000000821115613f3157600080fd5b908301906020820185811115613f4657600080fd5b8251866020820283011164010000000082111715613f6357600080fd5b82525081516020918201928201910280838360005b83811015613f90578181015183820152602001613f78565b5050505090500160405250505090505b80600081518110613fad57fe5b6020026020010151925050509695505050505050565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016060815260200160008152602001606081526020016060815260200160608152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212203601a32fe0603e2e8da36055101edece7b0b08ecfb08e4ed1475e9aadc690bac64736f6c63430007060033abb92614f53337043b55dc996a83ebb09adce78ec336ca188ea02180b61d1c14",
  "deployedBytecode": "0x6080604052600436106101795760003560e01c80638456cb59116100cb578063a963b2571161007f578063c7b778db11610059578063c7b778db1461083d578063f21f537d1461090c578063f2fde38b14610921576101ef565b8063a963b257146106c0578063bda4c5ab14610755578063be9a655514610828576101ef565b80638da5cb5b116100b05780638da5cb5b146106965780639865bcc8146106ab5780639e049545146106ab576101ef565b80638456cb591461066c5780638488bb4e14610681576101ef565b8063579f2c771161012d5780635e6e9f70116101075780635e6e9f701461049957806361bd3851146105d45780636b8f9c4314610639576101ef565b8063579f2c77146104345780635c4fafc71461045b5780635c975abb14610470576101ef565b80631694505e1161015e5780631694505e146103225780632a8a45bc146103375780633f4ba83a1461041f576101ef565b80631265b651146101f45780631323b06614610225576101ef565b366101ef576008546001600160a01b0316610192610954565b6001600160a01b0316146101ed576040805162461bcd60e51b815260206004820152601860248201527f53616c653a20496e76616c6964204554482073656e6465720000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561020057600080fd5b50610209610958565b604080516001600160a01b039092168252519081900360200190f35b34801561023157600080fd5b506102c7600480360360a081101561024857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561028857600080fd5b82018360208201111561029a57600080fd5b803590602001918460018302840111640100000000831117156102bc57600080fd5b509092509050610967565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561030d5781810151838201526020016102f5565b50505050905001935050505060405180910390f35b34801561032e57600080fd5b50610209610a5c565b34801561034357600080fd5b506103616004803603602081101561035a57600080fd5b5035610a6b565b60405180878152602001868152602001858152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156103c65781810151838201526020016103ae565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156104055781810151838201526020016103ed565b505050509050019850505050505050505060405180910390f35b34801561042b57600080fd5b506101ed610c10565b34801561044057600080fd5b50610449610c7e565b60408051918252519081900360200190f35b34801561046757600080fd5b50610209610c84565b34801561047c57600080fd5b50610485610c9c565b604080519115158252519081900360200190f35b3480156104a557600080fd5b506101ed600480360360608110156104bc57600080fd5b813591908101906040810160208201356401000000008111156104de57600080fd5b8201836020820111156104f057600080fd5b8035906020019184602083028401116401000000008311171561051257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561056257600080fd5b82018360208201111561057457600080fd5b8035906020019184602083028401116401000000008311171561059657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ca5945050505050565b3480156105e057600080fd5b506105e9610e82565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561062557818101518382015260200161060d565b505050509050019250505060405180910390f35b34801561064557600080fd5b506101ed6004803603602081101561065c57600080fd5b50356001600160a01b0316610edd565b34801561067857600080fd5b506101ed610fb5565b34801561068d57600080fd5b5061020961101c565b3480156106a257600080fd5b5061020961102b565b3480156106b757600080fd5b5061044961103a565b6101ed600480360360a08110156106d657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561071657600080fd5b82018360208201111561072857600080fd5b8035906020019184600183028401116401000000008311171561074a57600080fd5b509092509050611040565b34801561076157600080fd5b506105e96004803603606081101561077857600080fd5b81019060208101813564010000000081111561079357600080fd5b8201836020820111156107a557600080fd5b803590602001918460208302840111640100000000831117156107c757600080fd5b919390928235926040810190602001356401000000008111156107e957600080fd5b8201836020820111156107fb57600080fd5b8035906020019184600183028401116401000000008311171561081d57600080fd5b509092509050611126565b34801561083457600080fd5b506101ed611235565b34801561084957600080fd5b506105e96004803603604081101561086057600080fd5b81019060208101813564010000000081111561087b57600080fd5b82018360208201111561088d57600080fd5b803590602001918460208302840111640100000000831117156108af57600080fd5b9193909290916020810190356401000000008111156108cd57600080fd5b8201836020820111156108df57600080fd5b8035906020019184600183028401116401000000008311171561090157600080fd5b509092509050611248565b34801561091857600080fd5b50610449611334565b34801561092d57600080fd5b506101ed6004803603602081101561094457600080fd5b50356001600160a01b031661133a565b3390565b6007546001600160a01b031681565b60006060600254600014156109c3576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b6109cb6113ab565b6109d3613fc3565b6109db610954565b6001600160a01b03908116825289811660208084019190915290891660408084019190915260608301899052608083018890528051601f870183900483028101830190915285815290869086908190840183828082843760009201919091525050505060a0820152610a4c81611403565b9250925050965096945050505050565b6008546001600160a01b031681565b6000818152600660205260408120819081908190606090819083610a916004830161142a565b82549850905087610ae9576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b60018201546002830154600384015491985096506001600160a01b031694508067ffffffffffffffff81118015610b1f57600080fd5b50604051908082528060200260200182016040528015610b49578160200160208202803683370190505b5093508067ffffffffffffffff81118015610b6357600080fd5b50604051908082528060200260200182016040528015610b8d578160200160208202803683370190505b50925060005b81811015610c0457600080610bab600486018461142e565b915091508160001c878481518110610bbf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508060001c868481518110610bef57fe5b60209081029190910101525050600101610b93565b50505091939550919395565b600254610c64576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b610c74610c6f610954565b6114c0565b610c7c611587565b565b60011981565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b60035460ff1681565b610cb0610c6f610954565b815181518114610d07576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e636f6e73697374656e742061727261797300000000000000604482015290519081900360640190fd5b60008481526006602052604090208054610d68576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b6004810182610db3576000610d7c8261142a565b905060005b81811015610dac576000610d95848261142e565b509050610da284826115df565b5050600101610d81565b5050610dbe565b610dbe8186866116bf565b857fcb3fe5489e0cd43d0f4a33d1e09a4a0463a03d0d38f56165530854e5540db1438686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610e26578181015183820152602001610e0e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e65578181015183820152602001610e4d565b5050505090500194505050505060405180910390a2505050505050565b60606004600001805480602002602001604051908101604052809291908181526020018280548015610ed357602002820191906000526020600020905b815481526020019060010190808311610ebf575b5050505050905090565b610ee8610c6f610954565b6001600160a01b038116610f43576040805162461bcd60e51b815260206004820152601460248201527f5061796f75743a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091179182905560408051929091168252517fdd880d24a789958a6398c99c2e54ce31bc10a638cbc42f7dd34285479ae0f855916020908290030190a150565b600254611009576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b611014610c6f610954565b610c7c611747565b6001546001600160a01b031681565b6000546001600160a01b031690565b60001981565b600254611094576040805162461bcd60e51b815260206004820152601660248201527f537461727461626c653a206e6f74207374617274656400000000000000000000604482015290519081900360640190fd5b61109c6113ab565b6110a4613fc3565b6110ac610954565b6001600160a01b03908116825287811660208084019190915290871660408084019190915260608301879052608083018690528051601f850183900483028101830190915283815290849084908190840183828082843760009201919091525050505060a082015261111d81611785565b50505050505050565b6060848067ffffffffffffffff8111801561114057600080fd5b5060405190808252806020026020018201604052801561116a578160200160208202803683370190505b50915060005b8181101561122a5760006111ec89898481811061118957fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b03168989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117b292505050565b905061120a8161120489670de0b6b3a764000061190c565b9061196c565b84838151811061121657fe5b602090810291909101015250600101611170565b505095945050505050565b611240610c6f610954565b610c746119d3565b6060838067ffffffffffffffff8111801561126257600080fd5b5060405190808252806020026020018201604052801561128c578160200160208202803683370190505b50915060005b8181101561132a5761130b8787838181106112a957fe5b905060200201356001600160a01b0316600760009054906101000a90046001600160a01b031687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a5592505050565b83828151811061131757fe5b6020908102919091010152600101611292565b5050949350505050565b60025490565b611345610c6f610954565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60035460ff1615610c7c576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6000606061141083611bcd565b61141983611c31565b505060c081015160e0909101519091565b5490565b815460009081908310611488576040805162461bcd60e51b815260206004820152601c60248201527f456e756d4d61703a20696e646578206f7574206f6620626f756e647300000000604482015290519081900360640190fd5b600084600001848154811061149957fe5b906000526020600020906002020190508060000154816001015492509250505b9250929050565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114f957600080fd5b505afa15801561150d573d6000803e3d6000fd5b505050506040513d602081101561152357600080fd5b50516001600160a01b03828116911614611584576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b50565b61158f611cd4565b6003805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6115c2610954565b604080516001600160a01b039092168252519081900360200190a1565b600081815260018301602052604081205480156116b3578354600019808301919081019060009087908390811061161257fe5b906000526020600020906002020190508087600001848154811061163257fe5b60009182526020808320845460029093020191825560019384015491840191909155835482528983019052604090209084019055865487908061167157fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506116b99350505050565b60009150505b92915050565b6116ca838383611d2b565b6116d38361142a565b15806116f157506007546116f19084906001600160a01b0316611e8f565b611742576040805162461bcd60e51b815260206004820152601860248201527f53616c653a206e6f207265666572656e636520746f6b656e0000000000000000604482015290519081900360640190fd5b505050565b61174f6113ab565b6003805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115c2610954565b61178e81611bcd565b61179781611c31565b6117a081611ea7565b6117a981611f20565b61158481611f6c565b60006001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561185657600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561182757600080fd5b505afa15801561183b573d6000803e3d6000fd5b505050506040513d602081101561185157600080fd5b505194505b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156118f857600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c957600080fd5b505afa1580156118dd573d6000803e3d6000fd5b505050506040513d60208110156118f357600080fd5b505193505b611903858585612451565b95945050505050565b60008261191b575060006116b9565b8282028284828161192857fe5b04146119655760405162461bcd60e51b81526004018080602001828103825260218152602001806140356021913960400191505060405180910390fd5b9392505050565b60008082116119c2576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816119cb57fe5b049392505050565b60025415611a28576040805162461bcd60e51b815260206004820152601260248201527f537461727461626c653a20737461727465640000000000000000000000000000604482015290519081900360640190fd5b426002557f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94176115c2610954565b60006001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611af957600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611aca57600080fd5b505afa158015611ade573d6000803e3d6000fd5b505050506040513d6020811015611af457600080fd5b505193505b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611b9b57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b6c57600080fd5b505afa158015611b80573d6000803e3d6000fd5b505050506040513d6020811015611b9657600080fd5b505192505b600080611ba88686612658565b9092509050611bc38261120483670de0b6b3a764000061190c565b9695505050505050565b611bd681612724565b60408160a00151511015611584576040805162461bcd60e51b815260206004820152601760248201527f53616c653a206d697373696e6720757365722064617461000000000000000000604482015290519081900360640190fd5b606081015160009081526006602052604090208054611c97576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20756e737570706f7274656420534b550000000000000000000000604482015290519081900360640190fd5b600481016000611ca784836129ce565b9050611cb4848383612a3e565b611cce576080840151611cc890829061190c565b60c08501525b50505050565b60035460ff16610c7c576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b60005b8251811015611e11576000838281518110611d4557fe5b6020026020010151905060006001600160a01b0316816001600160a01b03161415611db7576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b6000838381518110611dc557fe5b602002602001015190508060001415611df157611deb866001600160a01b0384166115df565b50611e07565b611e05866001600160a01b03841683612b42565b505b5050600101611d2e565b507f0000000000000000000000000000000000000000000000000000000000000000611e3c8461142a565b1115611742576040805162461bcd60e51b815260206004820152601560248201527f53616c653a20746f6f206d616e7920746f6b656e730000000000000000000000604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b60e08101515115801590611edc575060408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b15611f175760a0810151602081015180611ef557506000195b6008546040840151611f14916001600160a01b03918216911683612bd9565b50505b61158481612c59565b60608101516000908152600660205260409020805460001914611f685760808201516001820154611f5091612ef8565b60608301516000908152600660205260409020600101555b5050565b806060015181604001516001600160a01b031682600001516001600160a01b03167f29f844483ca6b10b5c0611d039afc15ce8f6380e905307b381c3a8ee4e90e11e846020015185608001518660a001518760c001518860e001518961010001518a610120015160405160200180848051906020019060200280838360005b83811015612003578181015183820152602001611feb565b50505050905001838051906020019060200280838360005b8381101561203357818101518382015260200161201b565b50505050905001828051906020019060200280838360005b8381101561206357818101518382015260200161204b565b50505050905001935050505060405160208183030381529060405260405180866001600160a01b031681526020018581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156120da5781810151838201526020016120c2565b50505050905090810190601f1680156121075780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561213a578181015183820152602001612122565b50505050905090810190601f1680156121675780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a460608101516000908152600660205260409020600301546001600160a01b03168015611f68576361eceae860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816001600160a01b03166361eceae8846000015185602001518660400151876060015188608001518960a001518a60c001518b60e001518c61010001518d61012001516040518b63ffffffff1660e01b8152600401808b6001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b031681526020018881526020018781526020018060200186815260200180602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156122a0578181015183820152602001612288565b50505050905090810190601f1680156122cd5780820380516001836020036101000a031916815260200191505b508581038452885181528851602091820191808b01910280838360005b838110156123025781810151838201526020016122ea565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015612341578181015183820152602001612329565b50505050905001858103825286818151815260200191508051906020019060200280838360005b83811015612380578181015183820152602001612368565b505050509050019e505050505050505050505050505050602060405180830381600087803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b505050506040513d60208110156123db57600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614611f68576040805162461bcd60e51b815260206004820152601a60248201527f53616c653a206e6f74696669636174696f6e2072656675736564000000000000604482015290519081900360640190fd5b60408051600280825260608201835260009283929190602083019080368337019050509050848160008151811061248457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083816001815181106124b257fe5b6001600160a01b03928316602091820292909201810191909152600854604080517f1f00ca7400000000000000000000000000000000000000000000000000000000815260048101888152602482019283528651604483015286516000969490941694631f00ca74948a948994909260649091019185820191028083838c5b83811015612549578181015183820152602001612531565b50505050905001935050505060006040518083038186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156125aa57600080fd5b81019080805160405193929190846401000000008211156125ca57600080fd5b9083019060208201858111156125df57600080fd5b82518660208202830111640100000000821117156125fc57600080fd5b82525081516020918201928201910280838360005b83811015612629578181015183820152602001612611565b5050505090500160405250505090508060008151811061264557fe5b6020026020010151925050509392505050565b60008060006126678585612f55565b5090506000806126778787613042565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156126af57600080fd5b505afa1580156126c3573d6000803e3d6000fd5b505050506040513d60608110156126d957600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614612713578082612716565b81815b909890975095505050505050565b60208101516001600160a01b0316612783576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f206164647265737320726563697069656e7400000000604482015290519081900360640190fd5b60408101516001600160a01b03166127e2576040805162461bcd60e51b815260206004820152601860248201527f53616c653a207a65726f206164647265737320746f6b656e0000000000000000604482015290519081900360640190fd5b6080810151612838576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a207a65726f207175616e7469747920707572636861736500000000604482015290519081900360640190fd5b60608101516000908152600660205260409020805461289e576040805162461bcd60e51b815260206004820152601660248201527f53616c653a206e6f6e2d6578697374656e7420736b7500000000000000000000604482015290519081900360640190fd5b8160800151816002015410156128fb576040805162461bcd60e51b815260206004820152601860248201527f53616c653a2061626f7665206d6178207175616e746974790000000000000000604482015290519081900360640190fd5b80546000191461296257816080015181600101541015612962576040805162461bcd60e51b815260206004820152601960248201527f53616c653a20696e73756666696369656e7420737570706c7900000000000000604482015290519081900360640190fd5b60408201516001600160a01b031661297d6004830182611e8f565b611742576040805162461bcd60e51b815260206004820152601c60248201527f53616c653a206e6f6e2d6578697374656e7420736b7520746f6b656e00000000604482015290519081900360640190fd5b60408201516000906129ea9083906001600160a01b03166131a5565b9050806116b9576040805162461bcd60e51b815260206004820152601f60248201527f53616c653a20756e737570706f72746564207061796d656e7420746f6b656e00604482015290519081900360640190fd5b60006001198214612a5b57612a54848484613235565b9050611965565b600754600090612a759085906001600160a01b03166131a5565b6080860151909150600090612a8b90839061190c565b604087015160075460a0890151929350600092612ab492916001600160a01b03169085906117b2565b90506000612ace8261120485670de0b6b3a764000061190c565b604080516002808252606082018352929350919060208301908036833750505060e089018190528051879190600090612b0357fe5b6020026020010181815250508060001b8860e00151600181518110612b2457fe5b60209081029190910101525060c08701525060019150509392505050565b600082815260018401602052604081205480612ba7575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611965565b82856000016001830381548110612bba57fe5b9060005260206000209060020201600101819055506000915050611965565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261174290849061332d565b60e0810151511580612c8b57506001600019038160e00151600081518110612c7d57fe5b602002602001015160001c14155b15612c9e57612c9981613517565b611584565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612d25578060c00151341015612d20576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b612d4c565b612d4c612d30610954565b60c083015160408401516001600160a01b031691903090613662565b60008160e00151600181518110612d5f57fe5b602002602001015160001c90506000612d91670de0b6b3a76400006112048560c001518561190c90919063ffffffff16565b604084015160075460a0860151929350600092612dba92916001600160a01b03169085906136ea565b60408501519091506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612e3b576000612df23483612ef8565b90508015612e355784516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612e33573d6000803e3d6000fd5b505b50612e74565b60c0840151600090612e4d9083612ef8565b90508015612e725784516040860151612e72916001600160a01b039091169083613897565b505b6007546001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612edb576001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612ed5573d6000803e3d6000fd5b50611cce565b600154600754611cce916001600160a01b03918216911683613897565b600082821115612f4f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080826001600160a01b0316846001600160a01b03161415612fbf576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b031610612fdf578284612fe2565b83835b90925090506001600160a01b0382166114b9576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60008060006130518585612f55565b91509150600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156130a357600080fd5b505afa1580156130b7573d6000803e3d6000fd5b505050506040513d60208110156130cd57600080fd5b5051604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606095861b811660208381019190915294861b81166034830152825160288184030181526048830184528051908601207fff0000000000000000000000000000000000000000000000000000000000000060688401529390951b9094166069850152607d8401919091527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808501919091528151808503909101815260bd909301905281519101209392505050565b600081815260018301602052604081205480613208576040805162461bcd60e51b815260206004820152601860248201527f456e756d4d61703a206e6f6e6578697374656e74206b65790000000000000000604482015290519081900360640190fd5b83600001600182038154811061321a57fe5b90600052602060002090600202016001015491505092915050565b6000600019821461324857506000611965565b6007546000906132629085906001600160a01b03166131a5565b604086015160075460a088015192935060009261328992916001600160a01b031690611a55565b905060006132ba87608001516132b484611204670de0b6b3a76400008861190c90919063ffffffff16565b9061190c565b604080516002808252606082018352929350919060208301908036833750505060e0880181905280518691906000906132ef57fe5b6020026020010181815250508160001b8760e0015160018151811061331057fe5b602090810291909101015260c08701525060019150509392505050565b816133406001600160a01b038216613917565b613391576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106133ce5780518252601f1990920191602091820191016133af565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613430576040519150601f19603f3d011682016040523d82523d6000602084013e613435565b606091505b509150915081156134b4578051156134af5780806020019051602081101561345c57600080fd5b50516134af576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b613510565b8051613507576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b60408101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561363a578060c00151341015613599576040805162461bcd60e51b815260206004820152601660248201527f53616c653a20696e73756666696369656e742045544800000000000000000000604482015290519081900360640190fd5b60015460c08201516040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156135d7573d6000803e3d6000fd5b5060006135f18260c0015134612ef890919063ffffffff16565b905080156136345781516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613632573d6000803e3d6000fd5b505b50611584565b611584613645610954565b60015460c084015160408501516001600160a01b03908116939216905b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611cce90859061332d565b602081015160408201516000919081613730576001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561372a57349150613730565b60001991505b8061373a57506000195b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156137dc57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137ad57600080fd5b505afa1580156137c1573d6000803e3d6000fd5b505050506040513d60208110156137d757600080fd5b505196505b6001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561387e57600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561384f57600080fd5b505afa158015613863573d6000803e3d6000fd5b505050506040513d602081101561387957600080fd5b505195505b61388c87878785308661391d565b979650505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261174290849061332d565b3b151590565b6000856001600160a01b0316876001600160a01b03161415613986576040805162461bcd60e51b815260206004820152601960248201527f556e697377617056323a2073616d652061646472657373657300000000000000604482015290519081900360640190fd5b60408051600280825260608201835260009260208301908036833701905050905087816000815181106139b557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505086816001815181106139e357fe5b6001600160a01b03928316602091820292909201810191909152600854604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051606094929092169263ad5c464892600480840193829003018186803b158015613a5157600080fd5b505afa158015613a65573d6000803e3d6000fd5b505050506040513d6020811015613a7b57600080fd5b50516001600160a01b038a811691161415613c7657348614613ae4576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056323a20696e76616c6964206d6178416d6f756e74496e0000604482015290519081900360640190fd5b6008546040517ffb3bdb41000000000000000000000000000000000000000000000000000000008152600481018981526001600160a01b03888116604484015260648301889052608060248401908152865160848501528651919094169363fb3bdb419334938d9389938d938d939260a4909101906020808801910280838360005b83811015613b7e578181015183820152602001613b66565b50505050905001955050505050506000604051808303818588803b158015613ba557600080fd5b505af1158015613bb9573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015613be357600080fd5b8101908080516040519392919084640100000000821115613c0357600080fd5b908301906020820185811115613c1857600080fd5b8251866020820283011164010000000082111715613c3557600080fd5b82525081516020918201928201910280838360005b83811015613c62578181015183820152602001613c4a565b505050509050016040525050509050613fa0565b600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cc457600080fd5b505afa158015613cd8573d6000803e3d6000fd5b505050506040513d6020811015613cee57600080fd5b50516001600160a01b0389811691161415613e0a576008546040517f4a25d94a00000000000000000000000000000000000000000000000000000000815260048101898152602482018990526001600160a01b0388811660648401526084830188905260a060448401908152865160a485015286519190941693634a25d94a938c938c9389938d938d939260c4909101906020808801910280838360005b83811015613da4578181015183820152602001613d8c565b505050509050019650505050505050600060405180830381600087803b158015613dcd57600080fd5b505af1158015613de1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613be357600080fd5b6008546040517f8803dbee00000000000000000000000000000000000000000000000000000000815260048101898152602482018990526001600160a01b0388811660648401526084830188905260a060448401908152865160a485015286519190941693638803dbee938c938c9389938d938d939260c4909101906020808801910280838360005b83811015613eab578181015183820152602001613e93565b505050509050019650505050505050600060405180830381600087803b158015613ed457600080fd5b505af1158015613ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613f1157600080fd5b8101908080516040519392919084640100000000821115613f3157600080fd5b908301906020820185811115613f4657600080fd5b8251866020820283011164010000000082111715613f6357600080fd5b82525081516020918201928201910280838360005b83811015613f90578181015183820152602001613f78565b5050505090500160405250505090505b80600081518110613fad57fe5b6020026020010151925050509695505050505050565b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016060815260200160008152602001606081526020016060815260200160608152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212203601a32fe0603e2e8da36055101edece7b0b08ecfb08e4ed1475e9aadc690bac64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}