{
  "_format": "hh-sol-artifact-1",
  "contractName": "ComplexRewarder",
  "sourceName": "contracts/mocks/ComplexRewarder.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_rewardToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenPerBlock",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_GOLDMINER_V2",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "LogInit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "LogOnReward",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        }
      ],
      "name": "LogPoolAddition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        }
      ],
      "name": "LogSetPool",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "lastRewardBlock",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accGoldNuggetPerShare",
          "type": "uint256"
        }
      ],
      "name": "LogUpdatePool",
      "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"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        }
      ],
      "name": "add",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "pids",
          "type": "uint256[]"
        }
      ],
      "name": "massUpdatePools",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lpToken",
          "type": "uint256"
        }
      ],
      "name": "onGoldNuggetReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "pendingToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pending",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "pendingTokens",
      "outputs": [
        {
          "internalType": "contract IERC20[]",
          "name": "rewardTokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "rewardAmounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "poolIds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "poolInfo",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "accGoldNuggetPerShare",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "lastRewardBlock",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "allocPoint",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pools",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_allocPoint",
          "type": "uint256"
        }
      ],
      "name": "set",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenPerBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "direct",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "renounce",
          "type": "bool"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        }
      ],
      "name": "updatePool",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "accGoldNuggetPerShare",
              "type": "uint128"
            },
            {
              "internalType": "uint64",
              "name": "lastRewardBlock",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "allocPoint",
              "type": "uint64"
            }
          ],
          "internalType": "struct ComplexRewarder.PoolInfo",
          "name": "pool",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rewardDebt",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b50604051620018c8380380620018c8833981016040819052620000349162000099565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606093841b811660805260069290925590911b1660a052620000f9565b600080600060608486031215620000ae578283fd5b8351620000bb81620000e0565b602085015160408601519194509250620000d581620000e0565b809150509250925092565b6001600160a01b0381168114620000f657600080fd5b50565b60805160601c60a05160601c61178c6200013c600039806104fb5280610590528061082a52806108bf5280610cd7525080610d885280610e5d525061178c6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806357a5b58c1161009757806393f1a40b1161006657806393f1a40b146101fe578063a3d833201461021f578063d63b3c4914610232578063e30c39781461025357610100565b806357a5b58c146101b057806369883b4e146101c3578063771602f7146101d65780638da5cb5b146101e957610100565b80634198709a116100d35780634198709a1461016d57806348e43af4146101755780634e71e0c81461018857806351eb05a61461019057610100565b8063078dfbe714610105578063081e3eda1461011a5780631526fe27146101385780631ab06ee51461015a575b600080fd5b610118610113366004611119565b61025b565b005b61012261034a565b60405161012f91906116ef565b60405180910390f35b61014b610146366004611210565b610350565b60405161012f939291906116c5565b6101186101683660046112f7565b610387565b610122610466565b610122610183366004611240565b61046c565b6101186106fa565b6101a361019e366004611210565b610787565b60405161012f919061168c565b6101186101be366004611163565b610aaf565b6101226101d1366004611210565b610ae5565b6101186101e43660046112f7565b610b03565b6101f1610c99565b60405161012f9190611359565b61021161020c366004611240565b610ca8565b60405161012f9291906116f8565b61011861022d36600461126f565b610ccc565b6102456102403660046112c0565b610e35565b60405161012f929190611386565b6101f1610ef4565b6000546001600160a01b0316331461028e5760405162461bcd60e51b8152600401610285906115b4565b60405180910390fd5b8115610329576001600160a01b0383161515806102a85750805b6102c45760405162461bcd60e51b8152600401610285906114ea565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610345565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103b15760405162461bcd60e51b8152600401610285906115b4565b6000828152600260205260409020546005546103e89183916103e291600160c01b90046001600160401b0316610f03565b90610f2c565b6005556103f481610f4f565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c9061045a9084906116ef565b60405180910390a25050565b60065481565b60006104766110f9565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610530918b91016116ef565b60206040518083038186803b15801561054857600080fd5b505afa15801561055c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058091906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105cb9190611359565b60206040518083038186803b1580156105e357600080fd5b505afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190611228565b905083602001516001600160401b03164311801561063857508015155b156106c457600061065f85602001516001600160401b031643610f0390919063ffffffff16565b9050600060055461069287604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b90610f7c565b8161069957fe5b0490506106bf836106af8364e8d4a51000610f7c565b816106b657fe5b86919004610f2c565b935050505b600183015483546106ef919064e8d4a51000906106e19086610f7c565b816106e857fe5b0490610f03565b979650505050505050565b6001546001600160a01b03163381146107255760405162461bcd60e51b8152600401610285906115e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61078f6110f9565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b90910416928101929092526107fb5760405162461bcd60e51b815260040161028590611519565b80602001516001600160401b0316431115610aaa576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061085f9086906004016116ef565b60206040518083038186803b15801561087757600080fd5b505afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108fa9190611359565b60206040518083038186803b15801561091257600080fd5b505afa158015610926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094a9190611228565b905080156109ed57600061097483602001516001600160401b031643610f0390919063ffffffff16565b905060006005546109a185604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b816109a857fe5b0490506109df6109ce846109c18464e8d4a51000610f7c565b816109c857fe5b04610fb3565b85516001600160801b031690610fdc565b6001600160801b0316845250505b6109f643610f4f565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610aa09290918691611706565b60405180910390a2505b919050565b8060005b81811015610adf57610ad6848483818110610aca57fe5b90506020020135610787565b50600101610ab3565b50505050565b60038181548110610af257fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610285906115b4565b600081815260026020526040902054600160801b90046001600160401b031615610b695760405162461bcd60e51b815260040161028590611445565b6005544390610b789084610f2c565b60055560408051606081019091526000815260208101610b9783610f4f565b6001600160401b03168152602001610bae85610f4f565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610c8c9086906116ef565b60405180910390a2505050565b6000546001600160a01b031681565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d145760405162461bcd60e51b8152600401610285906114a9565b610d1c6110f9565b610d2586610787565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610daf57600182015483518354610d79929164e8d4a51000916106e1916001600160801b0316610f7c565b9050610daf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016878361100b565b838255825164e8d4a5100090610dcf9086906001600160801b0316610f7c565b81610dd657fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e2391906116ef565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e8957fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610ed0878761046c565b81600081518110610edd57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f265760405162461bcd60e51b815260040161028590611416565b92915050565b81810181811015610f265760405162461bcd60e51b81526004016102859061157d565b60006001600160401b03821115610f785760405162461bcd60e51b81526004016102859061161e565b5090565b6000811580610f9757505080820282828281610f9457fe5b04145b610f265760405162461bcd60e51b815260040161028590611655565b60006001600160801b03821115610f785760405162461bcd60e51b815260040161028590611546565b8181016001600160801b038083169082161015610f265760405162461bcd60e51b81526004016102859061157d565b60006060846001600160a01b031663a9059cbb858560405160240161103192919061136d565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161106a9190611320565b6000604051808303816000865af19150503d80600081146110a7576040519150601f19603f3d011682016040523d82523d6000602084013e6110ac565b606091505b50915091508180156110d65750805115806110d65750808060200190518101906110d691906111d1565b6110f25760405162461bcd60e51b815260040161028590611472565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561112d578283fd5b833561113881611730565b9250602084013561114881611748565b9150604084013561115881611748565b809150509250925092565b60008060208385031215611175578182fd5b82356001600160401b038082111561118b578384fd5b818501915085601f83011261119e578384fd5b8135818111156111ac578485fd5b86602080830285010111156111bf578485fd5b60209290920196919550909350505050565b6000602082840312156111e2578081fd5b81516111ed81611748565b9392505050565b600060208284031215611205578081fd5b81516111ed81611730565b600060208284031215611221578081fd5b5035919050565b600060208284031215611239578081fd5b5051919050565b60008060408385031215611252578182fd5b82359150602083013561126481611730565b809150509250929050565b600080600080600060a08688031215611286578081fd5b85359450602086013561129881611730565b935060408601356112a881611730565b94979396509394606081013594506080013592915050565b6000806000606084860312156112d4578283fd5b8335925060208401356112e681611730565b929592945050506040919091013590565b60008060408385031215611309578182fd5b50508035926020909101359150565b815260200190565b60008251815b818110156113405760208186018101518583015201611326565b8181111561134e5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156113c85781516001600160a01b0316845292840192908401906001016113a3565b505050838103828501528085516113df81846116ef565b91508387019250845b81811015611409576113fb838551611318565b9385019392506001016113e8565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b602080825260139082015272141bdbdb08191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461174557600080fd5b50565b801515811461174557600080fdfea264697066735822122057ca8dc35f2338beb2fd9e9f6ed998d11a2e0cbe90bc43d4389cdc8386f338fa64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c806357a5b58c1161009757806393f1a40b1161006657806393f1a40b146101fe578063a3d833201461021f578063d63b3c4914610232578063e30c39781461025357610100565b806357a5b58c146101b057806369883b4e146101c3578063771602f7146101d65780638da5cb5b146101e957610100565b80634198709a116100d35780634198709a1461016d57806348e43af4146101755780634e71e0c81461018857806351eb05a61461019057610100565b8063078dfbe714610105578063081e3eda1461011a5780631526fe27146101385780631ab06ee51461015a575b600080fd5b610118610113366004611119565b61025b565b005b61012261034a565b60405161012f91906116ef565b60405180910390f35b61014b610146366004611210565b610350565b60405161012f939291906116c5565b6101186101683660046112f7565b610387565b610122610466565b610122610183366004611240565b61046c565b6101186106fa565b6101a361019e366004611210565b610787565b60405161012f919061168c565b6101186101be366004611163565b610aaf565b6101226101d1366004611210565b610ae5565b6101186101e43660046112f7565b610b03565b6101f1610c99565b60405161012f9190611359565b61021161020c366004611240565b610ca8565b60405161012f9291906116f8565b61011861022d36600461126f565b610ccc565b6102456102403660046112c0565b610e35565b60405161012f929190611386565b6101f1610ef4565b6000546001600160a01b0316331461028e5760405162461bcd60e51b8152600401610285906115b4565b60405180910390fd5b8115610329576001600160a01b0383161515806102a85750805b6102c45760405162461bcd60e51b8152600401610285906114ea565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610345565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b6002602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b6000546001600160a01b031633146103b15760405162461bcd60e51b8152600401610285906115b4565b6000828152600260205260409020546005546103e89183916103e291600160c01b90046001600160401b0316610f03565b90610f2c565b6005556103f481610f4f565b6000838152600260205260409081902080546001600160401b0393909316600160c01b026001600160c01b03909316929092179091555182907f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c9061045a9084906116ef565b60405180910390a25050565b60065481565b60006104766110f9565b506000838152600260209081526040808320815160608101835290546001600160801b0380821683526001600160401b03600160801b8304811684870152600160c01b9092049091168284015287855260048085528386206001600160a01b03808a1688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610530918b91016116ef565b60206040518083038186803b15801561054857600080fd5b505afa15801561055c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058091906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105cb9190611359565b60206040518083038186803b1580156105e357600080fd5b505afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190611228565b905083602001516001600160401b03164311801561063857508015155b156106c457600061065f85602001516001600160401b031643610f0390919063ffffffff16565b9050600060055461069287604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b90610f7c565b8161069957fe5b0490506106bf836106af8364e8d4a51000610f7c565b816106b657fe5b86919004610f2c565b935050505b600183015483546106ef919064e8d4a51000906106e19086610f7c565b816106e857fe5b0490610f03565b979650505050505050565b6001546001600160a01b03163381146107255760405162461bcd60e51b8152600401610285906115e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61078f6110f9565b50600081815260026020908152604091829020825160608101845290546001600160801b03811682526001600160401b03600160801b82048116938301849052600160c01b90910416928101929092526107fb5760405162461bcd60e51b815260040161028590611519565b80602001516001600160401b0316431115610aaa576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f9061085f9086906004016116ef565b60206040518083038186803b15801561087757600080fd5b505afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906111f4565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108fa9190611359565b60206040518083038186803b15801561091257600080fd5b505afa158015610926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094a9190611228565b905080156109ed57600061097483602001516001600160401b031643610f0390919063ffffffff16565b905060006005546109a185604001516001600160401b031661068c60065486610f7c90919063ffffffff16565b816109a857fe5b0490506109df6109ce846109c18464e8d4a51000610f7c565b816109c857fe5b04610fb3565b85516001600160801b031690610fdc565b6001600160801b0316845250505b6109f643610f4f565b6001600160401b03908116602084810191825260008681526002909152604090819020855181549351838801516001600160801b03199095166001600160801b0383161767ffffffffffffffff60801b1916600160801b82881602176001600160c01b0316600160c01b95909616949094029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610aa09290918691611706565b60405180910390a2505b919050565b8060005b81811015610adf57610ad6848483818110610aca57fe5b90506020020135610787565b50600101610ab3565b50505050565b60038181548110610af257fe5b600091825260209091200154905081565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610285906115b4565b600081815260026020526040902054600160801b90046001600160401b031615610b695760405162461bcd60e51b815260040161028590611445565b6005544390610b789084610f2c565b60055560408051606081019091526000815260208101610b9783610f4f565b6001600160401b03168152602001610bae85610f4f565b6001600160401b0390811690915260008481526002602090815260408083208551815493870151968301518616600160c01b026001600160c01b0397909616600160801b0267ffffffffffffffff60801b196001600160801b039092166001600160801b031990951694909417169290921794909416929092179091556003805460018101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018390555182907f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c8190610c8c9086906116ef565b60405180910390a2505050565b6000546001600160a01b031681565b60046020908152600092835260408084209091529082529020805460019091015482565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d145760405162461bcd60e51b8152600401610285906114a9565b610d1c6110f9565b610d2586610787565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610daf57600182015483518354610d79929164e8d4a51000916106e1916001600160801b0316610f7c565b9050610daf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016878361100b565b838255825164e8d4a5100090610dcf9086906001600160801b0316610f7c565b81610dd657fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b84604051610e2391906116ef565b60405180910390a45050505050505050565b60408051600180825281830190925260609182918291602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e8957fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050610ed0878761046c565b81600081518110610edd57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b80820382811115610f265760405162461bcd60e51b815260040161028590611416565b92915050565b81810181811015610f265760405162461bcd60e51b81526004016102859061157d565b60006001600160401b03821115610f785760405162461bcd60e51b81526004016102859061161e565b5090565b6000811580610f9757505080820282828281610f9457fe5b04145b610f265760405162461bcd60e51b815260040161028590611655565b60006001600160801b03821115610f785760405162461bcd60e51b815260040161028590611546565b8181016001600160801b038083169082161015610f265760405162461bcd60e51b81526004016102859061157d565b60006060846001600160a01b031663a9059cbb858560405160240161103192919061136d565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161106a9190611320565b6000604051808303816000865af19150503d80600081146110a7576040519150601f19603f3d011682016040523d82523d6000602084013e6110ac565b606091505b50915091508180156110d65750805115806110d65750808060200190518101906110d691906111d1565b6110f25760405162461bcd60e51b815260040161028590611472565b5050505050565b604080516060810182526000808252602082018190529181019190915290565b60008060006060848603121561112d578283fd5b833561113881611730565b9250602084013561114881611748565b9150604084013561115881611748565b809150509250925092565b60008060208385031215611175578182fd5b82356001600160401b038082111561118b578384fd5b818501915085601f83011261119e578384fd5b8135818111156111ac578485fd5b86602080830285010111156111bf578485fd5b60209290920196919550909350505050565b6000602082840312156111e2578081fd5b81516111ed81611748565b9392505050565b600060208284031215611205578081fd5b81516111ed81611730565b600060208284031215611221578081fd5b5035919050565b600060208284031215611239578081fd5b5051919050565b60008060408385031215611252578182fd5b82359150602083013561126481611730565b809150509250929050565b600080600080600060a08688031215611286578081fd5b85359450602086013561129881611730565b935060408601356112a881611730565b94979396509394606081013594506080013592915050565b6000806000606084860312156112d4578283fd5b8335925060208401356112e681611730565b929592945050506040919091013590565b60008060408385031215611309578182fd5b50508035926020909101359150565b815260200190565b60008251815b818110156113405760208186018101518583015201611326565b8181111561134e5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156113c85781516001600160a01b0316845292840192908401906001016113a3565b505050838103828501528085516113df81846116ef565b91508387019250845b81811015611409576113fb838551611318565b9385019392506001016113e8565b5090979650505050505050565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b602080825260139082015272506f6f6c20616c72656164792065786973747360681b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b602080825260139082015272141bdbdb08191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461174557600080fd5b50565b801515811461174557600080fdfea264697066735822122057ca8dc35f2338beb2fd9e9f6ed998d11a2e0cbe90bc43d4389cdc8386f338fa64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
