6080604052611388600b5567016345785d8a0000600c5534801562000022575f80fd5b506040518060400160405280600a815260200169446178696f20504c415960b01b81525060405180604001604052806004815260200163504c415960e01b815250815f90816200007391906200019a565b5060016200008282826200019a565b5050506200009f62000099620000a560201b60201c565b620000a9565b62000262565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200012357607f821691505b6020821081036200014257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000195575f81815260208120601f850160051c81016020861015620001705750805b601f850160051c820191505b8181101562000191578281556001016200017c565b5050505b505050565b81516001600160401b03811115620001b657620001b6620000fa565b620001ce81620001c784546200010e565b8462000148565b602080601f83116001811462000204575f8415620001ec5750858301515b5f19600386901b1c1916600185901b17855562000191565b5f85815260208120601f198616915b82811015620002345788860151825594840194600190910190840162000213565b50858210156200025257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b611c4080620002705f395ff3fe608060405260043610610161575f3560e01c80636352211e116100cd578063a22cb46511610087578063d5abeb0111610062578063d5abeb01146103df578063e8a3d485146103f4578063e985e9c514610408578063f2fde38b1461044f575f80fd5b8063a22cb46514610382578063b88d4fde146103a1578063c87b56dd146103c0575f80fd5b80636352211e146102ec57806370a082311461030b578063715018a61461032a5780638da5cb5b1461033e57806395d89b411461035b578063a0712d681461036f575f80fd5b806323b872dd1161011e57806323b872dd146102495780632f745c59146102685780633ccfd60b1461028757806342842e0e1461028f57806342966c68146102ae5780634f6ccce7146102cd575f80fd5b806301ffc9a71461016557806306fdde0314610199578063081812fc146101ba578063095ea7b3146101f157806313faede61461021257806318160ddd14610235575b5f80fd5b348015610170575f80fd5b5061018461017f366004611707565b61046e565b60405190151581526020015b60405180910390f35b3480156101a4575f80fd5b506101ad61049e565b604051610190919061176c565b3480156101c5575f80fd5b506101d96101d436600461177e565b61052d565b6040516001600160a01b039091168152602001610190565b3480156101fc575f80fd5b5061021061020b3660046117b0565b610552565b005b34801561021d575f80fd5b50610227600c5481565b604051908152602001610190565b348015610240575f80fd5b50600854610227565b348015610254575f80fd5b506102106102633660046117d8565b61066b565b348015610273575f80fd5b506102276102823660046117b0565b61069d565b610210610731565b34801561029a575f80fd5b506102106102a93660046117d8565b61078d565b3480156102b9575f80fd5b506102106102c836600461177e565b6107a7565b3480156102d8575f80fd5b506102276102e736600461177e565b6107d5565b3480156102f7575f80fd5b506101d961030636600461177e565b610865565b348015610316575f80fd5b50610227610325366004611811565b6108c4565b348015610335575f80fd5b50610210610948565b348015610349575f80fd5b50600a546001600160a01b03166101d9565b348015610366575f80fd5b506101ad61095b565b61021061037d36600461177e565b61096a565b34801561038d575f80fd5b5061021061039c36600461182a565b610ae2565b3480156103ac575f80fd5b506102106103bb366004611877565b610af1565b3480156103cb575f80fd5b506101ad6103da36600461177e565b610b29565b3480156103ea575f80fd5b50610227600b5481565b3480156103ff575f80fd5b506101ad610b4a565b348015610413575f80fd5b5061018461042236600461194c565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b34801561045a575f80fd5b50610210610469366004611811565b610b6a565b5f636ad56fd360e11b6001600160e01b031983160161048f57506001919050565b61049882610be0565b92915050565b60605f80546104ac9061197d565b80601f01602080910402602001604051908101604052809291908181526020018280546104d89061197d565b80156105235780601f106104fa57610100808354040283529160200191610523565b820191905f5260205f20905b81548152906001019060200180831161050657829003601f168201915b5050505050905090565b5f61053782610c04565b505f908152600460205260409020546001600160a01b031690565b5f61055c82610865565b9050806001600160a01b0316836001600160a01b0316036105ce5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105ea57506105ea8133610422565b61065c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016105c5565b6106668383610c62565b505050565b610676335b82610ccf565b6106925760405162461bcd60e51b81526004016105c5906119b5565b610666838383610d4c565b5f6106a7836108c4565b82106107095760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105c5565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b610739610ebb565b6040515f90339047908381818185875af1925050503d805f8114610778576040519150601f19603f3d011682016040523d82523d5f602084013e61077d565b606091505b505090508061078a575f80fd5b50565b61066683838360405180602001604052805f815250610af1565b6107b033610670565b6107cc5760405162461bcd60e51b81526004016105c5906119b5565b61078a81610f15565b5f6107df60085490565b82106108425760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105c5565b6008828154811061085557610855611a02565b905f5260205f2001549050919050565b5f818152600260205260408120546001600160a01b0316806104985760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105c5565b5f6001600160a01b03821661092d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105c5565b506001600160a01b03165f9081526003602052604090205490565b610950610ebb565b6109595f610fb4565b565b6060600180546104ac9061197d565b5f61097460085490565b90505f82116109d15760405162461bcd60e51b8152602060048201526024808201527f4d696e7420616d6f756e742073686f756c6420626520677265617465722074686044820152630616e20360e41b60648201526084016105c5565b600a821115610a2d5760405162461bcd60e51b815260206004820152602260248201527f4d696e7420616d6f756e742073686f756c64206e6f206d6f7265207468616e20604482015261031360f41b60648201526084016105c5565b600b54610a3a8383611a2a565b1115610a885760405162461bcd60e51b815260206004820152601f60248201527f43616e206e6f74206d696e74206f76657220746865204d6178537570706c790060448201526064016105c5565b600a546001600160a01b03163314610ab35781600c54610aa89190611a3d565b341015610ab3575f80fd5b60015b82811161066657610ad033610acb8385611a2a565b611005565b80610ada81611a54565b915050610ab6565b610aed33838361101e565b5050565b610afb3383610ccf565b610b175760405162461bcd60e51b81526004016105c5906119b5565b610b23848484846110eb565b50505050565b6060604051806080016040528060448152602001611bc76044913992915050565b6060604051806080016040528060458152602001611b8260459139905090565b610b72610ebb565b6001600160a01b038116610bd75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c5565b61078a81610fb4565b5f6001600160e01b0319821663780e9d6360e01b148061049857506104988261111e565b5f818152600260205260409020546001600160a01b031661078a5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105c5565b5f81815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610c9682610865565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f80610cda83610865565b9050806001600160a01b0316846001600160a01b03161480610d2057506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b80610d445750836001600160a01b0316610d398461052d565b6001600160a01b0316145b949350505050565b826001600160a01b0316610d5f82610865565b6001600160a01b031614610d855760405162461bcd60e51b81526004016105c590611a6c565b6001600160a01b038216610de75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105c5565b610df4838383600161116d565b826001600160a01b0316610e0782610865565b6001600160a01b031614610e2d5760405162461bcd60e51b81526004016105c590611a6c565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a546001600160a01b031633146109595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c5565b5f610f1f82610865565b9050610f2e815f84600161116d565b610f3782610865565b5f83815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080545f190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610aed828260405180602001604052805f815250611179565b816001600160a01b0316836001600160a01b03160361107f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105c5565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6110f6848484610d4c565b611102848484846111ab565b610b235760405162461bcd60e51b81526004016105c590611ab1565b5f6001600160e01b031982166380ac58cd60e01b148061114e57506001600160e01b03198216635b5e139f60e01b145b8061049857506301ffc9a760e01b6001600160e01b0319831614610498565b610b23848484846112a8565b61118383836113db565b61118f5f8484846111ab565b6106665760405162461bcd60e51b81526004016105c590611ab1565b5f6001600160a01b0384163b1561129d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906111ee903390899088908890600401611b03565b6020604051808303815f875af1925050508015611228575060408051601f3d908101601f1916820190925261122591810190611b3f565b60015b611283573d808015611255576040519150601f19603f3d011682016040523d82523d5f602084013e61125a565b606091505b5080515f0361127b5760405162461bcd60e51b81526004016105c590611ab1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610d44565b506001949350505050565b60018111156113175760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016105c5565b816001600160a01b0385166113725761136d81600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611395565b836001600160a01b0316856001600160a01b031614611395576113958582611570565b6001600160a01b0384166113b1576113ac81611609565b6113d4565b846001600160a01b0316846001600160a01b0316146113d4576113d484826116b0565b5050505050565b6001600160a01b0382166114315760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105c5565b5f818152600260205260409020546001600160a01b0316156114955760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105c5565b6114a25f8383600161116d565b5f818152600260205260409020546001600160a01b0316156115065760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105c5565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f600161157c846108c4565b6115869190611b5a565b5f838152600760205260409020549091508082146115d7576001600160a01b0384165f9081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b505f9182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008545f9061161a90600190611b5a565b5f838152600960205260408120546008805493945090928490811061164157611641611a02565b905f5260205f2001549050806008838154811061166057611660611a02565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061169757611697611b6d565b600190038181905f5260205f20015f9055905550505050565b5f6116ba836108c4565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b03198116811461078a575f80fd5b5f60208284031215611717575f80fd5b8135611722816116f2565b9392505050565b5f81518084525f5b8181101561174d57602081850181015186830182015201611731565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f6117226020830184611729565b5f6020828403121561178e575f80fd5b5035919050565b80356001600160a01b03811681146117ab575f80fd5b919050565b5f80604083850312156117c1575f80fd5b6117ca83611795565b946020939093013593505050565b5f805f606084860312156117ea575f80fd5b6117f384611795565b925061180160208501611795565b9150604084013590509250925092565b5f60208284031215611821575f80fd5b61172282611795565b5f806040838503121561183b575f80fd5b61184483611795565b915060208301358015158114611858575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f806080858703121561188a575f80fd5b61189385611795565b93506118a160208601611795565b925060408501359150606085013567ffffffffffffffff808211156118c4575f80fd5b818701915087601f8301126118d7575f80fd5b8135818111156118e9576118e9611863565b604051601f8201601f19908116603f0116810190838211818310171561191157611911611863565b816040528281528a6020848701011115611929575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b5f806040838503121561195d575f80fd5b61196683611795565b915061197460208401611795565b90509250929050565b600181811c9082168061199157607f821691505b6020821081036119af57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561049857610498611a16565b808202811582820484141761049857610498611a16565b5f60018201611a6557611a65611a16565b5060010190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611b3590830184611729565b9695505050505050565b5f60208284031215611b4f575f80fd5b8151611722816116f2565b8181038181111561049857610498611a16565b634e487b7160e01b5f52603160045260245ffdfe697066733a2f2f697066732f516d59774b6b7a71614771645438647166595535384c64456446444d3562654674784e79746e35375a7370787a322f63504c41592e6a736f6e697066733a2f2f697066732f516d59774b6b7a71614771645438647166595535384c64456446444d3562654674784e79746e35375a7370787a322f504c41592e6a736f6ea2646970667358221220d9c0b03d8c6ca9ecc75e302858c86f79f28d720e3bf71f3808eab317277d102464736f6c63430008140033