0x6080604052600436106101d85760003560e01c80636b2ace8711610102578063b3a2b2cf11610095578063e30c397811610064578063e30c397814610731578063e985e9c51461075e578063e9d163c914610799578063f2428621146107e457600080fd5b8063b3a2b2cf146106b5578063b88d4fde146106d5578063c87b56dd146106f5578063e256888f1461071557600080fd5b806395d89b41116100d157806395d89b4114610640578063a203db8e14610655578063a22cb46514610675578063ac9650d81461069557600080fd5b80636b2ace871461059257806370a08231146105c65780637192711f146105f35780638da5cb5b1461061357600080fd5b806323b872dd1161017a578063489bb0b211610149578063489bb0b2146103af5780634e71e0c8146103c257806351def556146103d75780636352211e1461054f57600080fd5b806323b872dd146103395780632bcea7361461035957806340e76eff1461036f57806342842e0e1461038f57600080fd5b806307d88aad116101b657806307d88aad14610256578063081812fc146102a8578063095ea7b3146102eb57806319f771711461030b57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063078dfbe714610234575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612c41565b610818565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b506102276108fd565b6040516102099190612cd4565b34801561024057600080fd5b5061025461024f366004612d1e565b61098b565b005b34801561026257600080fd5b506008546102839073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610209565b3480156102b457600080fd5b506102836102c3366004612d63565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f757600080fd5b50610254610306366004612d7c565b610b7c565b34801561031757600080fd5b5061032b610326366004612d63565b610cc6565b604051908152602001610209565b34801561034557600080fd5b50610254610354366004612da8565b610ded565b34801561036557600080fd5b5061032b600a5481565b34801561037b57600080fd5b5061025461038a366004612de9565b6110b4565b34801561039b57600080fd5b506102546103aa366004612da8565b6113c2565b6102546103bd366004612e76565b611527565b3480156103ce57600080fd5b506102546115f4565b3480156103e357600080fd5b506104d06103f2366004612d63565b600960205260009081526040902080546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff928316939282169263ffffffff740100000000000000000000000000000000000000008404811693780100000000000000000000000000000000000000000000000081048216937c0100000000000000000000000000000000000000000000000000000000909104821692918216916fffffffffffffffffffffffffffffffff640100000000909104811691808216917001000000000000000000000000000000009091041689565b6040805173ffffffffffffffffffffffffffffffffffffffff9a8b1681529990981660208a015263ffffffff96871697890197909752938516606088015291841660808701529290921660a08501526fffffffffffffffffffffffffffffffff91821660c0850152811660e08401521661010082015261012001610209565b34801561055b57600080fd5b5061028361056a366004612d63565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561059e57600080fd5b506102837f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f581565b3480156105d257600080fd5b5061032b6105e1366004612ed5565b60026020526000908152604090205481565b3480156105ff57600080fd5b5061025461060e366004612ef2565b61170b565b34801561061f57600080fd5b506006546102839073ffffffffffffffffffffffffffffffffffffffff1681565b34801561064c57600080fd5b506102276117d9565b34801561066157600080fd5b50610254610670366004612f22565b6117e6565b34801561068157600080fd5b50610254610690366004612f4e565b611aa9565b6106a86106a3366004612f7a565b611b40565b6040516102099190612fef565b3480156106c157600080fd5b506102546106d0366004612ed5565b611cb2565b3480156106e157600080fd5b506102546106f0366004613133565b611d7a565b34801561070157600080fd5b50610227610710366004612d63565b611ecb565b34801561072157600080fd5b5061032b670de0b6b3a764000081565b34801561073d57600080fd5b506007546102839073ffffffffffffffffffffffffffffffffffffffff1681565b34801561076a57600080fd5b506101fd6107793660046131e2565b600560209081526000928352604080842090915290825290205460ff1681565b6107ac6107a7366004613210565b611f81565b6040805194855260208501939093526fffffffffffffffffffffffffffffffff91821692840192909252166060820152608001610209565b3480156107f057600080fd5b506102837f000000000000000000000000413cefea29f2d07b8f2acfa69d92466b9535f71781565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806108ab57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806108f757507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000805461090a90613229565b80601f016020809104026020016040519081016040528092919081815260200182805461093690613229565b80156109835780601f1061095857610100808354040283529160200191610983565b820191906000526020600020905b81548152906001019060200180831161096657829003601f168201915b505050505081565b60065473ffffffffffffffffffffffffffffffffffffffff163314610a11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b8115610b365773ffffffffffffffffffffffffffffffffffffffff8316151580610a385750805b610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152606401610a08565b60065460405173ffffffffffffffffffffffffffffffffffffffff8086169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600780549091169055505050565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b505050565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480610bdf575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610a08565b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600960209081526040808320815161012081018352815473ffffffffffffffffffffffffffffffffffffffff908116825260018301549081169482019490945263ffffffff74010000000000000000000000000000000000000000850481169382019390935278010000000000000000000000000000000000000000000000008404831660608201527c010000000000000000000000000000000000000000000000000000000090930482166080840152600281015491821660a08401526fffffffffffffffffffffffffffffffff640100000000909204821660c08401526003015480821660e08401527001000000000000000000000000000000009004166101008201819052610ddc82612584565b610de691906132a6565b9392505050565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610e7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610a08565b73ffffffffffffffffffffffffffffffffffffffff8216610efa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610a08565b3373ffffffffffffffffffffffffffffffffffffffff84161480610f41575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610f7c575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b610fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610a08565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526003825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600084815260096020908152604080832060039092529091205473ffffffffffffffffffffffffffffffffffffffff1633811461111d576040517fe1c6117100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546040805161012081018252845473ffffffffffffffffffffffffffffffffffffffff90811682526001860154908116602083015274010000000000000000000000000000000000000000810463ffffffff9081169383019390935278010000000000000000000000000000000000000000000000008104831660608301527c0100000000000000000000000000000000000000000000000000000000900482166080820152600285015491821660a08201526fffffffffffffffffffffffffffffffff640100000000909204821660c082015281831660e082015270010000000000000000000000000000000090920416610100820181905260009161122790612584565b61123191906132a6565b905080611240575050506113bc565b808360030160108282829054906101000a90046fffffffffffffffffffffffffffffffff1661126f91906132bd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506112d68360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630848488612638565b8415611363576040517f330df28200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063330df2829061133090899089906004016132f1565b600060405180830381600087803b15801561134a57600080fd5b505af115801561135e573d6000803e3d6000fd5b505050505b60018301546040518515158152829173ffffffffffffffffffffffffffffffffffffffff169089907fff942d249898505febb2a9a00118e27567c084b9497d0aa3ba5e332c235b4f389060200160405180910390a45050505b50505050565b6113cd838383610ded565b73ffffffffffffffffffffffffffffffffffffffff82163b15806114c157506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015611479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149d919061333e565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610a08565b6040517fc0a47c9300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152306024830152851515604483015260ff851660648301526084820184905260a482018390527f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f5169063c0a47c939060c401600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b505050505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff16338114611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610a08565b60065460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179055600780549091169055565b6000828152600960205260409020805473ffffffffffffffffffffffffffffffffffffffff163314611769576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405184907fca0251ba80971adc7e92434b097ca40450b2a317013c51c5c5cb6ae74500bb0090600090a3505050565b6001805461090a90613229565b600082815260096020908152604091829020825161012081018452815473ffffffffffffffffffffffffffffffffffffffff90811680835260018401549182169483019490945263ffffffff74010000000000000000000000000000000000000000820481169583019590955278010000000000000000000000000000000000000000000000008104851660608301527c0100000000000000000000000000000000000000000000000000000000900484166080820152600282015493841660a08201526fffffffffffffffffffffffffffffffff640100000000909404841660c082015260039091015480841660e08301527001000000000000000000000000000000009004909216610100830152331461192e576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061193982612584565b905060008261010001516fffffffffffffffffffffffffffffffff168261196091906132a6565b90506000828460e001518560a0015163ffffffff1661197f919061335b565b8560c0015161198e91906132bd565b6fffffffffffffffffffffffffffffffff166119aa91906132a6565b600087815260096020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018590556002820180549091169055600390810184905588830151925290912054919250611a2d91309073ffffffffffffffffffffffffffffffffffffffff168589612638565b611a3e846020015130338489612638565b8181877f061c75052be1ee7232bc654d7f489af163c983bb99c5affe5e8fc2e5225cb577876020015189604051611a9992919073ffffffffffffffffffffffffffffffffffffffff9290921682521515602082015260400190565b60405180910390a4505050505050565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60608167ffffffffffffffff811115611b5b57611b5b61306f565b604051908082528060200260200182016040528015611b8e57816020015b6060815260200190600190039081611b795790505b50905060005b82811015611cab5760008030868685818110611bb257611bb2613393565b9050602002810190611bc491906133c2565b604051611bd292919061342e565b600060405180830381855af49150503d8060008114611c0d576040519150601f19603f3d011682016040523d82523d6000602084013e611c12565b606091505b509150915081611c7857604481511015611c2b57600080fd5b60048101905080806020019051810190611c45919061343e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a089190612cd4565b80848481518110611c8b57611c8b613393565b602002602001018190525050508080611ca3906134ac565b915050611b94565b5092915050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611d33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611d85848484610ded565b73ffffffffffffffffffffffffffffffffffffffff83163b1580611e6557506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611dfe9033908990889088906004016134e5565b6020604051808303816000875af1158015611e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e41919061333e565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b6113bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610a08565b6008546040517fc981fac40000000000000000000000000000000000000000000000000000000081526004810183905260609173ffffffffffffffffffffffffffffffffffffffff169063c981fac490602401600060405180830381865afa158015611f3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108f7919081019061343e565b600080808042611f97606087016040880161352e565b63ffffffff161015611fd5576040517f38356e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a7640000611fee60e0870160c08801613554565b6fffffffffffffffffffffffffffffffff161115612038576040517fd276d51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61204860a086016080870161352e565b63ffffffff16158061206d575061206560c0860160a0870161352e565b63ffffffff16155b156120a4576040517fd276d51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120f06120b46020870187612ed5565b33306120c76101008a0160e08b01613554565b6fffffffffffffffffffffffffffffffff166120eb6101208b016101008c01613586565b6127d4565b9350670de0b6b3a76400008461210c60e0880160c08901613554565b6fffffffffffffffffffffffffffffffff1661212891906135a1565b61213291906135de565b915061214460c0860160a0870161352e565b6121549063ffffffff168361335b565b612170906fffffffffffffffffffffffffffffffff16856132a6565b600a80549192506000612182836134ac565b9091555092506121a161219b6040870160208801612ed5565b84612a61565b6040805161012081019091523381526020808201906000906121c590890189612ed5565b73ffffffffffffffffffffffffffffffffffffffff16146121f2576121ed6020880188612ed5565b612214565b7f000000000000000000000000413cefea29f2d07b8f2acfa69d92466b9535f7175b73ffffffffffffffffffffffffffffffffffffffff16815260200161223f606088016040890161352e565b63ffffffff16815260200161225a608088016060890161352e565b63ffffffff16815260200161227560a088016080890161352e565b63ffffffff16815260200161229060c0880160a0890161352e565b63ffffffff90811682526fffffffffffffffffffffffffffffffff80851660208085019190915286821660408086019190915260006060958601819052898152600983528190208651815473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178355888501516001840180548b8701519a8c015160808d01518b167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff918c167801000000000000000000000000000000000000000000000000029190911677ffffffffffffffffffffffffffffffffffffffffffffffff9c8c1674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931694909616939093171799909916929092179190911790965560a087015160028201805460c08a0151871664010000000002981691909616179590951790935560e085015161010090950151821670010000000000000000000000000000000002949091169390931760039092019190915561246891908701908701612ed5565b73ffffffffffffffffffffffffffffffffffffffff1633847f603bb53f65550199ed7346ba18d49bcb7ec77162b3167b272f8cd19b20d9510b6124ae60208a018a612ed5565b6124be60608b0160408c0161352e565b6124ce60808c0160608d0161352e565b6124de60a08d0160808e0161352e565b6124ee60c08e0160a08f0161352e565b898b8f6101000160208101906125049190613586565b6040805173ffffffffffffffffffffffffffffffffffffffff909916895263ffffffff97881660208a0152958716958801959095529285166060870152931660808501526fffffffffffffffffffffffffffffffff92831660a08501529190911660c0830152151560e08201526101000160405180910390a49193509193565b6000808260600151836040015161259b9190613619565b63ffffffff169050804210156125b15750919050565b60006125bd82426132a6565b905060006125ea8560a0015163ffffffff16866080015163ffffffff16846125e591906135de565b612bfa565b9050808560e001516fffffffffffffffffffffffffffffffff1661260e91906135a1565b8560c001516fffffffffffffffffffffffffffffffff1661262f9190613638565b95945050505050565b80156126fb576040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301528481166044830152606482018490527f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f5169063f18d03cc90608401600060405180830381600087803b1580156126de57600080fd5b505af11580156126f2573d6000803e3d6000fd5b505050506127cd565b6040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152848116604483015260006064830152608482018490527f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f516906397da6d309060a40160408051808303816000875af11580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190613650565b50505b5050505050565b6000811561295c576040517fda5139ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201859052600060448301527f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f5169063da5139ca90606401602060405180830381865afa158015612876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289a9190613674565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301528681166044830152606482018390529192507f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f59091169063f18d03cc90608401600060405180830381600087803b15801561293f57600080fd5b505af1158015612953573d6000803e3d6000fd5b5050505061262f565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e43ca1dee3f0fc1e2df73a0745674545f11a59f58116906302b9446c908816156129a95760006129ab565b845b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff808b166004830152808a16602483015288166044820152606481018790526000608482015260a401604080518083038185885af1158015612a31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a569190613650565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610a08565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610a08565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020908152604080832080546001019055848352600390915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818310612c095781610de6565b5090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114612c3e57600080fd5b50565b600060208284031215612c5357600080fd5b8135610de681612c10565b60005b83811015612c79578181015183820152602001612c61565b838111156113bc5750506000910152565b60008151808452612ca2816020860160208601612c5e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610de66020830184612c8a565b73ffffffffffffffffffffffffffffffffffffffff81168114612c3e57600080fd5b80358015158114612d1957600080fd5b919050565b600080600060608486031215612d3357600080fd5b8335612d3e81612ce7565b9250612d4c60208501612d09565b9150612d5a60408501612d09565b90509250925092565b600060208284031215612d7557600080fd5b5035919050565b60008060408385031215612d8f57600080fd5b8235612d9a81612ce7565b946020939093013593505050565b600080600060608486031215612dbd57600080fd5b8335612dc881612ce7565b92506020840135612dd881612ce7565b929592945050506040919091013590565b60008060008060608587031215612dff57600080fd5b84359350602085013567ffffffffffffffff80821115612e1e57600080fd5b818701915087601f830112612e3257600080fd5b813581811115612e4157600080fd5b886020828501011115612e5357600080fd5b602083019550809450505050612e6b60408601612d09565b905092959194509250565b600080600080600060a08688031215612e8e57600080fd5b8535612e9981612ce7565b9450612ea760208701612d09565b9350604086013560ff81168114612ebd57600080fd5b94979396509394606081013594506080013592915050565b600060208284031215612ee757600080fd5b8135610de681612ce7565b60008060408385031215612f0557600080fd5b823591506020830135612f1781612ce7565b809150509250929050565b60008060408385031215612f3557600080fd5b82359150612f4560208401612d09565b90509250929050565b60008060408385031215612f6157600080fd5b8235612f6c81612ce7565b9150612f4560208401612d09565b60008060208385031215612f8d57600080fd5b823567ffffffffffffffff80821115612fa557600080fd5b818501915085601f830112612fb957600080fd5b813581811115612fc857600080fd5b8660208260051b8501011115612fdd57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613062577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613050858351612c8a565b94509285019290850190600101613016565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156130e5576130e561306f565b604052919050565b600067ffffffffffffffff8211156131075761310761306f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000806080858703121561314957600080fd5b843561315481612ce7565b9350602085013561316481612ce7565b925060408501359150606085013567ffffffffffffffff81111561318757600080fd5b8501601f8101871361319857600080fd5b80356131ab6131a6826130ed565b61309e565b8181528860208385010111156131c057600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600080604083850312156131f557600080fd5b823561320081612ce7565b91506020830135612f1781612ce7565b6000610120828403121561322357600080fd5b50919050565b600181811c9082168061323d57607f821691505b60208210811415613223577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156132b8576132b8613277565b500390565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156132e8576132e8613277565b01949350505050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b60006020828403121561335057600080fd5b8151610de681612c10565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561338a5761338a613277565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133f757600080fd5b83018035915067ffffffffffffffff82111561341257600080fd5b60200191503681900382131561342757600080fd5b9250929050565b8183823760009101908152919050565b60006020828403121561345057600080fd5b815167ffffffffffffffff81111561346757600080fd5b8201601f8101841361347857600080fd5b80516134866131a6826130ed565b81815285602083850101111561349b57600080fd5b61262f826020830160208601612c5e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134de576134de613277565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526135246080830184612c8a565b9695505050505050565b60006020828403121561354057600080fd5b813563ffffffff81168114610de657600080fd5b60006020828403121561356657600080fd5b81356fffffffffffffffffffffffffffffffff81168114610de657600080fd5b60006020828403121561359857600080fd5b610de682612d09565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135d9576135d9613277565b500290565b600082613614577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600063ffffffff8083168185168083038211156132e8576132e8613277565b6000821982111561364b5761364b613277565b500190565b6000806040838503121561366357600080fd5b505080516020909101519092909150565b60006020828403121561368657600080fd5b505191905056fea26469706673582212202a59dd659062e64342651647bf46fdb54d61165349d8e0c0c750ae391a97098164736f6c634300080a0033