60806040523480156200001157600080fd5b50604051620038e5380380620038e5833981016040819052620000349162000428565b6201518082858560006200004983826200054d565b5060016200005882826200054d565b5050506001600160a01b0381166200008b57604051636116401160e11b8152600060048201526024015b60405180910390fd5b600880546001600160d01b0316600160d01b65ffffffffffff851602179055620000b76000826200021f565b5050506001600160a01b038216620001055760405163185b3dd360e01b81527f8b6c6286c0797c31808f89bf199131db6bc3e701003939f7576295b7a0457e3b600482015260240162000082565b6001600160a01b038116620001505760405163185b3dd360e01b81527f5f359c21ca373218f37bbcc3e4b5980f83f383a9db2210fa9c19f7112f6c1a88600482015260240162000082565b600b80546001600160a01b0319166001600160a01b038316179055620001977f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6836200021f565b50620001c47f877a78dc988c0ec5f58453b44888a55eb39755c3d5ed8d8ea990912aa3ef29c6826200021f565b5050600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b039290921691909117905550620006199050565b600082620002805760006200023c6009546001600160a01b031690565b6001600160a01b0316146200026457604051631fe1e13d60e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0384161790555b6200028c838362000295565b90505b92915050565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166200033e5760008381526007602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620002f53390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200028f565b5060006200028f565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200036f57600080fd5b81516001600160401b03808211156200038c576200038c62000347565b604051601f8301601f19908116603f01168101908282118183101715620003b757620003b762000347565b8160405283815260209250866020858801011115620003d557600080fd5b600091505b83821015620003f95785820183015181830184015290820190620003da565b6000602085830101528094505050505092915050565b6001600160a01b03811681146200042557600080fd5b50565b600080600080608085870312156200043f57600080fd5b84516001600160401b03808211156200045757600080fd5b62000465888389016200035d565b955060208701519150808211156200047c57600080fd5b506200048b878288016200035d565b93505060408501516200049e816200040f565b6060860151909250620004b1816200040f565b939692955090935050565b600181811c90821680620004d157607f821691505b602082108103620004f257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000548576000816000526020600020601f850160051c81016020861015620005235750805b601f850160051c820191505b8181101562000544578281556001016200052f565b5050505b505050565b81516001600160401b0381111562000569576200056962000347565b62000581816200057a8454620004bc565b84620004f8565b602080601f831160018114620005b95760008415620005a05750858301515b600019600386901b1c1916600185901b17855562000544565b600085815260208120601f198616915b82811015620005ea57888601518255948401946001909101908401620005c9565b5085821015620006095787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6132bc80620006296000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c80638da5cb5b11610146578063bb3bafd6116100c3578063d539139311610087578063d539139314610566578063d547741f1461057b578063d602b9fd1461058e578063e094826b14610596578063e985e9c5146105a7578063f4c00c08146105ba57600080fd5b8063bb3bafd6146104f5578063c87b56dd14610515578063cc8463c814610528578063cefc142914610530578063cf6eefb71461053857600080fd5b8063a217fddf1161010a578063a217fddf1461048d578063a22cb46514610495578063a966a0df146104a8578063adbf3776146104cf578063b88d4fde146104e257600080fd5b80638da5cb5b1461043a578063912349491461044257806391d148541461044b57806395d89b411461045e578063a1eda53c1461046657600080fd5b806336568abe116101df578063649a5ec7116101a3578063649a5ec7146103c05780636ab97bb0146103d35780636b32810b146103ee57806370a082311461040357806384ef8ffc1461041657806388d4fbcf1461042757600080fd5b806336568abe1461035f5780634251921e1461037257806342842e0e14610387578063634e93da1461039a5780636352211e146103ad57600080fd5b8063095ea7b311610226578063095ea7b3146102f95780630aa6220b1461030e57806323b872dd14610316578063248a9ca3146103295780632f2ff15d1461034c57600080fd5b8063010a38f51461026357806301ffc9a71461027a578063022d63fb1461029d57806306fdde03146102b9578063081812fc146102ce575b600080fd5b600a545b6040519081526020015b60405180910390f35b61028d6102883660046125f6565b6105dd565b6040519015158152602001610271565b620697805b60405165ffffffffffff9091168152602001610271565b6102c16105ee565b6040516102719190612663565b6102e16102dc366004612676565b610680565b6040516001600160a01b039091168152602001610271565b61030c6103073660046126a4565b6106a9565b005b61030c6106b8565b61030c6103243660046126d0565b6106ce565b610267610337366004612676565b60009081526007602052604090206001015490565b61030c61035a366004612711565b61075e565b61030c61036d366004612711565b610786565b61037a61082d565b604051610271919061279b565b61030c6103953660046126d0565b610c42565b61030c6103a83660046128b2565b610c62565b6102e16103bb366004612676565b610c76565b61030c6103ce3660046128cf565b610c81565b6103db606481565b60405161ffff9091168152602001610271565b6103f6610c95565b60405161027191906128f7565b6102676104113660046128b2565b610cf6565b6009546001600160a01b03166102e1565b610267610435366004612be7565b610d3e565b6102e1610eee565b6103db6103e881565b61028d610459366004612711565b610f07565b6102c1610f32565b61046e610f41565b6040805165ffffffffffff938416815292909116602083015201610271565b610267600081565b61030c6104a3366004612da9565b610f95565b6102677f877a78dc988c0ec5f58453b44888a55eb39755c3d5ed8d8ea990912aa3ef29c681565b61030c6104dd3660046128b2565b610fa0565b61030c6104f0366004612dde565b611024565b610508610503366004612676565b61103b565b6040516102719190612f06565b6102c1610523366004612676565b611156565b6102a2611267565b61030c6112c6565b610540611306565b604080516001600160a01b03909316835265ffffffffffff909116602083015201610271565b61026760008051602061326783398151915281565b61030c610589366004612711565b611327565b61030c61134f565b600b546001600160a01b03166102e1565b61028d6105b5366004612f19565b611362565b6105cd6105c8366004612f47565b611390565b6040516102719493929190612f69565b60006105e88261146b565b92915050565b6060600080546105fd90612fb7565b80601f016020809104026020016040519081016040528092919081815260200182805461062990612fb7565b80156106765780601f1061064b57610100808354040283529160200191610676565b820191906000526020600020905b81548152906001019060200180831161065957829003601f168201915b5050505050905090565b600061068b82611490565b506000828152600460205260409020546001600160a01b03166105e8565b6106b48282336114c9565b5050565b60006106c3816114d6565b6106cb6114e0565b50565b6001600160a01b0382166106fd57604051633250574960e11b8152600060048201526024015b60405180910390fd5b600061070a8383336114ed565b9050836001600160a01b0316816001600160a01b031614610758576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016106f4565b50505050565b8161077c57604051631fe1e13d60e11b815260040160405180910390fd5b6106b482826115e6565b811580156107a157506009546001600160a01b038281169116145b15610823576000806107b1611306565b90925090506001600160a01b0382161515806107d3575065ffffffffffff8116155b806107e657504265ffffffffffff821610155b1561080e576040516319ca5ebb60e01b815265ffffffffffff821660048201526024016106f4565b50506008805465ffffffffffff60a01b191690555b6106b4828261160b565b6060600d805480602002602001604051908101604052809291908181526020016000905b82821015610c3957838290600052602060002090600602016040518061012001604052908160008201805461088590612fb7565b80601f01602080910402602001604051908101604052809291908181526020018280546108b190612fb7565b80156108fe5780601f106108d3576101008083540402835291602001916108fe565b820191906000526020600020905b8154815290600101906020018083116108e157829003601f168201915b5050505050815260200160018201805461091790612fb7565b80601f016020809104026020016040519081016040528092919081815260200182805461094390612fb7565b80156109905780601f1061096557610100808354040283529160200191610990565b820191906000526020600020905b81548152906001019060200180831161097357829003601f168201915b505050505081526020016002820180546109a990612fb7565b80601f01602080910402602001604051908101604052809291908181526020018280546109d590612fb7565b8015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610afc578382906000526020600020018054610a6f90612fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9b90612fb7565b8015610ae85780601f10610abd57610100808354040283529160200191610ae8565b820191906000526020600020905b815481529060010190602001808311610acb57829003601f168201915b505050505081526020019060010190610a50565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610bd5578382906000526020600020018054610b4890612fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7490612fb7565b8015610bc15780601f10610b9657610100808354040283529160200191610bc1565b820191906000526020600020905b815481529060010190602001808311610ba457829003601f168201915b505050505081526020019060010190610b29565b505050908252506005919091015461ffff808216602080850191909152620100008304909116604084015260ff6401000000008304811615156060850152650100000000009092049091166080909201919091529082526001929092019101610851565b50505050905090565b610c5d83838360405180602001604052806000815250611024565b505050565b6000610c6d816114d6565b6106b48261163e565b60006105e882611490565b6000610c8c816114d6565b6106b4826116b1565b6060600c80548060200260200160405190810160405280929190818152602001828054801561067657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ccf575050505050905090565b60006001600160a01b038216610d22576040516322718ad960e21b8152600060048201526024016106f4565b506001600160a01b031660009081526003602052604090205490565b6000600080516020613267833981519152610d58816114d6565b6000610d6385611722565b90508060ff16606414610d895760405163363f0b6f60e11b815260040160405180910390fd5b6001600a6000828254610d9c9190613007565b9091555050600d8054600181018255600091909152875188916006027fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb501908190610de7908261306a565b5060208201516001820190610dfc908261306a565b5060408201516002820190610e11908261306a565b5060608201518051610e2d916003840191602090910190612420565b5060808201518051610e49916004840191602090910190612420565b5060a08201516005909101805460c084015160e08501516101009095015160ff16650100000000000265ff000000000019951515640100000000029590951665ffff000000001961ffff928316620100000263ffffffff199094169290951691909117919091179290921691909117919091179055600a549250610ecd3384611776565b610ed783896117db565b610ee383878787611824565b505095945050505050565b6000610f026009546001600160a01b031690565b905090565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546105fd90612fb7565b600954600090600160d01b900465ffffffffffff168015158015610f6d57504265ffffffffffff821610155b610f7957600080610f8d565b600954600160a01b900465ffffffffffff16815b915091509091565b6106b433838361198f565b600080516020613267833981519152610fb8816114d6565b610fd060008051602061326783398151915283611a2e565b5050600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b0392909216919091179055565b61102f8484846106ce565b61075884848484611a9d565b604080516060808201835280825260208201526000918101919091526000828152600e6020908152604091829020825181546080938102820184019094526060810184815290939192849284918401828280156110c157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110a3575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561113757602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116111085790505b50505091835250506002919091015461ffff1660209091015292915050565b606061116182611490565b506000828152600660205260408120805461117b90612fb7565b80601f01602080910402602001604051908101604052809291908181526020018280546111a790612fb7565b80156111f45780601f106111c9576101008083540402835291602001916111f4565b820191906000526020600020905b8154815290600101906020018083116111d757829003601f168201915b50505050509050600061121260408051602081019091526000815290565b90508051600003611224575092915050565b81511561125657808260405160200161123e92919061312a565b60405160208183030381529060405292505050919050565b61125f84611bc6565b949350505050565b600954600090600160d01b900465ffffffffffff16801515801561129257504265ffffffffffff8216105b6112ad57600854600160d01b900465ffffffffffff166112c0565b600954600160a01b900465ffffffffffff165b91505090565b60006112d0611306565b509050336001600160a01b038216146112fe57604051636116401160e11b81523360048201526024016106f4565b6106cb611c3a565b6008546001600160a01b03811691600160a01b90910465ffffffffffff1690565b8161134557604051631fe1e13d60e11b815260040160405180910390fd5b6106b48282611cd3565b600061135a816114d6565b6106cb611cf8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600f60205281600052604060002081815481106113ac57600080fd5b9060005260206000209060040201600091509150508060000180546113d090612fb7565b80601f01602080910402602001604051908101604052809291908181526020018280546113fc90612fb7565b80156114495780601f1061141e57610100808354040283529160200191611449565b820191906000526020600020905b81548152906001019060200180831161142c57829003601f168201915b5050505060018301546002840154600390940154929360ff9091169290915084565b60006001600160e01b031982166318a4c3c360e11b14806105e857506105e882611d03565b6000818152600260205260408120546001600160a01b0316806105e857604051637e27328960e01b8152600481018490526024016106f4565b610c5d8383836001611d28565b6106cb8133611e2e565b6114eb600080611e67565b565b6000828152600260205260408120546001600160a01b039081169083161561151a5761151a818486611f27565b6001600160a01b0381161561155857611537600085600080611d28565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611587576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600082815260076020526040902060010154611601816114d6565b6107588383611a2e565b6001600160a01b03811633146116345760405163334bd91960e11b815260040160405180910390fd5b610c5d8282611f8b565b6000611648611267565b61165142611fc8565b61165b9190613159565b90506116678282611fff565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b60006116bc8261207e565b6116c542611fc8565b6116cf9190613159565b90506116db8282611e67565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b91015b60405180910390a15050565b600080805b83518160ff16101561176f57838160ff168151811061174857611748613178565b60200260200101518261175b919061318e565b915080611767816131a7565b915050611727565b5092915050565b6001600160a01b0382166117a057604051633250574960e11b8152600060048201526024016106f4565b60006117ae838360006114ed565b90506001600160a01b03811615610c5d576040516339e3563760e11b8152600060048201526024016106f4565b60008281526006602052604090206117f3828261306a565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790602001611716565b600d548411156118475760405163f11a788b60e01b815260040160405180910390fd5b82516000036118695760405163ace94de160e01b815260040160405180910390fd5b825182511461188a57604051622a283b60e91b815260040160405180910390fd5b606461ffff821610806118a257506103e861ffff8216115b156118c057604051630d92f03760e01b815260040160405180910390fd5b60408051606081018252848152602080820185905261ffff8416828401526000878152600e82529290922081518051929391926119009284920190612472565b50602082810151805161191992600185019201906124d3565b50604091820151600291909101805461ffff191661ffff9283161790558151606081018352858152602081018590529083168183015290517f0d340c93e552f10565aaebe4ff9febec8ce2b8a00fd30e6af5ec27b0579e85c3916119819187919033906131c6565b60405180910390a150505050565b6001600160a01b0382166119c157604051630b61174360e31b81526001600160a01b03831660048201526024016106f4565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600082611a8c576000611a496009546001600160a01b031690565b6001600160a01b031614611a7057604051631fe1e13d60e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0384161790555b611a9683836120c6565b9392505050565b6001600160a01b0383163b1561075857604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611adf9033908890879087906004016131f7565b6020604051808303816000875af1925050508015611b1a575060408051601f3d908101601f19168201909252611b179181019061322a565b60015b611b83573d808015611b48576040519150601f19603f3d011682016040523d82523d6000602084013e611b4d565b606091505b508051600003611b7b57604051633250574960e11b81526001600160a01b03851660048201526024016106f4565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611bbf57604051633250574960e11b81526001600160a01b03851660048201526024016106f4565b5050505050565b6060611bd182611490565b506000611be960408051602081019091526000815290565b90506000815111611c095760405180602001604052806000815250611a96565b80611c138461215a565b604051602001611c2492919061312a565b6040516020818303038152906040529392505050565b600080611c45611306565b91509150611c5a8165ffffffffffff16151590565b1580611c6e57504265ffffffffffff821610155b15611c96576040516319ca5ebb60e01b815265ffffffffffff821660048201526024016106f4565b611cb26000611cad6009546001600160a01b031690565b611f8b565b50611cbe600083611a2e565b5050600880546001600160d01b031916905550565b600082815260076020526040902060010154611cee816114d6565b6107588383611f8b565b6114eb600080611fff565b60006001600160e01b03198216637965db0b60e01b14806105e857506105e8826121ed565b8080611d3c57506001600160a01b03821615155b15611dfe576000611d4c84611490565b90506001600160a01b03831615801590611d785750826001600160a01b0316816001600160a01b031614155b8015611d8b5750611d898184611362565b155b15611db45760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016106f4565b8115611dfc5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b611e388282610f07565b6106b45760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016106f4565b600954600160d01b900465ffffffffffff168015611eea574265ffffffffffff82161015611ec057600954600880546001600160d01b0316600160a01b90920465ffffffffffff16600160d01b02919091179055611eea565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec590600090a15b50600980546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b611f32838383612212565b610c5d576001600160a01b038316611f6057604051637e27328960e01b8152600481018290526024016106f4565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016106f4565b600082158015611fa857506009546001600160a01b038381169116145b15611fbe57600980546001600160a01b03191690555b611a968383612275565b600065ffffffffffff821115611ffb576040516306dfcc6560e41b815260306004820152602481018390526044016106f4565b5090565b6000612009611306565b6008805465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617179055915061204b90508165ffffffffffff16151590565b15610c5d576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510990600090a1505050565b600080612089611267565b90508065ffffffffffff168365ffffffffffff16116120b1576120ac8382613247565b611a96565b611a9665ffffffffffff8416620697806122e2565b60006120d28383610f07565b6121525760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561210a3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e8565b5060006105e8565b60606000612167836122f8565b600101905060008167ffffffffffffffff81111561218757612187612944565b6040519080825280601f01601f1916602001820160405280156121b1576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846121bb57509392505050565b60006001600160e01b03198216632483248360e11b14806105e857506105e8826123d0565b60006001600160a01b0383161580159061125f5750826001600160a01b0316846001600160a01b0316148061224c575061224c8484611362565b8061125f5750506000908152600460205260409020546001600160a01b03908116911614919050565b60006122818383610f07565b156121525760008381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e8565b60008183106122f15781611a96565b5090919050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106123375772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612363576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061238157662386f26fc10000830492506010015b6305f5e1008310612399576305f5e100830492506008015b61271083106123ad57612710830492506004015b606483106123bf576064830492506002015b600a83106105e85760010192915050565b60006001600160e01b031982166380ac58cd60e01b148061240157506001600160e01b03198216635b5e139f60e01b145b806105e857506301ffc9a760e01b6001600160e01b03198316146105e8565b828054828255906000526020600020908101928215612466579160200282015b828111156124665782518290612456908261306a565b5091602001919060010190612440565b50611ffb929150612574565b8280548282559060005260206000209081019282156124c7579160200282015b828111156124c757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612492565b50611ffb929150612591565b82805482825590600052602060002090601f016020900481019282156124c75791602002820160005b8382111561253a57835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026124fc565b80156125675782816101000a81549060ff021916905560010160208160000104928301926001030261253a565b5050611ffb929150612591565b80821115611ffb57600061258882826125a6565b50600101612574565b5b80821115611ffb5760008155600101612592565b5080546125b290612fb7565b6000825580601f106125c2575050565b601f0160209004906000526020600020908101906106cb9190612591565b6001600160e01b0319811681146106cb57600080fd5b60006020828403121561260857600080fd5b8135611a96816125e0565b60005b8381101561262e578181015183820152602001612616565b50506000910152565b6000815180845261264f816020860160208601612613565b601f01601f19169290920160200192915050565b602081526000611a966020830184612637565b60006020828403121561268857600080fd5b5035919050565b6001600160a01b03811681146106cb57600080fd5b600080604083850312156126b757600080fd5b82356126c28161268f565b946020939093013593505050565b6000806000606084860312156126e557600080fd5b83356126f08161268f565b925060208401356127008161268f565b929592945050506040919091013590565b6000806040838503121561272457600080fd5b8235915060208301356127368161268f565b809150509250929050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561278e57601f1986840301895261277c838351612637565b98840198925090830190600101612760565b5090979650505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156128a457603f19898403018552815161012081518186526127eb82870182612637565b915050888201518582038a8701526128038282612637565b915050878201518582038987015261281b8282612637565b915050606080830151868303828801526128358382612741565b92505050608080830151868303828801526128508382612741565b9250505060a0808301516128698288018261ffff169052565b505060c08281015161ffff169086015260e0808301511515908601526101009182015160ff16919094015293860193908601906001016127c4565b509098975050505050505050565b6000602082840312156128c457600080fd5b8135611a968161268f565b6000602082840312156128e157600080fd5b813565ffffffffffff81168114611a9657600080fd5b6020808252825182820181905260009190848201906040850190845b818110156129385783516001600160a01b031683529284019291840191600101612913565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff8111828210171561297e5761297e612944565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156129ad576129ad612944565b604052919050565b600067ffffffffffffffff8311156129cf576129cf612944565b6129e2601f8401601f1916602001612984565b90508281528383830111156129f657600080fd5b828260208301376000602084830101529392505050565b600082601f830112612a1e57600080fd5b611a96838335602085016129b5565b600067ffffffffffffffff821115612a4757612a47612944565b5060051b60200190565b600082601f830112612a6257600080fd5b81356020612a77612a7283612a2d565b612984565b82815260059290921b84018101918181019086841115612a9657600080fd5b8286015b84811015612ad657803567ffffffffffffffff811115612aba5760008081fd5b612ac88986838b0101612a0d565b845250918301918301612a9a565b509695505050505050565b803561ffff81168114612af357600080fd5b919050565b80358015158114612af357600080fd5b803560ff81168114612af357600080fd5b600082601f830112612b2a57600080fd5b81356020612b3a612a7283612a2d565b8083825260208201915060208460051b870101935086841115612b5c57600080fd5b602086015b84811015612ad6578035612b748161268f565b8352918301918301612b61565b600082601f830112612b9257600080fd5b81356020612ba2612a7283612a2d565b8083825260208201915060208460051b870101935086841115612bc457600080fd5b602086015b84811015612ad657612bda81612b08565b8352918301918301612bc9565b600080600080600060a08688031215612bff57600080fd5b853567ffffffffffffffff80821115612c1757600080fd5b612c2389838a01612a0d565b96506020880135915080821115612c3957600080fd5b90870190610120828a031215612c4e57600080fd5b612c5661295a565b823582811115612c6557600080fd5b612c718b828601612a0d565b825250602083013582811115612c8657600080fd5b612c928b828601612a0d565b602083015250604083013582811115612caa57600080fd5b612cb68b828601612a0d565b604083015250606083013582811115612cce57600080fd5b612cda8b828601612a51565b606083015250608083013582811115612cf257600080fd5b612cfe8b828601612a51565b608083015250612d1060a08401612ae1565b60a0820152612d2160c08401612ae1565b60c0820152612d3260e08401612af8565b60e0820152610100612d45818501612b08565b9082015295506040880135915080821115612d5f57600080fd5b612d6b89838a01612b19565b94506060880135915080821115612d8157600080fd5b50612d8e88828901612b81565b925050612d9d60808701612ae1565b90509295509295909350565b60008060408385031215612dbc57600080fd5b8235612dc78161268f565b9150612dd560208401612af8565b90509250929050565b60008060008060808587031215612df457600080fd5b8435612dff8161268f565b93506020850135612e0f8161268f565b925060408501359150606085013567ffffffffffffffff811115612e3257600080fd5b8501601f81018713612e4357600080fd5b612e52878235602084016129b5565b91505092959194509250565b805160608084528151908401819052600091602091908201906080860190845b81811015612ea35783516001600160a01b031683529284019291840191600101612e7e565b50508483015186820387850152805180835290840192506000918401905b80831015612ee457835160ff168252928401926001929092019190840190612ec1565b5060408601519350612efc604088018561ffff169052565b9695505050505050565b602081526000611a966020830184612e5e565b60008060408385031215612f2c57600080fd5b8235612f378161268f565b915060208301356127368161268f565b60008060408385031215612f5a57600080fd5b50508035926020909101359150565b608081526000612f7c6080830187612637565b905060038510612f9c57634e487b7160e01b600052602160045260246000fd5b84602083015283604083015282606083015295945050505050565b600181811c90821680612fcb57607f821691505b602082108103612feb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105e8576105e8612ff1565b601f821115610c5d576000816000526020600020601f850160051c810160208610156130435750805b601f850160051c820191505b818110156130625782815560010161304f565b505050505050565b815167ffffffffffffffff81111561308457613084612944565b613098816130928454612fb7565b8461301a565b602080601f8311600181146130cd57600084156130b55750858301515b600019600386901b1c1916600185901b178555613062565b600085815260208120601f198616915b828110156130fc578886015182559484019460019091019084016130dd565b508582101561311a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000835161313c818460208801612613565b835190830190613150818360208801612613565b01949350505050565b65ffffffffffff81811683821601908082111561176f5761176f612ff1565b634e487b7160e01b600052603260045260246000fd5b60ff81811683821601908111156105e8576105e8612ff1565b600060ff821660ff81036131bd576131bd612ff1565b60010192915050565b8381526060602082015260006131df6060830185612e5e565b905060018060a01b0383166040830152949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612efc90830184612637565b60006020828403121561323c57600080fd5b8151611a96816125e0565b65ffffffffffff82811682821603908082111561176f5761176f612ff156fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220d516df074949536b2f667b8c763fe791a99c960cdad18cdbaf912879d9c0192b64736f6c63430008180033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000e37edea065cbe405d10a0d717238177438339c16000000000000000000000000672e0f86a37004888cfa8ffd823a26920c50e0a500000000000000000000000000000000000000000000000000000000000000094e4c655072696e63650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4e4c455052494e4345204e465400000000000000000000000000000000000000