0x608060405260405161165a38038061165a8339810160408190526100229161119b565b8383838361003160003361038e565b60408051600280825260608201909252600091816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816100495750506040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b816000815181106100b8576100b861127a565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03881681529081016000815260200182815250826000815181106101085761010861127a565b602090810291909101015260408051600580825260c08201909252600091816020016020820280368337019050509050637a0ed62760e01b816000815181106101535761015361127a565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b908290600190811061018a5761018a61127a565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060029081106101c1576101c161127a565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b90829060039081106101f8576101f861127a565b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b908290600490811061022f5761022f61127a565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b038816815290810160008152602001828152508360018151811061027f5761027f61127a565b60209081029190910101526001600160a01b038516156102a9576102a4838686610428565b6102ca565b6102ca8360006040518060200160405280600081525061042860201b60201c565b50507fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f60205250507f699d9daa71b280d05a152715774afa0a81a312594b2d731d6b0b2552b7d6f69f8054600160ff1991821681179092557ff97e938d8af42f52387bb74b8b526fda8f184cc2aa534340a8d75a88fbecc77580548216831790556348e2b09360e01b6000527f65d510a5d8f7ef134ec444f7f34ee808c8eeb5177cdfd16be0c40fe1ab43369580549091169091179055506114a495505050505050565b6103988282610666565b61042457600060008051602061163a8339815191526000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905590506103e26106a0565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4505b5050565b60005b835181101561061b5760008482815181106104485761044861127a565b6020026020010151602001519050600085838151811061046a5761046a61127a565b602002602001015160400151905060008151116104e25760405162461bcd60e51b815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201526a1858d95d081d1bc818dd5d60aa1b60648201526084015b60405180910390fd5b60008260028111156104f6576104f6611290565b0361052d576105288684815181106105105761051061127a565b602002602001015160000151826106f360201b60201c565b610611565b600182600281111561054157610541611290565b036105735761052886848151811061055b5761055b61127a565b6020026020010151600001518261091160201b60201c565b600282600281111561058757610587611290565b036105b9576105288684815181106105a1576105a161127a565b60200260200101516000015182610b3860201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084016104d9565b505060010161042b565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161064f939291906112d2565b60405180910390a16106618282610c31565b505050565b600082815260008051602061163a833981519152602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b6000601436108015906106dc57507f408c39d8aa515d0b0e71362465fd3d73d3c848c6496e3618d8118282ac666dd1546001600160a01b031633145b156106ee575060131936013560601c90565b503390565b6000805160206115ae8339815191526001600160a01b03831661075b5760405162461bcd60e51b815260206004820152602c60248201526000805160206115f683398151915260448201526b65206164647265737328302960a01b60648201526084016104d9565b6001600160a01b0383166000908152600182016020526040812054906001600160601b0382169003610791576107918285610cf7565b60005b835181101561090a5760008482815181106107b1576107b161127a565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156108575760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016104d9565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836108f9816113eb565b945050600190920191506107949050565b5050505050565b6000805160206115ae8339815191526001600160a01b0383166109795760405162461bcd60e51b815260206004820152602c60248201526000805160206115f683398151915260448201526b65206164647265737328302960a01b60648201526084016104d9565b6001600160a01b0383166000908152600182016020526040812054906001600160601b03821690036109af576109af8285610cf7565b60005b835181101561090a5760008482815181106109cf576109cf61127a565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103610a7a5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016104d9565b610a85858284610d61565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583610b27816113eb565b945050600190920191506109b29050565b6000805160206115ae8339815191526001600160a01b03831615610bc45760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016104d9565b60005b8251811015610c2b576000838281518110610be457610be461127a565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b0316610c21848284610d61565b5050600101610bc7565b50505050565b6001600160a01b038216610c43575050565b610c65826040518060600160405280602881526020016115ce60289139611124565b600080836001600160a01b031683604051610c809190611419565b600060405180830381855af49150503d8060008114610cbb576040519150601f19603f3d011682016040523d82523d6000602084013e610cc0565b606091505b509150915081610c2b57805115610cda5780518082602001fd5b838360405163192105d760e01b81526004016104d9929190611435565b610d198160405180606001604052806024815260200161161660249139611124565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b038216610ddd5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016104d9565b306001600160a01b03831603610e4c5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b60648201526084016104d9565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b03169291610e9b91611461565b9050808214610f8d576001600160a01b03841660009081526001860160205260408120805483908110610ed057610ed061127a565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610f2157610f2161127a565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480610fb657610fb6611474565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812081905581900361090a57600285015460009061101990600190611461565b6001600160a01b03861660009081526001808901602052604090912001549091508082146110c85760008760020183815481106110585761105861127a565b6000918252602090912001546002890180546001600160a01b0390921692508291849081106110895761108961127a565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b866002018054806110db576110db611474565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b8181610c2b5760405162461bcd60e51b81526004016104d9919061148a565b80516001600160a01b038116811461115c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561119257818101518382015260200161117a565b50506000910152565b600080600080608085870312156111b157600080fd5b6111ba85611145565b93506111c860208601611145565b92506111d660408601611145565b60608601519092506001600160401b03808211156111f357600080fd5b818701915087601f83011261120757600080fd5b81518181111561121957611219611161565b604051601f8201601f19908116603f0116810190838211818310171561124157611241611161565b816040528281528a602084870101111561125a57600080fd5b61126b836020830160208801611177565b979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526112be816020860160208601611177565b601f01601f19169290920160200192915050565b60006060808301606084528087518083526080925060808601915060808160051b8701016020808b0160005b848110156113a557898403607f19018652815180516001600160a01b0316855283810151898601906003811061134457634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156113905783516001600160e01b0319168252928601926001929092019190860190611366565b509785019795505050908201906001016112fe565b50506001600160a01b038a169088015286810360408801526113c781896112a6565b9a9950505050505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038281166002600160601b0319810161140f5761140f6113d5565b6001019392505050565b6000825161142b818460208701611177565b9190910192915050565b6001600160a01b0383168152604060208201819052600090611459908301846112a6565b949350505050565b8181038181111561069a5761069a6113d5565b634e487b7160e01b600052603160045260246000fd5b60208152600061149d60208301846112a6565b9392505050565b60fc806114b26000396000f3fe608060405236600a57005b60007fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600080356001600160e01b0319168152602082905260409020549091506001600160a01b03168060a35760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640160405180910390fd5b3660008037600080366000845af43d6000803e80801560c1573d6000f35b3d6000fdfea2646970667358221220d3c4b9b1488ff7fd4b40364fa63388899be0d3d425ce8bf4d11d0d073b8e98d864736f6c63430008160033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465c9f4219fd3313651d0fea356250ee07ff6db87389708e21b79bc4712f20121c50000000000000000000000008780cfd9e533dadca02ffc80df642161461e2006000000000000000000000000fd120f67da5d74d6a4085ed81812580a7938636f00000000000000000000000032b574bf9722ed90d94e1d8e947a277774e54579000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c432b5a1b3000000000000000000000000f9c17c06bb09167e2e73619ae1c50bba14965de5000000000000000000000000ab5bff303312e24dc77bb71a451343f9feb200930000000000000000000000007aca86ebdeeeb673857946bce5e83ee1f066806b000000000000000000000000000000000000000000000000000000006630c320000000000000000000000000749bcad19bf80eefc774b74ac43ad612df14af5c000000000000000000000000fc6387f581d2a827f183a9ea68f07063f99744de00000000000000000000000000000000000000000000000000000000