60a06040523480156200001157600080fd5b506040516200548c3803806200548c833981016040819052620000349162000511565b604080518082018252600f81526e131bdb99c8139958dadcc813d39195608a1b60208083019190915282518084019093526002835261262760f11b90830152908487838383838080733cc6cdda760b79bafa08df41ecfa224f810dceb660016daaeb6d7670e522a718067333cd4e3b15620001d85780156200012657604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200010757600080fd5b505af11580156200011c573d6000803e3d6000fd5b50505050620001d8565b6001600160a01b03821615620001775760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af290390604401620000ec565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b158015620001be57600080fd5b505af1158015620001d3573d6000803e3d6000fd5b505050505b50620001e6905033620002b0565b6001600160a01b03166080525081620002525760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b60648201526084015b60405180910390fd5b50600655600a620002648382620006b8565b50600b620002738282620006b8565b5050505050505083601290816200028b9190620006b8565b506200029a826101f462000300565b620002a58162000401565b505050505062000784565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6127106001600160601b0382161115620003705760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b606482015260840162000249565b6001600160a01b038216620003c85760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000249565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217601055565b6200040b62000480565b6001600160a01b038116620004725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000249565b6200047d81620002b0565b50565b6000546001600160a01b03163314620004dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000249565b565b80516001600160a01b0381168114620004f657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200052a57600080fd5b6200053586620004de565b602087810151919650906001600160401b03808211156200055557600080fd5b818901915089601f8301126200056a57600080fd5b8151818111156200057f576200057f620004fb565b604051601f8201601f19908116603f01168101908382118183101715620005aa57620005aa620004fb565b816040528281528c86848701011115620005c357600080fd5b600093505b82841015620005e75784840186015181850187015292850192620005c8565b6000868483010152809950505050505050604086015192506200060d60608701620004de565b91506200061d60808701620004de565b90509295509295909350565b600181811c908216806200063e57607f821691505b6020821081036200065f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006b357600081815260208120601f850160051c810160208610156200068e5750805b601f850160051c820191505b81811015620006af578281556001016200069a565b5050505b505050565b81516001600160401b03811115620006d457620006d4620004fb565b620006ec81620006e5845462000629565b8462000665565b602080601f8311600181146200072457600084156200070b5750858301515b600019600386901b1c1916600185901b178555620006af565b600085815260208120601f198616915b82811015620007555788860151825594840194600190910190840162000734565b5085821015620007745787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051614cb4620007d8600039600081816109b501528181610bd901528181610ecb015281816110530152818161129901528181611b85015281816120140152818161214701526133970152614cb46000f3fe6080604052600436106103755760003560e01c8063715018a6116101d1578063b88d4fde11610102578063d1deba1f116100a0578063f23536411161006f578063f235364114610b49578063f2fde38b14610b69578063f5ecbdbc14610b89578063fa25f9b614610ba957600080fd5b8063d1deba1f14610aad578063df2a5b3b14610ac0578063e985e9c514610ae0578063eb8d72b714610b2957600080fd5b8063c50b87be116100dc578063c50b87be14610a2d578063c87b56dd14610a4d578063cbed8b9c14610a6d578063d12473a514610a8d57600080fd5b8063b88d4fde146109d7578063baf3292d146109f7578063c446183414610a1757600080fd5b80639ea5d6b11161016f578063a6c3d16511610149578063a6c3d16514610948578063ab3ffb9314610968578063af3fb21c1461097b578063b353aaa7146109a357600080fd5b80639ea5d6b1146108e85780639f38369a14610908578063a22cb4651461092857600080fd5b80638da5cb5b116101ab5780638da5cb5b146108755780638ffa1f2a14610893578063950c8a74146108b357806395d89b41146108d357600080fd5b8063715018a6146108085780637533d7881461081d5780638cfd8f5c1461083d57600080fd5b8063335477fc116102ab5780634ac3f4ff116102495780635b8c41e6116102235780635b8c41e6146107595780636352211e146107a857806366ad5c8a146107c857806370a08231146107e857600080fd5b80634ac3f4ff146106f9578063519056361461072657806355f804b31461073957600080fd5b806341f434341161028557806341f434341461068157806342842e0e146106a357806342d65a8d146106c357806348288190146106e357600080fd5b8063335477fc146106065780633d8b38f6146106345780633f1f4fa41461065457600080fd5b80630df374831161031857806322a3ecf9116102f257806322a3ecf9146104ef57806323b872dd146105725780632a205e3d146105925780632a55205a146105c757600080fd5b80630df374831461048b57806310ddb137146104ab57806318160ddd146104cb57600080fd5b806307e0db171161035457806307e0db17146103f3578063081812fc14610413578063095ea7b31461044b5780630b4cad4c1461046b57600080fd5b80621d35671461037a57806301ffc9a71461039c57806306fdde03146103d1575b600080fd5b34801561038657600080fd5b5061039a610395366004613b36565b610bd6565b005b3480156103a857600080fd5b506103bc6103b7366004613bdf565b610e07565b60405190151581526020015b60405180910390f35b3480156103dd57600080fd5b506103e6610e18565b6040516103c89190613c4c565b3480156103ff57600080fd5b5061039a61040e366004613c5f565b610eaa565b34801561041f57600080fd5b5061043361042e366004613c7a565b610f33565b6040516001600160a01b0390911681526020016103c8565b34801561045757600080fd5b5061039a610466366004613cb3565b610f5a565b34801561047757600080fd5b5061039a610486366004613c7a565b610f73565b34801561049757600080fd5b5061039a6104a6366004613cdf565b611013565b3480156104b757600080fd5b5061039a6104c6366004613c5f565b611032565b3480156104d757600080fd5b506104e160135481565b6040519081526020016103c8565b3480156104fb57600080fd5b5061054361050a366004613c7a565b60096020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b0316919060ff1684565b6040805161ffff90951685526001600160a01b03909316602085015291830152151560608201526080016103c8565b34801561057e57600080fd5b5061039a61058d366004613cfb565b61108a565b34801561059e57600080fd5b506105b26105ad366004613e15565b6110b5565b604080519283526020830191909152016103c8565b3480156105d357600080fd5b506105e76105e2366004613ea7565b6110db565b604080516001600160a01b0390931683526020830191909152016103c8565b34801561061257600080fd5b5061061c6101f481565b6040516001600160601b0390911681526020016103c8565b34801561064057600080fd5b506103bc61064f366004613ec9565b611189565b34801561066057600080fd5b506104e161066f366004613c5f565b60036020526000908152604090205481565b34801561068d57600080fd5b506104336daaeb6d7670e522a718067333cd4e81565b3480156106af57600080fd5b5061039a6106be366004613cfb565b611255565b3480156106cf57600080fd5b5061039a6106de366004613ec9565b61127a565b3480156106ef57600080fd5b506104e160065481565b34801561070557600080fd5b506104e1610714366004613c5f565b60076020526000908152604090205481565b61039a610734366004613f1b565b611300565b34801561074557600080fd5b5061039a610754366004613fd4565b611317565b34801561076557600080fd5b506104e161077436600461401c565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b3480156107b457600080fd5b506104336107c3366004613c7a565b61132f565b3480156107d457600080fd5b5061039a6107e3366004613b36565b611394565b3480156107f457600080fd5b506104e1610803366004614079565b611470565b34801561081457600080fd5b5061039a6114f6565b34801561082957600080fd5b506103e6610838366004613c5f565b61150a565b34801561084957600080fd5b506104e1610858366004614096565b600260209081526000928352604080842090915290825290205481565b34801561088157600080fd5b506000546001600160a01b0316610433565b34801561089f57600080fd5b5061039a6108ae3660046140c9565b6115a4565b3480156108bf57600080fd5b50600454610433906001600160a01b031681565b3480156108df57600080fd5b506103e66117e5565b3480156108f457600080fd5b5061039a610903366004613cdf565b6117f4565b34801561091457600080fd5b506103e6610923366004613c5f565b6118ab565b34801561093457600080fd5b5061039a6109433660046140fd565b6119c1565b34801561095457600080fd5b5061039a610963366004613ec9565b6119d5565b61039a6109763660046141bf565b611a5e565b34801561098757600080fd5b50610990600181565b60405161ffff90911681526020016103c8565b3480156109af57600080fd5b506104337f000000000000000000000000000000000000000000000000000000000000000081565b3480156109e357600080fd5b5061039a6109f2366004614274565b611a6d565b348015610a0357600080fd5b5061039a610a12366004614079565b611a93565b348015610a2357600080fd5b506104e161271081565b348015610a3957600080fd5b5061039a610a48366004614079565b611ae9565b348015610a5957600080fd5b506103e6610a68366004613c7a565b611b00565b348015610a7957600080fd5b5061039a610a883660046142df565b611b66565b348015610a9957600080fd5b5061039a610aa8366004613cdf565b611bfb565b61039a610abb366004613b36565b611cab565b348015610acc57600080fd5b5061039a610adb36600461434d565b611ec1565b348015610aec57600080fd5b506103bc610afb366004614389565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205460ff1690565b348015610b3557600080fd5b5061039a610b44366004613ec9565b611f7b565b348015610b5557600080fd5b506105b2610b643660046143b7565b611fd5565b348015610b7557600080fd5b5061039a610b84366004614079565b6120a0565b348015610b9557600080fd5b506103e6610ba4366004614434565b612116565b348015610bb557600080fd5b506104e1610bc4366004613c5f565b60086020526000908152604090205481565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c535760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610c7190614481565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9d90614481565b8015610cea5780601f10610cbf57610100808354040283529160200191610cea565b820191906000526020600020905b815481529060010190602001808311610ccd57829003601f168201915b50505050509050805186869050148015610d05575060008151115b8015610d2d575080516020820120604051610d2390889088906144bb565b6040518091039020145b610d885760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610c4a565b610dfe8787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506121c992505050565b50505050505050565b6000610e1282612257565b92915050565b6060600a8054610e2790614481565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5390614481565b8015610ea05780601f10610e7557610100808354040283529160200191610ea0565b820191906000526020600020905b815481529060010190602001808311610e8357829003601f168201915b5050505050905090565b610eb261227c565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b158015610f1857600080fd5b505af1158015610f2c573d6000803e3d6000fd5b5050505050565b6000610f3e826122d6565b506000908152600e60205260409020546001600160a01b031690565b81610f648161233a565b610f6e83836123f3565b505050565b610f7b61227c565b60008111610fd75760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b6064820152608401610c4a565b60068190556040518181527ffebbc4f8bb9ec2313950c718d43123124b15778efda4c1f1d529de2995b4f34d906020015b60405180910390a150565b61101b61227c565b61ffff909116600090815260036020526040902055565b61103a61227c565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401610efe565b826001600160a01b03811633146110a4576110a43361233a565b6110af848484612521565b50505050565b6000806110cd87876110c688612599565b8787611fd5565b915091509550959350505050565b60008281526011602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916111505750604080518082019091526010546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101516000906127109061116f906001600160601b0316876144e1565b61117991906144f8565b91519350909150505b9250929050565b61ffff8316600090815260016020526040812080548291906111aa90614481565b80601f01602080910402602001604051908101604052809291908181526020018280546111d690614481565b80156112235780601f106111f857610100808354040283529160200191611223565b820191906000526020600020905b81548152906001019060200180831161120657829003601f168201915b50505050509050838360405161123a9291906144bb565b60405180910390208180519060200120149150509392505050565b826001600160a01b038116331461126f5761126f3361233a565b6110af8484846125e4565b61128261227c565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d906112d290869086908690600401614543565b600060405180830381600087803b1580156112ec57600080fd5b505af1158015610dfe573d6000803e3d6000fd5b610dfe87878761130f88612599565b8787876125ff565b61131f6127dd565b601261132b82826145a7565b5050565b6000818152600c60205260408120546001600160a01b031680610e125760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610c4a565b3330146113f25760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610c4a565b6114688686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061280892505050565b505050505050565b60006001600160a01b0382166114da5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c4a565b506001600160a01b03166000908152600d602052604090205490565b6114fe61227c565b611508600061295f565b565b6001602052600090815260409020805461152390614481565b80601f016020809104026020016040519081016040528092919081815260200182805461154f90614481565b801561159c5780601f106115715761010080835404028352916020019161159c565b820191906000526020600020905b81548152906001019060200180831161157f57829003601f168201915b505050505081565b80516020808301919091206000818152600990925260409091206002015460ff166116115760405162461bcd60e51b815260206004820152601160248201527f6e6f20637265646974732073746f7265640000000000000000000000000000006044820152606401610c4a565b60008280602001905181019061162791906146ab565b600084815260096020526040812080546001909101549294509092506116639161ffff8216916201000090046001600160a01b031690856129af565b60008481526009602052604090206001015490915081116116d85760405162461bcd60e51b815260206004820152602960248201527f6e6f7420656e6f7567682067617320746f2070726f6365737320637265646974604482015268103a3930b739b332b960b91b6064820152608401610c4a565b8151810361174f5760008381526009602052604080822080546001600160b01b031916815560018101929092556002909101805460ff19169055517fd7be02b8dd0d27bd0517a9cb4d7469ce27df4313821ae5ec1ff69acc594ba233906117429085815260200190565b60405180910390a16110af565b60408051608081018252600085815260096020818152848320805461ffff8082168752620100008083046001600160a01b03908116868a019081529989019a8b52600160608a018181529d9098529590945295519651969095166001600160b01b031990951694909417949091160292909217815591519082015591516002909201805460ff1916921515929092179091555050565b6060600b8054610e2790614481565b6117fc61227c565b600081116118575760405162461bcd60e51b815260206004820152602260248201527f647374436861696e4964546f42617463684c696d6974206d757374206265203e604482015261020360f41b6064820152608401610c4a565b61ffff8216600081815260076020908152604091829020849055815192835282018390527f7315f7654d594ead24a30160ed9ba2d23247f543016b918343591e93d7afdb6d91015b60405180910390a15050565b61ffff81166000908152600160205260408120805460609291906118ce90614481565b80601f01602080910402602001604051908101604052809291908181526020018280546118fa90614481565b80156119475780601f1061191c57610100808354040283529160200191611947565b820191906000526020600020905b81548152906001019060200180831161192a57829003601f168201915b50505050509050805160000361199f5760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610c4a565b6119ba6000601483516119b29190614765565b8391906129fb565b9392505050565b816119cb8161233a565b610f6e8383612b14565b6119dd61227c565b8181306040516020016119f293929190614778565b60408051601f1981840301815291815261ffff8516600090815260016020522090611a1d90826145a7565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce838383604051611a5193929190614543565b60405180910390a1505050565b610dfe878787878787876125ff565b836001600160a01b0381163314611a8757611a873361233a565b610f2c85858585612b1f565b611a9b61227c565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b90602001611008565b611af16127dd565b611afd816101f4612b97565b50565b6060611b0b826122d6565b6000611b15612c94565b90506000815111611b3557604051806020016040528060008152506119ba565b80611b3f84612ca3565b604051602001611b5092919061479e565b6040516020818303038152906040529392505050565b611b6e61227c565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611bc290889088908890889088906004016147cd565b600060405180830381600087803b158015611bdc57600080fd5b505af1158015611bf0573d6000803e3d6000fd5b505050505050505050565b611c0361227c565b60008111611c5f5760405162461bcd60e51b815260206004820152602360248201527f647374436861696e4964546f5472616e73666572476173206d7573742062652060448201526203e20360ec1b6064820152608401610c4a565b61ffff8216600081815260086020908152604091829020849055815192835282018390527fc46df2983228ac2d9754e94a0d565e6671665dc8ad38602bc8e544f0685a29fb910161189f565b61ffff86166000908152600560205260408082209051611cce90889088906144bb565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611d4e5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610c4a565b808383604051611d5f9291906144bb565b604051809103902014611dbe5760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610c4a565b61ffff87166000908152600560205260408082209051611de190899089906144bb565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252611e79918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061280892505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611eb0959493929190614806565b60405180910390a150505050505050565b611ec961227c565b60008111611f195760405162461bcd60e51b815260206004820152601560248201527f4c7a4170703a20696e76616c6964206d696e47617300000000000000000000006044820152606401610c4a565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611a51565b611f8361227c565b61ffff83166000908152600160205260409020611fa1828483614841565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab838383604051611a5193929190614543565b60008060008686604051602001611fed92919061493b565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090612051908b90309086908b908b90600401614969565b6040805180830381865afa15801561206d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209191906149bb565b92509250509550959350505050565b6120a861227c565b6001600160a01b03811661210d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c4a565b611afd8161295f565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015612196573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121be91908101906149df565b90505b949350505050565b6000806122415a60966366ad5c8a60e01b898989896040516024016121f19493929190614a13565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915230929190612d35565b9150915081611468576114688686868685612dbf565b60006001600160e01b0319821663152a902d60e11b1480610e125750610e1282612e5c565b6000546001600160a01b031633146115085760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c4a565b6000818152600c60205260409020546001600160a01b0316611afd5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610c4a565b6daaeb6d7670e522a718067333cd4e3b15611afd57604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156123a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cb9190614a51565b611afd57604051633b79c77360e21b81526001600160a01b0382166004820152602401610c4a565b60006123fe8261132f565b9050806001600160a01b0316836001600160a01b03160361246b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c4a565b336001600160a01b03821614806124a557506001600160a01b0381166000908152600f6020908152604080832033845290915290205460ff165b6125175760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c4a565b610f6e8383612e79565b61252c335b82612ee7565b61258e5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610c4a565b610f6e838383612f65565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106125d3576125d3614a6e565b602090810291909101015292915050565b610f6e83838360405180602001604052806000815250611a6d565b60008451116126505760405162461bcd60e51b815260206004820152601360248201527f746f6b656e4964735b5d20697320656d707479000000000000000000000000006044820152606401610c4a565b835160011480612674575061ffff8616600090815260076020526040902054845111155b6126cb5760405162461bcd60e51b815260206004820152602260248201527f62617463682073697a65206578636565647320647374206261746368206c696d6044820152611a5d60f21b6064820152608401610c4a565b60005b845181101561270e576126fc8888888885815181106126ef576126ef614a6e565b6020026020010151613145565b8061270681614a84565b9150506126ce565b506000858560405160200161272492919061493b565b6040516020818303038152906040529050612769876001848851600860008d61ffff1661ffff1681526020019081526020016000205461276491906144e1565b61318f565b61277787828686863461326e565b856040516127859190614a9d565b6040518091039020886001600160a01b03168861ffff167fe1b87c47fdeb4f9cbadbca9df3af7aba453bb6e501075d0440d88125b711522a886040516127cb9190614ab9565b60405180910390a45050505050505050565b6000546001600160a01b03163314611508576040516338c0f6d960e21b815260040160405180910390fd5b6000808280602001905181019061281f91906146ab565b601482015191935091506000612837888383866129af565b9050825181101561290b5784516020808701919091206040805160808101825261ffff808d1682526001600160a01b0380881683870190815283850188815260016060860181815260008981526009909a529887902095518654935190941662010000026001600160b01b03199093169390941692909217178355519082015592516002909301805493151560ff199094169390931790925590517f10e0b70d256bccc84b7027506978bd8b68984a870788b93b479def144c839ad7906129019083908990614acc565b60405180910390a1505b816001600160a01b0316876040516129239190614a9d565b60405180910390208961ffff167f5b821db8a46f8ecbe1941ba2f51cfeea9643268b56631f70d45e2a745d990265866040516127cb9190614ab9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000825b82518110156121be576006545a106121be576129e986868584815181106129dc576129dc614a6e565b6020026020010151613413565b806129f381614a84565b9150506129b3565b606081612a0981601f614ae5565b1015612a485760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610c4a565b612a528284614ae5565b84511015612aa25760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610c4a565b606082158015612ac15760405191506000825260208201604052612b0b565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612afa578051835260209283019201612ae2565b5050858452601f01601f1916604052505b50949350505050565b61132b338383613437565b612b293383612ee7565b612b8b5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610c4a565b6110af84848484613505565b6127106001600160601b0382161115612c055760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610c4a565b6001600160a01b038216612c5b5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610c4a565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217601055565b606060128054610e2790614481565b60606000612cb083613538565b60010190506000816001600160401b03811115612ccf57612ccf613d3c565b6040519080825280601f01601f191660200182016040528015612cf9576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612d0357509392505050565b6000606060008060008661ffff166001600160401b03811115612d5a57612d5a613d3c565b6040519080825280601f01601f191660200182016040528015612d84576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115612da6578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff16815260200190815260200160002085604051612df09190614a9d565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90612e4d9087908790879087908790614af8565b60405180910390a15050505050565b60006001600160e01b031982161580610e125750610e128261361a565b6000818152600e6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612eae8261132f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612ef38361132f565b9050806001600160a01b0316846001600160a01b03161480612f3a57506001600160a01b038082166000908152600f602090815260408083209388168352929052205460ff165b806121c15750836001600160a01b0316612f5384610f33565b6001600160a01b031614949350505050565b826001600160a01b0316612f788261132f565b6001600160a01b031614612fdc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610c4a565b6001600160a01b03821661303e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c4a565b826001600160a01b03166130518261132f565b6001600160a01b0316146130b55760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610c4a565b6000818152600e6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600d8552838620805460001901905590871680865283862080546001019055868652600c90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61314e33612526565b61316b5760405163669c831360e01b815260040160405180910390fd5b6131748161365a565b6013805490600061318483614b4a565b919050555050505050565b600061319a836136ef565b61ffff8087166000908152600260209081526040808320938916835292905290812054919250906131cc908490614ae5565b90506000811161321e5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610c4a565b808210156114685760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610c4a565b61ffff86166000908152600160205260408120805461328c90614481565b80601f01602080910402602001604051908101604052809291908181526020018280546132b890614481565b80156133055780601f106132da57610100808354040283529160200191613305565b820191906000526020600020905b8154815290600101906020018083116132e857829003601f168201915b5050505050905080516000036133765760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610c4a565b61338187875161374b565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c58031009084906133d8908b9086908c908c908c908c90600401614b61565b6000604051808303818588803b1580156133f157600080fd5b505af1158015613405573d6000803e3d6000fd5b505050505050505050505050565b61341d82826137bc565b6013805490600061342d83614a84565b9190505550505050565b816001600160a01b0316836001600160a01b0316036134985760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c4a565b6001600160a01b038381166000818152600f6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b613510848484612f65565b61351c848484846137d6565b6110af5760405162461bcd60e51b8152600401610c4a90614bc8565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613581577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106135ad576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106135cb57662386f26fc10000830492506010015b6305f5e10083106135e3576305f5e100830492506008015b61271083106135f757612710830492506004015b60648310613609576064830492506002015b600a8310610e125760010192915050565b60006001600160e01b031982166380ac58cd60e01b148061364b57506001600160e01b03198216635b5e139f60e01b145b80610e125750610e12826138d4565b60006136658261132f565b90506136708261132f565b6000838152600e6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552600d84528285208054600019019055878552600c909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006022825110156137435760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610c4a565b506022015190565b61ffff82166000908152600360205260408120549081900361376c57506127105b80821115610f6e5760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610c4a565b61132b828260405180602001604052806000815250613909565b60006001600160a01b0384163b156138cc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061381a903390899088908890600401614c25565b6020604051808303816000875af1925050508015613855575060408051601f3d908101601f1916820190925261385291810190614c61565b60015b6138b2573d808015613883576040519150601f19603f3d011682016040523d82523d6000602084013e613888565b606091505b5080516000036138aa5760405162461bcd60e51b8152600401610c4a90614bc8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506121c1565b5060016121c1565b60006001600160e01b031982166322bac5d960e01b1480610e1257506301ffc9a760e01b6001600160e01b0319831614610e12565b613913838361393c565b61392060008484846137d6565b610f6e5760405162461bcd60e51b8152600401610c4a90614bc8565b6001600160a01b0382166139925760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c4a565b6000818152600c60205260409020546001600160a01b0316156139f75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c4a565b6000818152600c60205260409020546001600160a01b031615613a5c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c4a565b6001600160a01b0382166000818152600d6020908152604080832080546001019055848352600c90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b803561ffff81168114613ad957600080fd5b919050565b60008083601f840112613af057600080fd5b5081356001600160401b03811115613b0757600080fd5b60208301915083602082850101111561118257600080fd5b80356001600160401b0381168114613ad957600080fd5b60008060008060008060808789031215613b4f57600080fd5b613b5887613ac7565b955060208701356001600160401b0380821115613b7457600080fd5b613b808a838b01613ade565b9097509550859150613b9460408a01613b1f565b94506060890135915080821115613baa57600080fd5b50613bb789828a01613ade565b979a9699509497509295939492505050565b6001600160e01b031981168114611afd57600080fd5b600060208284031215613bf157600080fd5b81356119ba81613bc9565b60005b83811015613c17578181015183820152602001613bff565b50506000910152565b60008151808452613c38816020860160208601613bfc565b601f01601f19169290920160200192915050565b6020815260006119ba6020830184613c20565b600060208284031215613c7157600080fd5b6119ba82613ac7565b600060208284031215613c8c57600080fd5b5035919050565b6001600160a01b0381168114611afd57600080fd5b8035613ad981613c93565b60008060408385031215613cc657600080fd5b8235613cd181613c93565b946020939093013593505050565b60008060408385031215613cf257600080fd5b613cd183613ac7565b600080600060608486031215613d1057600080fd5b8335613d1b81613c93565b92506020840135613d2b81613c93565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613d7a57613d7a613d3c565b604052919050565b60006001600160401b03821115613d9b57613d9b613d3c565b50601f01601f191660200190565b6000613dbc613db784613d82565b613d52565b9050828152838383011115613dd057600080fd5b828260208301376000602084830101529392505050565b600082601f830112613df857600080fd5b6119ba83833560208501613da9565b8015158114611afd57600080fd5b600080600080600060a08688031215613e2d57600080fd5b613e3686613ac7565b945060208601356001600160401b0380821115613e5257600080fd5b613e5e89838a01613de7565b95506040880135945060608801359150613e7782613e07565b90925060808701359080821115613e8d57600080fd5b50613e9a88828901613de7565b9150509295509295909350565b60008060408385031215613eba57600080fd5b50508035926020909101359150565b600080600060408486031215613ede57600080fd5b613ee784613ac7565b925060208401356001600160401b03811115613f0257600080fd5b613f0e86828701613ade565b9497909650939450505050565b600080600080600080600060e0888a031215613f3657600080fd5b8735613f4181613c93565b9650613f4f60208901613ac7565b955060408801356001600160401b0380821115613f6b57600080fd5b613f778b838c01613de7565b965060608a0135955060808a01359150613f9082613c93565b90935060a089013590613fa282613c93565b90925060c08901359080821115613fb857600080fd5b50613fc58a828b01613de7565b91505092959891949750929550565b600060208284031215613fe657600080fd5b81356001600160401b03811115613ffc57600080fd5b8201601f8101841361400d57600080fd5b6121c184823560208401613da9565b60008060006060848603121561403157600080fd5b61403a84613ac7565b925060208401356001600160401b0381111561405557600080fd5b61406186828701613de7565b92505061407060408501613b1f565b90509250925092565b60006020828403121561408b57600080fd5b81356119ba81613c93565b600080604083850312156140a957600080fd5b6140b283613ac7565b91506140c060208401613ac7565b90509250929050565b6000602082840312156140db57600080fd5b81356001600160401b038111156140f157600080fd5b6121c184828501613de7565b6000806040838503121561411057600080fd5b823561411b81613c93565b9150602083013561412b81613e07565b809150509250929050565b60006001600160401b0382111561414f5761414f613d3c565b5060051b60200190565b600082601f83011261416a57600080fd5b8135602061417a613db783614136565b82815260059290921b8401810191818101908684111561419957600080fd5b8286015b848110156141b4578035835291830191830161419d565b509695505050505050565b600080600080600080600060e0888a0312156141da57600080fd5b87356141e581613c93565b96506141f360208901613ac7565b955060408801356001600160401b038082111561420f57600080fd5b61421b8b838c01613de7565b965060608a013591508082111561423157600080fd5b61423d8b838c01614159565b955060808a0135915061424f82613c93565b81945061425e60a08b01613ca8565b935060c08a0135915080821115613fb857600080fd5b6000806000806080858703121561428a57600080fd5b843561429581613c93565b935060208501356142a581613c93565b92506040850135915060608501356001600160401b038111156142c757600080fd5b6142d387828801613de7565b91505092959194509250565b6000806000806000608086880312156142f757600080fd5b61430086613ac7565b945061430e60208701613ac7565b93506040860135925060608601356001600160401b0381111561433057600080fd5b61433c88828901613ade565b969995985093965092949392505050565b60008060006060848603121561436257600080fd5b61436b84613ac7565b925061437960208501613ac7565b9150604084013590509250925092565b6000806040838503121561439c57600080fd5b82356143a781613c93565b9150602083013561412b81613c93565b600080600080600060a086880312156143cf57600080fd5b6143d886613ac7565b945060208601356001600160401b03808211156143f457600080fd5b61440089838a01613de7565b9550604088013591508082111561441657600080fd5b61442289838a01614159565b945060608801359150613e7782613e07565b6000806000806080858703121561444a57600080fd5b61445385613ac7565b935061446160208601613ac7565b9250604085013561447181613c93565b9396929550929360600135925050565b600181811c9082168061449557607f821691505b6020821081036144b557634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e1257610e126144cb565b60008261451557634e487b7160e01b600052601260045260246000fd5b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff841681526040602082015260006121be60408301848661451a565b601f821115610f6e57600081815260208120601f850160051c810160208610156145885750805b601f850160051c820191505b8181101561146857828155600101614594565b81516001600160401b038111156145c0576145c0613d3c565b6145d4816145ce8454614481565b84614561565b602080601f83116001811461460957600084156145f15750858301515b600019600386901b1c1916600185901b178555611468565b600085815260208120601f198616915b8281101561463857888601518255948401946001909101908401614619565b50858210156146565787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082601f83011261467757600080fd5b8151614685613db782613d82565b81815284602083860101111561469a57600080fd5b6121c1826020830160208701613bfc565b600080604083850312156146be57600080fd5b82516001600160401b03808211156146d557600080fd5b6146e186838701614666565b93506020915081850151818111156146f857600080fd5b85019050601f8101861361470b57600080fd5b8051614719613db782614136565b81815260059190911b8201830190838101908883111561473857600080fd5b928401925b828410156147565783518252928401929084019061473d565b80955050505050509250929050565b81810381811115610e1257610e126144cb565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600083516147b0818460208801613bfc565b8351908301906147c4818360208801613bfc565b01949350505050565b600061ffff8088168352808716602084015250846040830152608060608301526147fb60808301848661451a565b979650505050505050565b61ffff8616815260806020820152600061482460808301868861451a565b6001600160401b0394909416604083015250606001529392505050565b6001600160401b0383111561485857614858613d3c565b61486c836148668354614481565b83614561565b6000601f8411600181146148a057600085156148885750838201355b600019600387901b1c1916600186901b178355610f2c565b600083815260209020601f19861690835b828110156148d157868501358255602094850194600190920191016148b1565b50868210156148ee5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600081518084526020808501945080840160005b8381101561493057815187529582019590820190600101614914565b509495945050505050565b60408152600061494e6040830185613c20565b82810360208401526149608185614900565b95945050505050565b61ffff861681526001600160a01b038516602082015260a06040820152600061499560a0830186613c20565b841515606084015282810360808401526149af8185613c20565b98975050505050505050565b600080604083850312156149ce57600080fd5b505080516020909101519092909150565b6000602082840312156149f157600080fd5b81516001600160401b03811115614a0757600080fd5b6121c184828501614666565b61ffff85168152608060208201526000614a306080830186613c20565b6001600160401b038516604084015282810360608401526147fb8185613c20565b600060208284031215614a6357600080fd5b81516119ba81613e07565b634e487b7160e01b600052603260045260246000fd5b600060018201614a9657614a966144cb565b5060010190565b60008251614aaf818460208701613bfc565b9190910192915050565b6020815260006119ba6020830184614900565b8281526040602082015260006121c16040830184613c20565b80820180821115610e1257610e126144cb565b61ffff8616815260a060208201526000614b1560a0830187613c20565b6001600160401b03861660408401528281036060840152614b368186613c20565b905082810360808401526149af8185613c20565b600081614b5957614b596144cb565b506000190190565b61ffff8716815260c060208201526000614b7e60c0830188613c20565b8281036040840152614b908188613c20565b6001600160a01b0387811660608601528616608085015283810360a08501529050614bbb8185613c20565b9998505050505050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527f63656976657220696d706c656d656e7465720000000000000000000000000000606082015260800190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152614c576080830184613c20565b9695505050505050565b600060208284031215614c7357600080fd5b81516119ba81613bc956fea26469706673582212207b10a0f93274a3da2995321b4eeb81a879170566003f7c6b54ca2569697a522964736f6c6343000813003300000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd67500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000eaf9f533871b07b151883908b4fb6eef4b51a95f000000000000000000000000eaf9f533871b07b151883908b4fb6eef4b51a95f000000000000000000000000000000000000000000000000000000000000005968747470733a2f2f626166796265696670687a747678636c7371346372776576656c7a6c706272737565756e74697363666535663576337870646e79337935683379752e697066732e6e667473746f726167652e6c696e6b2f00000000000000