0x61016060405234801561001157600080fd5b50604051611a42380380611a4283398101604081905261003091610408565b604051806040016040528060088152602001672aa9a21021b7b4b760c11b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060088152602001672aa9a21021b7b4b760c11b815250604051806040016040528060048152602001635553444360e01b81525081600390816100b991906104cb565b5060046100c682826104cb565b506100d691508390506005610233565b610120526100e5816006610233565b61014052815160208084019190912060e052815190820120610100524660a05261017260e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250808211156101db5760405162461bcd60e51b815260206004820152602160248201527f496e697469616c20737570706c792065786365656473206d617820737570706c6044820152607960f81b60648201526084015b60405180910390fd5b600880546001600160a01b031916331790556101f5601290565b61020090600a610686565b61020a908261069c565b60095561022c3361021d6012600a610686565b610227908561069c565b610266565b5050610738565b600060208351101561024f57610248836102a0565b9050610260565b8161025a84826104cb565b5060ff90505b92915050565b6001600160a01b0382166102905760405163ec442f0560e01b8152600060048201526024016101d2565b61029c600083836102de565b5050565b600080829050601f815111156102cb578260405163305a27a960e01b81526004016101d291906106b3565b80516102d682610701565b179392505050565b6001600160a01b0383166103095780600260008282546102fe9190610725565b9091555061037b9050565b6001600160a01b0383166000908152602081905260409020548181101561035c5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101d2565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610397576002805482900390556103b6565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103fb91815260200190565b60405180910390a3505050565b6000806040838503121561041b57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061045657607f821691505b60208210810361047657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156104c657806000526020600020601f840160051c810160208510156104a35750805b601f840160051c820191505b818110156104c357600081556001016104af565b50505b505050565b81516001600160401b038111156104e4576104e461042c565b6104f8816104f28454610442565b8461047c565b6020601f82116001811461052c57600083156105145750848201515b600019600385901b1c1916600184901b1784556104c3565b600084815260208120601f198516915b8281101561055c578785015182556020948501946001909201910161053c565b508482101561057a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156105da578085048111156105be576105be610589565b60018416156105cc57908102905b60019390931c9280026105a3565b935093915050565b6000826105f157506001610260565b816105fe57506000610260565b8160018114610614576002811461061e5761063a565b6001915050610260565b60ff84111561062f5761062f610589565b50506001821b610260565b5060208310610133831016604e8410600b841016171561065d575081810a610260565b61066a600019848461059f565b806000190482111561067e5761067e610589565b029392505050565b600061069560ff8416836105e2565b9392505050565b808202811582820484141761026057610260610589565b602081526000825180602084015260005b818110156106e157602081860181015160408684010152016106c4565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104765760001960209190910360031b1b16919050565b8082018082111561026057610260610589565b60805160a05160c05160e0516101005161012051610140516112b06107926000396000610909015260006108dc015260006108840152600061085c015260006107b7015260006107e10152600061080b01526112b06000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806384b0196e116100a2578063a9059cbb11610071578063a9059cbb1461022c578063d505accf1461023f578063d5abeb0114610252578063dd62ed3e1461025b578063f2fde38b1461029457600080fd5b806384b0196e146101c95780638da5cb5b146101e457806395d89b411461020f578063a0712d681461021757600080fd5b8063313ce567116100de578063313ce567146101765780633644e5151461018557806370a082311461018d5780637ecebe00146101b657600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b6101186102a7565b6040516101259190610e9f565b60405180910390f35b61014161013c366004610ed5565b610339565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610eff565b610353565b60405160128152602001610125565b610155610377565b61015561019b366004610f3c565b6001600160a01b031660009081526020819052604090205490565b6101556101c4366004610f3c565b610386565b6101d16103a4565b6040516101259796959493929190610f57565b6008546101f7906001600160a01b031681565b6040516001600160a01b039091168152602001610125565b6101186103ea565b61022a610225366004610fef565b6103f9565b005b61014161023a366004610ed5565b6104c5565b61022a61024d366004611008565b6104d3565b61015560095481565b61015561026936600461107b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61022a6102a2366004610f3c565b61060d565b6060600380546102b6906110ae565b80601f01602080910402602001604051908101604052809291908181526020018280546102e2906110ae565b801561032f5780601f106103045761010080835404028352916020019161032f565b820191906000526020600020905b81548152906001019060200180831161031257829003601f168201915b5050505050905090565b6000336103478185856106bb565b60019150505b92915050565b6000336103618582856106cd565b61036c85858561074b565b506001949350505050565b60006103816107aa565b905090565b6001600160a01b03811660009081526007602052604081205461034d565b6000606080600080600060606103b86108d5565b6103c0610902565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102b6906110ae565b6008546001600160a01b0316331461042c5760405162461bcd60e51b8152600401610423906110e8565b60405180910390fd5b600061043a6012600a61122b565b610444908361123a565b90506009548161045360025490565b61045d9190611251565b11156104ab5760405162461bcd60e51b815260206004820152601f60248201527f4d696e74696e6720776f756c6420657863656564206d617820737570706c79006044820152606401610423565b6008546104c1906001600160a01b03168261092f565b5050565b60003361034781858561074b565b834211156104f75760405163313c898160e11b815260048101859052602401610423565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105448c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061059f82610965565b905060006105af82878787610992565b9050896001600160a01b0316816001600160a01b0316146105f6576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610423565b6106018a8a8a6106bb565b50505050505050505050565b6008546001600160a01b031633146106375760405162461bcd60e51b8152600401610423906110e8565b6001600160a01b0381166106995760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f206164646044820152637265737360e01b6064820152608401610423565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6106c883838360016109c0565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610745578181101561073657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610423565b610745848484840360006109c0565b50505050565b6001600160a01b03831661077557604051634b637e8f60e11b815260006004820152602401610423565b6001600160a01b03821661079f5760405163ec442f0560e01b815260006004820152602401610423565b6106c8838383610a95565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561080357507f000000000000000000000000000000000000000000000000000000000000000046145b1561082d57507f000000000000000000000000000000000000000000000000000000000000000090565b610381604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60606103817f00000000000000000000000000000000000000000000000000000000000000006005610bbf565b60606103817f00000000000000000000000000000000000000000000000000000000000000006006610bbf565b6001600160a01b0382166109595760405163ec442f0560e01b815260006004820152602401610423565b6104c160008383610a95565b600061034d6109726107aa565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000806109a488888888610c6a565b9250925092506109b48282610d39565b50909695505050505050565b6001600160a01b0384166109ea5760405163e602df0560e01b815260006004820152602401610423565b6001600160a01b038316610a1457604051634a1406b160e11b815260006004820152602401610423565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561074557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a8791815260200190565b60405180910390a350505050565b6001600160a01b038316610ac0578060026000828254610ab59190611251565b90915550610b329050565b6001600160a01b03831660009081526020819052604090205481811015610b135760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610423565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610b4e57600280548290039055610b6d565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bb291815260200190565b60405180910390a3505050565b606060ff8314610bd957610bd283610df2565b905061034d565b818054610be5906110ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610c11906110ae565b8015610c5e5780601f10610c3357610100808354040283529160200191610c5e565b820191906000526020600020905b815481529060010190602001808311610c4157829003601f168201915b5050505050905061034d565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ca55750600091506003905082610d2f565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610cf9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610d2557506000925060019150829050610d2f565b9250600091508190505b9450945094915050565b6000826003811115610d4d57610d4d611264565b03610d56575050565b6001826003811115610d6a57610d6a611264565b03610d885760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d9c57610d9c611264565b03610dbd5760405163fce698f760e01b815260048101829052602401610423565b6003826003811115610dd157610dd1611264565b036104c1576040516335e2f38360e21b815260048101829052602401610423565b60606000610dff83610e31565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561034d57604051632cd44ac360e21b815260040160405180910390fd5b6000815180845260005b81811015610e7f57602081850181015186830182015201610e63565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610eb26020830184610e59565b9392505050565b80356001600160a01b0381168114610ed057600080fd5b919050565b60008060408385031215610ee857600080fd5b610ef183610eb9565b946020939093013593505050565b600080600060608486031215610f1457600080fd5b610f1d84610eb9565b9250610f2b60208501610eb9565b929592945050506040919091013590565b600060208284031215610f4e57600080fd5b610eb282610eb9565b60ff60f81b8816815260e060208201526000610f7660e0830189610e59565b8281036040840152610f888189610e59565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b81811015610fde578351835260209384019390920191600101610fc0565b50909b9a5050505050505050505050565b60006020828403121561100157600080fd5b5035919050565b600080600080600080600060e0888a03121561102357600080fd5b61102c88610eb9565b965061103a60208901610eb9565b95506040880135945060608801359350608088013560ff8116811461105e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561108e57600080fd5b61109783610eb9565b91506110a560208401610eb9565b90509250929050565b600181811c908216806110c257607f821691505b6020821081036110e257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526026908201527f4f6e6c7920746865206f776e65722063616e20706572666f726d20746869732060408201526530b1ba34b7b760d11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6001815b600184111561117f578085048111156111635761116361112e565b600184161561117157908102905b60019390931c928002611148565b935093915050565b6000826111965750600161034d565b816111a35750600061034d565b81600181146111b957600281146111c3576111df565b600191505061034d565b60ff8411156111d4576111d461112e565b50506001821b61034d565b5060208310610133831016604e8410600b8410161715611202575081810a61034d565b61120f6000198484611144565b80600019048211156112235761122361112e565b029392505050565b6000610eb260ff841683611187565b808202811582820484141761034d5761034d61112e565b8082018082111561034d5761034d61112e565b634e487b7160e01b600052602160045260246000fdfea26469706673582212204f4facc5618a97f922fc96244808dedca77afb3be1460c27ef581f90011c4c3764736f6c634300081a0033000000000000000000000000000000000000000000000000000000000007a1200000000000000000000000000000000000000000000000000000000000989680