6080604052348015600e575f5ffd5b50613f368061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610155575f3560e01c8063862440e2116100c1578063c4d66de81161007a578063c4d66de814610389578063c87b56dd146103a5578063e985e9c5146103d5578063f242432a14610405578063f2fde38b14610421578063f43bea061461043d57610155565b8063862440e2146102dd5780638da5cb5b146102f957806395d89b41146103175780639c20551314610335578063a22cb46514610351578063bd0b0d161461036d57610155565b80632eb2c2d6116101135780632eb2c2d6146102415780634e1273f41461025d5780635c975abb1461028d5780635d1439bb146102ab57806363b0e66a146102b5578063715018a6146102d357610155565b8062fdd58e1461015957806301ffc9a71461018957806306fdde03146101b95780630e89341c146101d757806316c38b3c146102075780632c4e591b14610223575b5f5ffd5b610173600480360381019061016e9190612766565b610459565b60405161018091906127b3565b60405180910390f35b6101a3600480360381019061019e9190612821565b6104bc565b6040516101b09190612866565b60405180910390f35b6101c161059d565b6040516101ce91906128ef565b60405180910390f35b6101f160048036038101906101ec919061290f565b610629565b6040516101fe91906128ef565b60405180910390f35b610221600480360381019061021c9190612964565b6106c9565b005b61022b6106ed565b60405161023891906127b3565b60405180910390f35b61025b60048036038101906102569190612b7f565b6106f3565b005b61027760048036038101906102729190612d0a565b6107af565b6040516102849190612e37565b60405180910390f35b6102956108b9565b6040516102a29190612866565b60405180910390f35b6102b36108cb565b005b6102bd6109c0565b6040516102ca9190612eb2565b60405180910390f35b6102db6109e4565b005b6102f760048036038101906102f29190612f69565b6109f7565b005b610301610a7e565b60405161030e9190612fd2565b60405180910390f35b61031f610ab3565b60405161032c91906128ef565b60405180910390f35b61034f600480360381019061034a9190613022565b610b3f565b005b61036b60048036038101906103669190613060565b610d76565b005b6103876004803603810190610382919061309e565b610d8c565b005b6103a3600480360381019061039e919061309e565b610ed7565b005b6103bf60048036038101906103ba919061290f565b6111e4565b6040516103cc91906128ef565b60405180910390f35b6103ef60048036038101906103ea91906130c9565b61127f565b6040516103fc9190612866565b60405180910390f35b61041f600480360381019061041a9190613107565b61131b565b005b61043b6004803603810190610436919061309e565b6113d7565b005b6104576004803603810190610452919061319a565b61145b565b005b5f5f610463611526565b9050805f015f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061059657506105958261154d565b5b9050919050565b600180546105aa90613233565b80601f01602080910402602001604051908101604052809291908181526020018280546105d690613233565b80156106215780601f106105f857610100808354040283529160200191610621565b820191905f5260205f20905b81548152906001019060200180831161060457829003601f168201915b505050505081565b60605f610634611526565b905080600201805461064590613233565b80601f016020809104026020016040519081016040528092919081815260200182805461067190613233565b80156106bc5780601f10610693576101008083540402835291602001916106bc565b820191905f5260205f20905b81548152906001019060200180831161069f57829003601f168201915b5050505050915050919050565b6106d16115b6565b8060035f6101000a81548160ff02191690831515021790555050565b60045481565b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561075b57505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561079b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610792906132f9565b60405180910390fd5b6107a8858585858561163d565b5050505050565b606081518351146107fb57815183516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016107f2929190613317565b60405180910390fd5b5f835167ffffffffffffffff81111561081757610816612993565b5b6040519080825280602002602001820160405280156108455781602001602082028036833780820191505090505b5090505f5f90505b84518110156108ae5761088461086c828761173190919063ffffffff16565b61087f838761174490919063ffffffff16565b610459565b8282815181106108975761089661333e565b5b60200260200101818152505080600101905061084d565b508091505092915050565b60035f9054906101000a900460ff1681565b60016108e6336103e86004546108e19190613398565b610459565b10610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d9061343b565b60405180910390fd5b5f600190505b6004548111610993575f6109403383610459565b11610980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610977906134c9565b60405180910390fd5b808061098b906134e7565b91505061092c565b506109be336103e86004546109a89190613398565b600160405180602001604052805f815250611757565b565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ec6115b6565b6109f55f6117ec565b565b6109ff6115b6565b5f81604051602001610a1191906135fc565b60405160208183030381529060405290508060055f8581526020019081526020015f209081610a4091906137bf565b50827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b82604051610a7191906128ef565b60405180910390a2505050565b5f5f610a886118bd565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60028054610ac090613233565b80601f0160208091040260200160405190810160405280929190818152602001828054610aec90613233565b8015610b375780601f10610b0e57610100808354040283529160200191610b37565b820191905f5260205f20905b815481529060010190602001808311610b1a57829003601f168201915b505050505081565b8161ffff1660035f9054906101000a900460ff1615610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a906138d8565b60405180910390fd5b5f8103610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90613940565b60405180910390fd5b5f610be03383610459565b14610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c17906139ce565b60405180910390fd5b5f8361ffff16118015610c3957506004548361ffff1611155b610c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6f90613a36565b60405180910390fd5b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662357fb78484336040518463ffffffff1660e01b8152600401610cd493929190613a63565b602060405180830381865afa158015610cef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d139190613aac565b610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613b21565b60405180910390fd5b610d71338461ffff16600160405180602001604052805f815250611757565b505050565b610d88610d816118e4565b83836118eb565b5050565b610d946115b6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df990613b89565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b11db0396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eaa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ece9190613bbb565b60048190555050565b5f610ee0611a62565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff16148015610f285750825b90505f60018367ffffffffffffffff16148015610f5b57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610f69575080155b15610fa0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610fed576001855f0160086101000a81548160ff0219169083151502179055505b61100460405180602001604052805f815250611a89565b61100d33611a9d565b5f60035f6101000a81548160ff0219169083151502179055506040518060400160405280600d81526020017f536f6c69646974795175657374000000000000000000000000000000000000008152506001908161106a91906137bf565b506040518060400160405280600381526020017f5153540000000000000000000000000000000000000000000000000000000000815250600290816110af91906137bf565b50855f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b11db0396040518163ffffffff1660e01b8152600401602060405180830381865afa158015611158573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117c9190613bbb565b60048190555083156111dc575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516111d39190613c32565b60405180910390a15b505050505050565b6005602052805f5260405f205f91509050805461120090613233565b80601f016020809104026020016040519081016040528092919081815260200182805461122c90613233565b80156112775780601f1061124e57610100808354040283529160200191611277565b820191905f5260205f20905b81548152906001019060200180831161125a57829003601f168201915b505050505081565b5f5f611289611526565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561138357505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba906132f9565b60405180910390fd5b6113d08585858585611ab1565b5050505050565b6113df6115b6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361144f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016114469190612fd2565b60405180910390fd5b611458816117ec565b50565b6114636115b6565b5f83836114709190613c4b565b90505f5f90505b8181101561151f575f8361148a87611bb7565b60405160200161149b929190613cc8565b60405160208183030381529060405290508060055f8881526020019081526020015f2090816114ca91906137bf565b50857f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516114fb91906128ef565b60405180910390a2858061150e906134e7565b965050508080600101915050611477565b5050505050565b5f7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6115be6118e4565b73ffffffffffffffffffffffffffffffffffffffff166115dc610a7e565b73ffffffffffffffffffffffffffffffffffffffff161461163b576115ff6118e4565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116329190612fd2565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116ad575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016116a49190612fd2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361171d575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016117149190612fd2565b60405180910390fd5b61172a8585858585611c81565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036117c7575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016117be9190612fd2565b60405180910390fd5b5f5f6117d38585611d2d565b915091506117e45f87848487611c81565b505050505050565b5f6117f56118bd565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f33905090565b5f6118f4611526565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611966575f6040517fced3e10000000000000000000000000000000000000000000000000000000000815260040161195d9190612fd2565b60405180910390fd5b81816001015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3184604051611a549190612866565b60405180910390a350505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611a91611d5d565b611a9a81611d9d565b50565b611aa5611d5d565b611aae81611db1565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b21575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611b189190612fd2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611b91575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611b889190612fd2565b60405180910390fd5b5f5f611b9d8585611d2d565b91509150611bae8787848487611c81565b50505050505050565b60605f6001611bc584611e35565b0190505f8167ffffffffffffffff811115611be357611be2612993565b5b6040519080825280601f01601f191660200182016040528015611c155781602001600182028036833780820191505090505b5090505f82602001820190505b600115611c76578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611c6b57611c6a613d0c565b5b0494505f8503611c22575b819350505050919050565b611c8d85858585611f86565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d26575f611cc96118e4565b90506001845103611d15575f611ce85f8661174490919063ffffffff16565b90505f611cfe5f8661174490919063ffffffff16565b9050611d0e83898985858961232b565b5050611d24565b611d238187878787876124da565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b611d65612689565b611d9b576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611da5611d5d565b611dae816126a7565b50565b611db9611d5d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e29575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611e209190612fd2565b60405180910390fd5b611e32816117ec565b50565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611e91577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611e8757611e86613d0c565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611ece576d04ee2d6d415b85acef81000000008381611ec457611ec3613d0c565b5b0492506020810190505b662386f26fc100008310611efd57662386f26fc100008381611ef357611ef2613d0c565b5b0492506010810190505b6305f5e1008310611f26576305f5e1008381611f1c57611f1b613d0c565b5b0492506008810190505b6127108310611f4b576127108381611f4157611f40613d0c565b5b0492506004810190505b60648310611f6e5760648381611f6457611f63613d0c565b5b0492506002810190505b600a8310611f7d576001810190505b80915050919050565b5f611f8f611526565b90508151835114611fdb57825182516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611fd2929190613317565b60405180910390fd5b5f611fe46118e4565b90505f5f90505b84518110156121e9575f612008828761174490919063ffffffff16565b90505f61201e838761174490919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614612145575f855f015f8481526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120ef57898183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016120e69493929190613d39565b60405180910390fd5b818103865f015f8581526020019081526020015f205f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146121dc5780855f015f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546121d49190613398565b925050819055505b5050806001019050611feb565b5060018451036122a4575f6122075f8661174490919063ffffffff16565b90505f61221d5f8661174490919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612295929190613317565b60405180910390a45050612323565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161231a929190613d7c565b60405180910390a45b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156124d2578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161238b959493929190613e03565b6020604051808303815f875af19250505080156123c657506040513d601f19601f820116820180604052508101906123c39190613e6f565b60015b612447573d805f81146123f4576040519150601f19603f3d011682016040523d82523d5f602084013e6123f9565b606091505b505f81510361243f57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016124369190612fd2565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146124d057846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016124c79190612fd2565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115612681578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161253a959493929190613e9a565b6020604051808303815f875af192505050801561257557506040513d601f19601f820116820180604052508101906125729190613e6f565b60015b6125f6573d805f81146125a3576040519150601f19603f3d011682016040523d82523d5f602084013e6125a8565b606091505b505f8151036125ee57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016125e59190612fd2565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461267f57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016126769190612fd2565b60405180910390fd5b505b505050505050565b5f612692611a62565b5f0160089054906101000a900460ff16905090565b5f6126b0611526565b9050818160020190816126c391906137bf565b505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612702826126d9565b9050919050565b612712816126f8565b811461271c575f5ffd5b50565b5f8135905061272d81612709565b92915050565b5f819050919050565b61274581612733565b811461274f575f5ffd5b50565b5f813590506127608161273c565b92915050565b5f5f6040838503121561277c5761277b6126d1565b5b5f6127898582860161271f565b925050602061279a85828601612752565b9150509250929050565b6127ad81612733565b82525050565b5f6020820190506127c65f8301846127a4565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612800816127cc565b811461280a575f5ffd5b50565b5f8135905061281b816127f7565b92915050565b5f60208284031215612836576128356126d1565b5b5f6128438482850161280d565b91505092915050565b5f8115159050919050565b6128608161284c565b82525050565b5f6020820190506128795f830184612857565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128c18261287f565b6128cb8185612889565b93506128db818560208601612899565b6128e4816128a7565b840191505092915050565b5f6020820190508181035f83015261290781846128b7565b905092915050565b5f60208284031215612924576129236126d1565b5b5f61293184828501612752565b91505092915050565b6129438161284c565b811461294d575f5ffd5b50565b5f8135905061295e8161293a565b92915050565b5f60208284031215612979576129786126d1565b5b5f61298684828501612950565b91505092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6129c9826128a7565b810181811067ffffffffffffffff821117156129e8576129e7612993565b5b80604052505050565b5f6129fa6126c8565b9050612a0682826129c0565b919050565b5f67ffffffffffffffff821115612a2557612a24612993565b5b602082029050602081019050919050565b5f5ffd5b5f612a4c612a4784612a0b565b6129f1565b90508083825260208201905060208402830185811115612a6f57612a6e612a36565b5b835b81811015612a985780612a848882612752565b845260208401935050602081019050612a71565b5050509392505050565b5f82601f830112612ab657612ab561298f565b5b8135612ac6848260208601612a3a565b91505092915050565b5f5ffd5b5f67ffffffffffffffff821115612aed57612aec612993565b5b612af6826128a7565b9050602081019050919050565b828183375f83830152505050565b5f612b23612b1e84612ad3565b6129f1565b905082815260208101848484011115612b3f57612b3e612acf565b5b612b4a848285612b03565b509392505050565b5f82601f830112612b6657612b6561298f565b5b8135612b76848260208601612b11565b91505092915050565b5f5f5f5f5f60a08688031215612b9857612b976126d1565b5b5f612ba58882890161271f565b9550506020612bb68882890161271f565b945050604086013567ffffffffffffffff811115612bd757612bd66126d5565b5b612be388828901612aa2565b935050606086013567ffffffffffffffff811115612c0457612c036126d5565b5b612c1088828901612aa2565b925050608086013567ffffffffffffffff811115612c3157612c306126d5565b5b612c3d88828901612b52565b9150509295509295909350565b5f67ffffffffffffffff821115612c6457612c63612993565b5b602082029050602081019050919050565b5f612c87612c8284612c4a565b6129f1565b90508083825260208201905060208402830185811115612caa57612ca9612a36565b5b835b81811015612cd35780612cbf888261271f565b845260208401935050602081019050612cac565b5050509392505050565b5f82601f830112612cf157612cf061298f565b5b8135612d01848260208601612c75565b91505092915050565b5f5f60408385031215612d2057612d1f6126d1565b5b5f83013567ffffffffffffffff811115612d3d57612d3c6126d5565b5b612d4985828601612cdd565b925050602083013567ffffffffffffffff811115612d6a57612d696126d5565b5b612d7685828601612aa2565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612db281612733565b82525050565b5f612dc38383612da9565b60208301905092915050565b5f602082019050919050565b5f612de582612d80565b612def8185612d8a565b9350612dfa83612d9a565b805f5b83811015612e2a578151612e118882612db8565b9750612e1c83612dcf565b925050600181019050612dfd565b5085935050505092915050565b5f6020820190508181035f830152612e4f8184612ddb565b905092915050565b5f819050919050565b5f612e7a612e75612e70846126d9565b612e57565b6126d9565b9050919050565b5f612e8b82612e60565b9050919050565b5f612e9c82612e81565b9050919050565b612eac81612e92565b82525050565b5f602082019050612ec55f830184612ea3565b92915050565b5f67ffffffffffffffff821115612ee557612ee4612993565b5b612eee826128a7565b9050602081019050919050565b5f612f0d612f0884612ecb565b6129f1565b905082815260208101848484011115612f2957612f28612acf565b5b612f34848285612b03565b509392505050565b5f82601f830112612f5057612f4f61298f565b5b8135612f60848260208601612efb565b91505092915050565b5f5f60408385031215612f7f57612f7e6126d1565b5b5f612f8c85828601612752565b925050602083013567ffffffffffffffff811115612fad57612fac6126d5565b5b612fb985828601612f3c565b9150509250929050565b612fcc816126f8565b82525050565b5f602082019050612fe55f830184612fc3565b92915050565b5f61ffff82169050919050565b61300181612feb565b811461300b575f5ffd5b50565b5f8135905061301c81612ff8565b92915050565b5f5f60408385031215613038576130376126d1565b5b5f6130458582860161300e565b92505060206130568582860161271f565b9150509250929050565b5f5f60408385031215613076576130756126d1565b5b5f6130838582860161271f565b925050602061309485828601612950565b9150509250929050565b5f602082840312156130b3576130b26126d1565b5b5f6130c08482850161271f565b91505092915050565b5f5f604083850312156130df576130de6126d1565b5b5f6130ec8582860161271f565b92505060206130fd8582860161271f565b9150509250929050565b5f5f5f5f5f60a086880312156131205761311f6126d1565b5b5f61312d8882890161271f565b955050602061313e8882890161271f565b945050604061314f88828901612752565b935050606061316088828901612752565b925050608086013567ffffffffffffffff811115613181576131806126d5565b5b61318d88828901612b52565b9150509295509295909350565b5f5f5f606084860312156131b1576131b06126d1565b5b5f6131be86828701612752565b93505060206131cf86828701612752565b925050604084013567ffffffffffffffff8111156131f0576131ef6126d5565b5b6131fc86828701612f3c565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061324a57607f821691505b60208210810361325d5761325c613206565b5b50919050565b7f4e6f6e5472616e7366657261626c65455243313135353a205472616e736665725f8201527f73206265747765656e206e6f6e2d7a65726f206164647265737365732061726560208201527f206e6f7420616c6c6f7765640000000000000000000000000000000000000000604082015250565b5f6132e3604c83612889565b91506132ee82613263565b606082019050919050565b5f6020820190508181035f830152613310816132d7565b9050919050565b5f60408201905061332a5f8301856127a4565b61333760208301846127a4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6133a282612733565b91506133ad83612733565b92508282019050808211156133c5576133c461336b565b5b92915050565b7f596f75206861766520616c7265616479206d696e746564207468652066696e615f8201527f6c204e4654000000000000000000000000000000000000000000000000000000602082015250565b5f613425602583612889565b9150613430826133cb565b604082019050919050565b5f6020820190508181035f83015261345281613419565b9050919050565b7f596f75206e65656420746f206f776e20616c6c2074686520546f6b656e2049445f8201527f7320746f206d696e74207468652066696e616c20636572746966696361746500602082015250565b5f6134b3603f83612889565b91506134be82613459565b604082019050919050565b5f6020820190508181035f8301526134e0816134a7565b9050919050565b5f6134f182612733565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135235761352261336b565b5b600182019050919050565b5f81905092915050565b7f697066733a2f2f000000000000000000000000000000000000000000000000005f82015250565b5f61356c60078361352e565b915061357782613538565b600782019050919050565b5f61358c8261287f565b613596818561352e565b93506135a6818560208601612899565b80840191505092915050565b7f2f000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6135e660018361352e565b91506135f1826135b2565b600182019050919050565b5f61360682613560565b91506136128284613582565b915061361d826135da565b915081905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026136847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613649565b61368e8683613649565b95508019841693508086168417925050509392505050565b5f6136c06136bb6136b684612733565b612e57565b612733565b9050919050565b5f819050919050565b6136d9836136a6565b6136ed6136e5826136c7565b848454613655565b825550505050565b5f5f905090565b6137046136f5565b61370f8184846136d0565b505050565b5b81811015613732576137275f826136fc565b600181019050613715565b5050565b601f8211156137775761374881613628565b6137518461363a565b81016020851015613760578190505b61377461376c8561363a565b830182613714565b50505b505050565b5f82821c905092915050565b5f6137975f198460080261377c565b1980831691505092915050565b5f6137af8383613788565b9150826002028217905092915050565b6137c88261287f565b67ffffffffffffffff8111156137e1576137e0612993565b5b6137eb8254613233565b6137f6828285613736565b5f60209050601f831160018114613827575f8415613815578287015190505b61381f85826137a4565b865550613886565b601f19841661383586613628565b5f5b8281101561385c57848901518255600182019150602085019450602081019050613837565b868310156138795784890151613875601f891682613788565b8355505b6001600288020188555050505b505050505050565b7f54686520636f6e747261637420697320706175736564210000000000000000005f82015250565b5f6138c2601783612889565b91506138cd8261388e565b602082019050919050565b5f6020820190508181035f8301526138ef816138b6565b9050919050565b7f746f6b656e20646f65736e2774206578697374000000000000000000000000005f82015250565b5f61392a601383612889565b9150613935826138f6565b602082019050919050565b5f6020820190508181035f8301526139578161391e565b9050919050565b7f596f7520616c7265616479206f776e206120746f6b656e2077697468207468695f8201527f7320494400000000000000000000000000000000000000000000000000000000602082015250565b5f6139b8602483612889565b91506139c38261395e565b604082019050919050565b5f6020820190508181035f8301526139e5816139ac565b9050919050565b7f496e76616c69642067616d6520494400000000000000000000000000000000005f82015250565b5f613a20600f83612889565b9150613a2b826139ec565b602082019050919050565b5f6020820190508181035f830152613a4d81613a14565b9050919050565b613a5d81612feb565b82525050565b5f606082019050613a765f830186613a54565b613a836020830185612fc3565b613a906040830184612fc3565b949350505050565b5f81519050613aa68161293a565b92915050565b5f60208284031215613ac157613ac06126d1565b5b5f613ace84828501613a98565b91505092915050565b7f6d696e74206661696c65640000000000000000000000000000000000000000005f82015250565b5f613b0b600b83612889565b9150613b1682613ad7565b602082019050919050565b5f6020820190508181035f830152613b3881613aff565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f613b73600f83612889565b9150613b7e82613b3f565b602082019050919050565b5f6020820190508181035f830152613ba081613b67565b9050919050565b5f81519050613bb58161273c565b92915050565b5f60208284031215613bd057613bcf6126d1565b5b5f613bdd84828501613ba7565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f613c1c613c17613c1284613be6565b612e57565b613bef565b9050919050565b613c2c81613c02565b82525050565b5f602082019050613c455f830184613c23565b92915050565b5f613c5582612733565b9150613c6083612733565b9250828203905081811115613c7857613c7761336b565b5b92915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f613cb260058361352e565b9150613cbd82613c7e565b600582019050919050565b5f613cd282613560565b9150613cde8285613582565b9150613ce9826135da565b9150613cf58284613582565b9150613d0082613ca6565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f608082019050613d4c5f830187612fc3565b613d5960208301866127a4565b613d6660408301856127a4565b613d7360608301846127a4565b95945050505050565b5f6040820190508181035f830152613d948185612ddb565b90508181036020830152613da88184612ddb565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f613dd582613db1565b613ddf8185613dbb565b9350613def818560208601612899565b613df8816128a7565b840191505092915050565b5f60a082019050613e165f830188612fc3565b613e236020830187612fc3565b613e3060408301866127a4565b613e3d60608301856127a4565b8181036080830152613e4f8184613dcb565b90509695505050505050565b5f81519050613e69816127f7565b92915050565b5f60208284031215613e8457613e836126d1565b5b5f613e9184828501613e5b565b91505092915050565b5f60a082019050613ead5f830188612fc3565b613eba6020830187612fc3565b8181036040830152613ecc8186612ddb565b90508181036060830152613ee08185612ddb565b90508181036080830152613ef48184613dcb565b9050969550505050505056fea2646970667358221220ab8ffd410149f027f3ae68fcae95e7698b586e14d39b046efe8fc621e020725564736f6c634300081c0033