0x608060405234801561001057600080fd5b506140d1806100206000396000f3fe6080604052600436106101c25760003560e01c80638fc59014116100f7578063bd9cabc011610095578063d693a2b311610064578063d693a2b31461060b578063ee7d72b414610648578063f2fde38b14610671578063f68016b71461069a576101c2565b8063bd9cabc014610577578063c3b37a9b146105a0578063d547741f146105cb578063d5b014c3146105f4576101c2565b8063a217fddf116100d1578063a217fddf146104e1578063a5b3abfb1461050c578063a5cac63314610535578063b346a4d41461054c576101c2565b80638fc590141461043c57806391d1485414610467578063926e8c03146104a4576101c2565b806354fd4d501161016457806380cefab71161013e57806380cefab71461038d57806385572ffb146103b85780638da5cb5b146103e15780638eac3cef1461040c576101c2565b806354fd4d501461030e5780635c60c03414610339578063715018a614610376576101c2565b80632f2ff15d116101a05780632f2ff15d1461026a578063340835151461029357806336568abe146102bc578063485cc955146102e5576101c2565b806301ffc9a7146101c757806317fd1e2f14610204578063248a9ca31461022d575b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e99190612380565b6106c5565b6040516101fb91906123c8565b60405180910390f35b34801561021057600080fd5b5061022b60048036038101906102269190612477565b610797565b005b34801561023957600080fd5b50610254600480360381019061024f91906124ed565b610822565b6040516102619190612529565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612544565b610850565b005b34801561029f57600080fd5b506102ba60048036038101906102b591906125f0565b610872565b005b3480156102c857600080fd5b506102e360048036038101906102de9190612544565b6108e0565b005b3480156102f157600080fd5b5061030c60048036038101906103079190612630565b61095b565b005b34801561031a57600080fd5b50610323610afc565b604051610330919061267f565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190612d83565b610b09565b60405161036d919061267f565b60405180910390f35b34801561038257600080fd5b5061038b610b2a565b005b34801561039957600080fd5b506103a2610b3e565b6040516103af9190612529565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da9190612e5a565b610b62565b005b3480156103ed57600080fd5b506103f6610e33565b6040516104039190612eb2565b60405180910390f35b61042660048036038101906104219190612ecd565b610e6b565b6040516104339190612529565b60405180910390f35b34801561044857600080fd5b5061045161109b565b60405161045e9190612529565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190612544565b6110bf565b60405161049b91906123c8565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612f92565b611138565b6040516104d89190612fce565b60405180910390f35b3480156104ed57600080fd5b506104f661115f565b6040516105039190612529565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e9190612477565b611166565b005b34801561054157600080fd5b5061054a6111e1565b005b34801561055857600080fd5b5061056161136f565b60405161056e9190613068565b60405180910390f35b34801561058357600080fd5b5061059e6004803603810190610599919061308a565b6113a8565b005b3480156105ac57600080fd5b506105b5611411565b6040516105c29190613129565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190612544565b611435565b005b34801561060057600080fd5b50610609611457565b005b34801561061757600080fd5b50610632600480360381019061062d9190613144565b6114a8565b60405161063f91906123c8565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612f92565b6114c8565b005b34801561067d57600080fd5b5061069860048036038101906106939190613171565b6114fd565b005b3480156106a657600080fd5b506106af611583565b6040516106bc919061267f565b60405180910390f35b60007f85572ffb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061079057507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b61079f611589565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016107da92919061319e565b6020604051808303816000875af11580156107f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081d91906131dc565b505050565b60008061082d611610565b905080600001600084815260200190815260200160002060010154915050919050565b61085982610822565b61086281611638565b61086c838361164c565b50505050565b7fcc3e15b6937a2f69a6f5452031b5fbab5ab7de91ec2efae0db33241e870e612161089c81611638565b81600260008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6108e861174d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461094c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109568282611755565b505050565b6000610965611857565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156109b35750825b9050600060018367ffffffffffffffff161480156109e8575060003073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156109f6575080155b15610a2d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610a7d5760018560000160086101000a81548160ff0219169083151502179055505b610a856111e1565b610a8d61187f565b610a978787611889565b8315610af35760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610aea9190613244565b60405180910390a15b50505050505050565b60006404b666a819905090565b6000610b18868686868661199c565b90915090508091505095945050505050565b610b32611589565b610b3c60006119c7565b565b7ffb3231be112a9810d87b6e307a1f4ba88b91ae1ffb1f669ad6f3832974c930bc81565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166374b9982c6040518163ffffffff1660e01b8152600401610bb9906132ab565b602060405180830381865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa91906132e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5e90613359565b60405180910390fd5b806020016020810190610c7a9190613144565b600260008267ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610cf057806040517fd79f2ea4000000000000000000000000000000000000000000000000000000008152600401610ce79190612fce565b60405180910390fd5b6000828060400190610d029190613388565b810190610d0f91906133eb565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d769061348a565b60405180910390fd5b600080600080600080610da0898060600190610d9b9190613388565b611a9e565b955095509550955095509550610db4611ae6565b73ffffffffffffffffffffffffffffffffffffffff16634e6de3cc8786888787876040518763ffffffff1660e01b8152600401610df696959493929190613939565b600060405180830381600087803b158015610e1057600080fd5b505af1158015610e24573d6000803e3d6000fd5b50505050505050505050505050565b600080610e3e611b86565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166374b9982c6040518163ffffffff1660e01b8152600401610ec5906139fb565b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0691906132e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90613359565b60405180910390fd5b6000806000610f868a8a8a8a8a8a611bae565b92509250925080341015610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc690613a8d565b60405180910390fd5b610fd7611e5e565b73ffffffffffffffffffffffffffffffffffffffff166396f4e9f98285856040518463ffffffff1660e01b8152600401611012929190613c6b565b60206040518083038185885af1158015611030573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110559190613cb0565b93507f54791b38f3859327992a1ca0590ad3c0f08feba98d1a4f56ab0dca74d203392a846040516110869190612529565b60405180910390a15050509695505050505050565b7fcc3e15b6937a2f69a6f5452031b5fbab5ab7de91ec2efae0db33241e870e612181565b6000806110ca611610565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b60016020528060005260406000206000915054906101000a900467ffffffffffffffff1681565b6000801b81565b61116e611589565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b81526004016111ab93929190613cdd565b600060405180830381600087803b1580156111c557600080fd5b505af11580156111d9573d6000803e3d6000fd5b505050505050565b60006111eb611857565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156112395750825b9050600060018367ffffffffffffffff1614801561126e575060003073ffffffffffffffffffffffffffffffffffffffff163b145b90508115801561127c575080155b156112b3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156113035760018560000160086101000a81548160ff0219169083151502179055505b61130c33611efe565b83156113685760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161135f9190613244565b60405180910390a15b5050505050565b6040518060400160405280600e81526020017f434f4d4d554e4954595f4c49535400000000000000000000000000000000000081525081565b7fcc3e15b6937a2f69a6f5452031b5fbab5ab7de91ec2efae0db33241e870e61216113d281611638565b816001600085815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61143e82610822565b61144781611638565b6114518383611755565b50505050565b61145f611589565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156114a5573d6000803e3d6000fd5b50565b60026020528060005260406000206000915054906101000a900460ff1681565b7fcc3e15b6937a2f69a6f5452031b5fbab5ab7de91ec2efae0db33241e870e61216114f281611638565b816003819055505050565b611505611589565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115775760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161156e9190612eb2565b60405180910390fd5b611580816119c7565b50565b60035481565b61159161174d565b73ffffffffffffffffffffffffffffffffffffffff166115af610e33565b73ffffffffffffffffffffffffffffffffffffffff161461160e576115d261174d565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116059190612eb2565b60405180910390fd5b565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6116498161164461174d565b611f12565b50565b600080611657611610565b905061166384846110bf565b61174157600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116dd61174d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611747565b60009150505b92915050565b600033905090565b600080611760611610565b905061176c84846110bf565b1561184b57600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117e761174d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611851565b60009150505b92915050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611887611f63565b565b600460009054906101000a900460ff16156118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090613d60565b60405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119266000801b8261164c565b506119517fcc3e15b6937a2f69a6f5452031b5fbab5ab7de91ec2efae0db33241e870e61218261164c565b5061197c7fcc3e15b6937a2f69a6f5452031b5fbab5ab7de91ec2efae0db33241e870e61213361164c565b506001600460006101000a81548160ff0219169083151502179055505050565b60006119a6612170565b60006119b6338989898989611bae565b925092509250955095509592505050565b60006119d1611b86565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60006060600080611aad6121b5565b611ab561228d565b8787810190611ac49190613d80565b809650819750829850839950849a50859b505050505050509295509295509295565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166374b9982c6040518163ffffffff1660e01b8152600401611b40906139fb565b602060405180830381865afa158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8191906132e0565b905090565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b6000611bb8612170565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166374b9982c6040518060400160405280600e81526020017f434f4d4d554e4954595f4c4953540000000000000000000000000000000000008152506040518263ffffffff1660e01b8152600401611c499190613068565b602060405180830381865afa158015611c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8a91906132e0565b905060008173ffffffffffffffffffffffffffffffffffffffff1663d0f4a5378a6040518263ffffffff1660e01b8152600401611cc79190613e61565b600060405180830381865afa158015611ce4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d0d9190613f01565b50509050600089828a8e8b8b604051602001611d2e96959493929190613f70565b6040516020818303038152906040529050600160008c815260200190815260200160002060009054906101000a900467ffffffffffffffff1695506000611d73611e5e565b90506000604051806040016040528060035481526020016001151581525090506000611d9e82611fa3565b9050611dcc30604051602001611db49190612eb2565b60405160208183030381529060405285836000612022565b97508273ffffffffffffffffffffffffffffffffffffffff166320487ded8a8a6040518363ffffffff1660e01b8152600401611e09929190613c6b565b602060405180830381865afa158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a9190613ffb565b965050505050505096509650969350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166374b9982c6040518163ffffffff1660e01b8152600401611eb8906132ab565b602060405180830381865afa158015611ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef991906132e0565b905090565b611f06611f63565b611f0f816120ca565b50565b611f1c82826110bf565b611f5f5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611f56929190614028565b60405180910390fd5b5050565b611f6b612150565b611fa1576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60606397a657c960e01b82604051602401611fbe9190614080565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050919050565b61202a612170565b60008067ffffffffffffffff811115612046576120456126ec565b5b60405190808252806020026020018201604052801561207f57816020015b61206c6122e4565b8152602001906001900390816120645790505b5090506040518060a001604052808781526020018681526020018281526020018473ffffffffffffffffffffffffffffffffffffffff16815260200185815250915050949350505050565b6120d2611f63565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121445760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161213b9190612eb2565b60405180910390fd5b61214d816119c7565b50565b600061215a611857565b60000160089054906101000a900460ff16905090565b6040518060a00160405280606081526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60405180610260016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081526020016060815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600015158152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180610140016040528060008152602001600081526020016060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081526020016000151581525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61235d81612328565b811461236857600080fd5b50565b60008135905061237a81612354565b92915050565b6000602082840312156123965761239561231e565b5b60006123a48482850161236b565b91505092915050565b60008115159050919050565b6123c2816123ad565b82525050565b60006020820190506123dd60008301846123b9565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061240e826123e3565b9050919050565b61241e81612403565b811461242957600080fd5b50565b60008135905061243b81612415565b92915050565b6000819050919050565b61245481612441565b811461245f57600080fd5b50565b6000813590506124718161244b565b92915050565b6000806040838503121561248e5761248d61231e565b5b600061249c8582860161242c565b92505060206124ad85828601612462565b9150509250929050565b6000819050919050565b6124ca816124b7565b81146124d557600080fd5b50565b6000813590506124e7816124c1565b92915050565b6000602082840312156125035761250261231e565b5b6000612511848285016124d8565b91505092915050565b612523816124b7565b82525050565b600060208201905061253e600083018461251a565b92915050565b6000806040838503121561255b5761255a61231e565b5b6000612569858286016124d8565b925050602061257a8582860161242c565b9150509250929050565b600067ffffffffffffffff82169050919050565b6125a181612584565b81146125ac57600080fd5b50565b6000813590506125be81612598565b92915050565b6125cd816123ad565b81146125d857600080fd5b50565b6000813590506125ea816125c4565b92915050565b600080604083850312156126075761260661231e565b5b6000612615858286016125af565b9250506020612626858286016125db565b9150509250929050565b600080604083850312156126475761264661231e565b5b60006126558582860161242c565b92505060206126668582860161242c565b9150509250929050565b61267981612441565b82525050565b60006020820190506126946000830184612670565b92915050565b600063ffffffff82169050919050565b6126b38161269a565b81146126be57600080fd5b50565b6000813590506126d0816126aa565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612724826126db565b810181811067ffffffffffffffff82111715612743576127426126ec565b5b80604052505050565b6000612756612314565b9050612762828261271b565b919050565b600080fd5b600080fd5b600067ffffffffffffffff82111561278c5761278b6126ec565b5b602082029050602081019050919050565b600080fd5b60006127ad826123e3565b9050919050565b6127bd816127a2565b81146127c857600080fd5b50565b6000813590506127da816127b4565b92915050565b60006127f36127ee84612771565b61274c565b905080838252602082019050602084028301858111156128165761281561279d565b5b835b8181101561283f578061282b88826127cb565b845260208401935050602081019050612818565b5050509392505050565b600082601f83011261285e5761285d61276c565b5b813561286e8482602086016127e0565b91505092915050565b600067ffffffffffffffff821115612892576128916126ec565b5b602082029050602081019050919050565b600061ffff82169050919050565b6128ba816128a3565b81146128c557600080fd5b50565b6000813590506128d7816128b1565b92915050565b60006128f06128eb84612877565b61274c565b905080838252602082019050602084028301858111156129135761291261279d565b5b835b8181101561293c578061292888826128c8565b845260208401935050602081019050612915565b5050509392505050565b600082601f83011261295b5761295a61276c565b5b813561296b8482602086016128dd565b91505092915050565b6000610260828403121561298b5761298a6126d6565b5b61299661026061274c565b905060006129a684828501612462565b60008301525060206129ba8482850161242c565b602083015250604082013567ffffffffffffffff8111156129de576129dd612767565b5b6129ea84828501612849565b604083015250606082013567ffffffffffffffff811115612a0e57612a0d612767565b5b612a1a84828501612946565b6060830152506080612a2e84828501612462565b60808301525060a0612a4284828501612462565b60a08301525060c0612a5684828501612462565b60c08301525060e0612a6a84828501612462565b60e083015250610100612a7f84828501612462565b61010083015250610120612a9584828501612462565b61012083015250610140612aab84828501612462565b61014083015250610160612ac184828501612462565b61016083015250610180612ad784828501612462565b610180830152506101a0612aed84828501612462565b6101a0830152506101c0612b038482850161242c565b6101c0830152506101e0612b1984828501612462565b6101e083015250610200612b2f848285016125db565b61020083015250610220612b45848285016125db565b61022083015250610240612b5b8482850161242c565b6102408301525092915050565b600080fd5b600067ffffffffffffffff821115612b8857612b876126ec565b5b612b91826126db565b9050602081019050919050565b82818337600083830152505050565b6000612bc0612bbb84612b6d565b61274c565b905082815260208101848484011115612bdc57612bdb612b68565b5b612be7848285612b9e565b509392505050565b600082601f830112612c0457612c0361276c565b5b8135612c14848260208601612bad565b91505092915050565b60006101408284031215612c3457612c336126d6565b5b612c3f61014061274c565b90506000612c4f84828501612462565b6000830152506020612c6384828501612462565b602083015250604082013567ffffffffffffffff811115612c8757612c86612767565b5b612c9384828501612bef565b604083015250606082013567ffffffffffffffff811115612cb757612cb6612767565b5b612cc384828501612bef565b606083015250608082013567ffffffffffffffff811115612ce757612ce6612767565b5b612cf384828501612bef565b60808301525060a082013567ffffffffffffffff811115612d1757612d16612767565b5b612d2384828501612bef565b60a08301525060c0612d37848285016125db565b60c08301525060e0612d4b84828501612462565b60e083015250610100612d6084828501612462565b61010083015250610120612d76848285016125db565b6101208301525092915050565b600080600080600060a08688031215612d9f57612d9e61231e565b5b6000612dad88828901612462565b9550506020612dbe888289016126c1565b9450506040612dcf888289016126c1565b935050606086013567ffffffffffffffff811115612df057612def612323565b5b612dfc88828901612974565b925050608086013567ffffffffffffffff811115612e1d57612e1c612323565b5b612e2988828901612c1d565b9150509295509295909350565b600080fd5b600060a08284031215612e5157612e50612e36565b5b81905092915050565b600060208284031215612e7057612e6f61231e565b5b600082013567ffffffffffffffff811115612e8e57612e8d612323565b5b612e9a84828501612e3b565b91505092915050565b612eac81612403565b82525050565b6000602082019050612ec76000830184612ea3565b92915050565b60008060008060008060c08789031215612eea57612ee961231e565b5b6000612ef889828a0161242c565b9650506020612f0989828a01612462565b9550506040612f1a89828a016126c1565b9450506060612f2b89828a016126c1565b935050608087013567ffffffffffffffff811115612f4c57612f4b612323565b5b612f5889828a01612974565b92505060a087013567ffffffffffffffff811115612f7957612f78612323565b5b612f8589828a01612c1d565b9150509295509295509295565b600060208284031215612fa857612fa761231e565b5b6000612fb684828501612462565b91505092915050565b612fc881612584565b82525050565b6000602082019050612fe36000830184612fbf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613023578082015181840152602081019050613008565b60008484015250505050565b600061303a82612fe9565b6130448185612ff4565b9350613054818560208601613005565b61305d816126db565b840191505092915050565b60006020820190508181036000830152613082818461302f565b905092915050565b600080604083850312156130a1576130a061231e565b5b60006130af85828601612462565b92505060206130c0858286016125af565b9150509250929050565b6000819050919050565b60006130ef6130ea6130e5846123e3565b6130ca565b6123e3565b9050919050565b6000613101826130d4565b9050919050565b6000613113826130f6565b9050919050565b61312381613108565b82525050565b600060208201905061313e600083018461311a565b92915050565b60006020828403121561315a5761315961231e565b5b6000613168848285016125af565b91505092915050565b6000602082840312156131875761318661231e565b5b60006131958482850161242c565b91505092915050565b60006040820190506131b36000830185612ea3565b6131c06020830184612670565b9392505050565b6000815190506131d6816125c4565b92915050565b6000602082840312156131f2576131f161231e565b5b6000613200848285016131c7565b91505092915050565b6000819050919050565b600061322e61322961322484613209565b6130ca565b612584565b9050919050565b61323e81613213565b82525050565b60006020820190506132596000830184613235565b92915050565b7f434349505f524f55544552000000000000000000000000000000000000000000600082015250565b6000613295600b83612ff4565b91506132a08261325f565b602082019050919050565b600060208201905081810360008301526132c481613288565b9050919050565b6000815190506132da81612415565b92915050565b6000602082840312156132f6576132f561231e565b5b6000613304848285016132cb565b91505092915050565b7f50726f6a65637420427269646765203a20556e617574686f7269736564000000600082015250565b6000613343601d83612ff4565b915061334e8261330d565b602082019050919050565b6000602082019050818103600083015261337281613336565b9050919050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126133a5576133a4613379565b5b80840192508235915067ffffffffffffffff8211156133c7576133c661337e565b5b6020830192506001820236038313156133e3576133e2613383565b5b509250929050565b6000602082840312156134015761340061231e565b5b600061340f848285016127cb565b91505092915050565b7f50726f6a65637420427269646765203a20494e56414c49445f524f4f545f534560008201527f4e44455200000000000000000000000000000000000000000000000000000000602082015250565b6000613474602483612ff4565b915061347f82613418565b604082019050919050565b600060208201905081810360008301526134a381613467565b9050919050565b6134b38161269a565b82525050565b6134c281612441565b82525050565b6134d181612403565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61350c816127a2565b82525050565b600061351e8383613503565b60208301905092915050565b6000602082019050919050565b6000613542826134d7565b61354c81856134e2565b9350613557836134f3565b8060005b8381101561358857815161356f8882613512565b975061357a8361352a565b92505060018101905061355b565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135ca816128a3565b82525050565b60006135dc83836135c1565b60208301905092915050565b6000602082019050919050565b600061360082613595565b61360a81856135a0565b9350613615836135b1565b8060005b8381101561364657815161362d88826135d0565b9750613638836135e8565b925050600181019050613619565b5085935050505092915050565b61365c816123ad565b82525050565b60006102608301600083015161367b60008601826134b9565b50602083015161368e60208601826134c8565b50604083015184820360408601526136a68282613537565b915050606083015184820360608601526136c082826135f5565b91505060808301516136d560808601826134b9565b5060a08301516136e860a08601826134b9565b5060c08301516136fb60c08601826134b9565b5060e083015161370e60e08601826134b9565b506101008301516137236101008601826134b9565b506101208301516137386101208601826134b9565b5061014083015161374d6101408601826134b9565b506101608301516137626101608601826134b9565b506101808301516137776101808601826134b9565b506101a083015161378c6101a08601826134b9565b506101c08301516137a16101c08601826134c8565b506101e08301516137b66101e08601826134b9565b506102008301516137cb610200860182613653565b506102208301516137e0610220860182613653565b506102408301516137f56102408601826134c8565b508091505092915050565b600082825260208201905092915050565b600061381c82612fe9565b6138268185613800565b9350613836818560208601613005565b61383f816126db565b840191505092915050565b60006101408301600083015161386360008601826134b9565b50602083015161387660208601826134b9565b506040830151848203604086015261388e8282613811565b915050606083015184820360608601526138a88282613811565b915050608083015184820360808601526138c28282613811565b91505060a083015184820360a08601526138dc8282613811565b91505060c08301516138f160c0860182613653565b5060e083015161390460e08601826134b9565b506101008301516139196101008601826134b9565b5061012083015161392e610120860182613653565b508091505092915050565b600060c08201905061394e60008301896134aa565b61395b60208301886134aa565b818103604083015261396d818761302f565b905061397c6060830186612ea3565b818103608083015261398e8185613662565b905081810360a08301526139a2818461384a565b9050979650505050505050565b7f50524f4a4543545f464143544f52590000000000000000000000000000000000600082015250565b60006139e5600f83612ff4565b91506139f0826139af565b602082019050919050565b60006020820190508181036000830152613a14816139d8565b9050919050565b7f50726f6a656374204272696467653a20696e73756666696369656e742076616c60008201527f75652073656e7400000000000000000000000000000000000000000000000000602082015250565b6000613a77602783612ff4565b9150613a8282613a1b565b604082019050919050565b60006020820190508181036000830152613aa681613a6a565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ad482613aad565b613ade8185613ab8565b9350613aee818560208601613005565b613af7816126db565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b604082016000820151613b4460008501826134c8565b506020820151613b5760208501826134b9565b50505050565b6000613b698383613b2e565b60408301905092915050565b6000602082019050919050565b6000613b8d82613b02565b613b978185613b0d565b9350613ba283613b1e565b8060005b83811015613bd3578151613bba8882613b5d565b9750613bc583613b75565b925050600181019050613ba6565b5085935050505092915050565b600060a0830160008301518482036000860152613bfd8282613ac9565b91505060208301518482036020860152613c178282613ac9565b91505060408301518482036040860152613c318282613b82565b9150506060830151613c4660608601826134c8565b5060808301518482036080860152613c5e8282613ac9565b9150508091505092915050565b6000604082019050613c806000830185612fbf565b8181036020830152613c928184613be0565b90509392505050565b600081519050613caa816124c1565b92915050565b600060208284031215613cc657613cc561231e565b5b6000613cd484828501613c9b565b91505092915050565b6000606082019050613cf26000830186612ea3565b613cff6020830185612ea3565b613d0c6040830184612670565b949350505050565b7f416c726561647920696e697469616c6973656400000000000000000000000000600082015250565b6000613d4a601383612ff4565b9150613d5582613d14565b602082019050919050565b60006020820190508181036000830152613d7981613d3d565b9050919050565b60008060008060008060c08789031215613d9d57613d9c61231e565b5b6000613dab89828a016126c1565b965050602087013567ffffffffffffffff811115613dcc57613dcb612323565b5b613dd889828a01612bef565b9550506040613de989828a016126c1565b9450506060613dfa89828a016127cb565b935050608087013567ffffffffffffffff811115613e1b57613e1a612323565b5b613e2789828a01612974565b92505060a087013567ffffffffffffffff811115613e4857613e47612323565b5b613e5489828a01612c1d565b9150509295509295509295565b6000602082019050613e7660008301846134aa565b92915050565b6000613e8f613e8a84612b6d565b61274c565b905082815260208101848484011115613eab57613eaa612b68565b5b613eb6848285613005565b509392505050565b600082601f830112613ed357613ed261276c565b5b8151613ee3848260208601613e7c565b91505092915050565b600081519050613efb816126aa565b92915050565b600080600060608486031215613f1a57613f1961231e565b5b600084015167ffffffffffffffff811115613f3857613f37612323565b5b613f4486828701613ebe565b9350506020613f55868287016132cb565b9250506040613f6686828701613eec565b9150509250925092565b600060c082019050613f8560008301896134aa565b8181036020830152613f97818861302f565b9050613fa660408301876134aa565b613fb36060830186612ea3565b8181036080830152613fc58185613662565b905081810360a0830152613fd9818461384a565b9050979650505050505050565b600081519050613ff58161244b565b92915050565b6000602082840312156140115761401061231e565b5b600061401f84828501613fe6565b91505092915050565b600060408201905061403d6000830185612ea3565b61404a602083018461251a565b9392505050565b60408201600082015161406760008501826134b9565b50602082015161407a6020850182613653565b50505050565b60006040820190506140956000830184614051565b9291505056fea2646970667358221220b02aa01679daeae51c8c1200326e614d3bf553341b2a41640e65573e6d068b6064736f6c63430008140033