0x6080604052600436106100385760003560e01c8063715018a6146101385780638da5cb5b1461014d578063f2fde38b146101865761003f565b3661003f57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610131573d6000f35b3d6000fd5b005b34801561014457600080fd5b506101366101ca565b34801561015957600080fd5b506000546040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561019257600080fd5b506101366101a13660046108ac565b610257565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b60005473ffffffffffffffffffffffffffffffffffffffff16331461024b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610109565b61025560006107f6565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610109565b73ffffffffffffffffffffffffffffffffffffffff811661037b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610109565b610384816107f6565b50565b7f2ad3e90873cbe86f6a024e2d91b7abbabc6ce35c355c15912cb7d7df99da235b90565b600081511161043c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f206375740000000000000000000000000000000000000000006064820152608401610109565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f65206164647265737328302900000000000000000000000000000000000000006064820152608401610109565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260408120549061ffff821690036105f45761055684604051806060016040528060248152602001610a146024913961086b565b60028201805473ffffffffffffffffffffffffffffffffffffffff861660008181526001808701602090815260408320820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90961695909517909455845490810185559381529190912090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b60005b83518110156107ef576000848281518110610614576106146108e9565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff1680156106f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401610109565b73ffffffffffffffffffffffffffffffffffffffff871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092557fffffffff0000000000000000000000000000000000000000000000000000000086168352889052902080547fffffffffffffffffffff00000000000000000000000000000000000000000000169091177401000000000000000000000000000000000000000061ffff871602179055836107d781610947565b945050505080806107e790610968565b9150506105f7565b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b813b81816108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010991906109a0565b50505050565b6000602082840312156108be57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108e257600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff80831681810361095e5761095e610918565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361099957610999610918565b5060010190565b600060208083528351808285015260005b818110156109cd578581018301518582016040015282016109b1565b818111156109df576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fe4c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220f35556fcdc0888fd73aac87595df989d6f880870b7ddb531d7f63e956cde900f64736f6c634300080d0033
0x60806040523480156200001157600080fd5b506040516200140938038062001409833981016040819052620000349162000790565b6200003f33620002e3565b6000620000566200033360201b620003871760201c565b8251909150620000709060048301906020850190620006a5565b506101f46003820155600281018054336001600160a01b03199091161790556000620000a762000357602090811b620001a617901c565b6301ffc9a760e01b600090815260038201602090815260408083208054600160ff1991821681179092556307e4c70760e21b855282852080548216831790556348e2b09360e01b855282852080548216831790556380ac58cd60e01b85528285208054821683179055635b5e139f60e01b8552828520805482168317905563152a902d60e11b8552828520805490911690911790558051600680825260e0820190925293945091929190820160c080368337019050509050631f931c1c60e01b816000815181106200017d576200017d6200086b565b6001600160e01b0319909216602092830291909101909101528051637a0ed62760e01b9082906001908110620001b757620001b76200086b565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b9082906002908110620001f157620001f16200086b565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060039081106200022b576200022b6200086b565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060049081106200026557620002656200086b565b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b90829060059081106200029f576200029f6200086b565b60200260200101906001600160e01b03191690816001600160e01b03191681525050620002d885826200036a60201b620003ab1760201c565b505050505062000948565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b7f2ad3e90873cbe86f6a024e2d91b7abbabc6ce35c355c15912cb7d7df99da235b90565b600080516020620013c583398151915290565b6000815111620003d55760405162461bcd60e51b815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201526a1858d95d081d1bc818dd5d60aa1b60648201526084015b60405180910390fd5b600080516020620013c58339815191526001600160a01b038316620004525760405162461bcd60e51b815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201526b65206164647265737328302960a01b6064820152608401620003cc565b6001600160a01b03831660009081526001820160205260408120549061ffff82169003620004fb576200049f84604051806060016040528060248152602001620013e5602491396200067b565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b8351811015620006745760008482815181106200051f576200051f6200086b565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620005c75760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401620003cc565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff87160217905583620006598162000897565b945050505080806200066b90620008bb565b915050620004fe565b5050505050565b813b81816200069f5760405162461bcd60e51b8152600401620003cc9190620008d7565b50505050565b828054620006b3906200090c565b90600052602060002090601f016020900481019282620006d7576000855562000722565b82601f10620006f257805160ff191683800117855562000722565b8280016001018555821562000722579182015b828111156200072257825182559160200191906001019062000705565b506200073092915062000734565b5090565b5b8082111562000730576000815560010162000735565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200077e57818101518382015260200162000764565b838111156200069f5750506000910152565b60008060408385031215620007a457600080fd5b82516001600160a01b0381168114620007bc57600080fd5b60208401519092506001600160401b0380821115620007da57600080fd5b818501915085601f830112620007ef57600080fd5b8151818111156200080457620008046200074b565b604051601f8201601f19908116603f011681019083821181831017156200082f576200082f6200074b565b816040528281528860208487010111156200084957600080fd5b6200085c83602083016020880162000761565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff808316818103620008b157620008b162000881565b6001019392505050565b600060018201620008d057620008d062000881565b5060010190565b6020815260008251806020840152620008f881604085016020870162000761565b601f01601f19169190910160400192915050565b600181811c908216806200092157607f821691505b6020821081036200094257634e487b7160e01b600052602260045260246000fd5b50919050565b610a6d80620009586000396000f3fe6080604052600436106100385760003560e01c8063715018a6146101385780638da5cb5b1461014d578063f2fde38b146101865761003f565b3661003f57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610131573d6000f35b3d6000fd5b005b34801561014457600080fd5b506101366101ca565b34801561015957600080fd5b506000546040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561019257600080fd5b506101366101a13660046108ac565b610257565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b60005473ffffffffffffffffffffffffffffffffffffffff16331461024b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610109565b61025560006107f6565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610109565b73ffffffffffffffffffffffffffffffffffffffff811661037b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610109565b610384816107f6565b50565b7f2ad3e90873cbe86f6a024e2d91b7abbabc6ce35c355c15912cb7d7df99da235b90565b600081511161043c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f206375740000000000000000000000000000000000000000006064820152608401610109565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f65206164647265737328302900000000000000000000000000000000000000006064820152608401610109565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260408120549061ffff821690036105f45761055684604051806060016040528060248152602001610a146024913961086b565b60028201805473ffffffffffffffffffffffffffffffffffffffff861660008181526001808701602090815260408320820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90961695909517909455845490810185559381529190912090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b60005b83518110156107ef576000848281518110610614576106146108e9565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff1680156106f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401610109565b73ffffffffffffffffffffffffffffffffffffffff871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092557fffffffff0000000000000000000000000000000000000000000000000000000086168352889052902080547fffffffffffffffffffff00000000000000000000000000000000000000000000169091177401000000000000000000000000000000000000000061ffff871602179055836107d781610947565b945050505080806107e790610968565b9150506105f7565b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b813b81816108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010991906109a0565b50505050565b6000602082840312156108be57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108e257600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff80831681810361095e5761095e610918565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361099957610999610918565b5060010190565b600060208083528351808285015260005b818110156109cd578581018301518582016040015282016109b1565b818111156109df576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fe4c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220f35556fcdc0888fd73aac87595df989d6f880870b7ddb531d7f63e956cde900f64736f6c634300080d0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64650000000000000000000000006f0213b19d8c5125a158fc1bb0786e213c972e640000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004f68747470733a2f2f636c6f7564666c6172652d697066732e636f6d2f697066732f516d4e72515a6a58706b4533355435624b4e76374243656546663457797978753144415a75734e615a71705a36340000000000000000000000000000000000