ZGlmZiAtLWdpdCBhL2xpYnJhcnkvcmFuYXAvUkFOQVBfSUVzLmFzbiBiL2xpYnJhcnkvcmFuYXAvUkFOQVBfSUVzLmFzbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjQ3ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvbGlicmFyeS9yYW5hcC9SQU5BUF9JRXMuYXNuCkBAIC0wLDAgKzEsMjc5NiBAQAorLS0gUkFOQVAtSUVzLmFzbgorLS0KKy0tIDNHUFAgVFMgMjUuNDEzIFYxNC4wLjAgKDIwMTctMDMpCistLSBodHRwOi8vd3d3LjNncHAub3JnL2Z0cC9TcGVjcy9odG1sLWluZm8vMjU0MTMuaHRtCistLQorLS0gOS4zLjQJSW5mb3JtYXRpb24gRWxlbWVudCBEZWZpbml0aW9ucworLS0KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBJbmZvcm1hdGlvbiBFbGVtZW50IERlZmluaXRpb25zCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUkFOQVAtSUVzIHsKK2l0dS10ICgwKSBpZGVudGlmaWVkLW9yZ2FuaXphdGlvbiAoNCkgZXRzaSAoMCkgbW9iaWxlRG9tYWluICgwKQordW10cy1BY2Nlc3MgKDIwKSBtb2R1bGVzICgzKSByYW5hcCAoMCkgdmVyc2lvbjEgKDEpIHJhbmFwLUlFcyAoMikgfQorCitERUZJTklUSU9OUyBBVVRPTUFUSUMgVEFHUyA6Oj0KKworQkVHSU4KKworSU1QT1JUUworCW1heE5yT2ZDU0dzLAorCW1heE5yT2ZFcnJvcnMsCisJbWF4TnJPZlBEUERpcmVjdGlvbnMsCisJbWF4TnJPZlBvaW50cywKKwltYXhOck9mUkFCcywKKwltYXhOck9mU1JCcywKKwltYXhOck9mU2VwYXJhdGVUcmFmZmljRGlyZWN0aW9ucywKKwltYXhSQUItU3ViZmxvd3MsCisJbWF4UkFCLVN1YmZsb3dDb21iaW5hdGlvbiwKKwltYXhOck9mTGV2ZWxzLAorCW1heE5yT2ZBbHRWYWx1ZXMsCisJbWF4TnJPZlNOQXMsCisJbWF4TnJPZkxBcywKKwltYXhOck9mUExNTnNTTiwKKwltYXhTZXQsCisJbWF4TnJPZkhTRFNDSE1BQ2RGbG93cy0xLAorCW1heE5yT2ZVRXNUb0JlVHJhY2VkLAorCW1heE5yT2ZJbnRlcmZhY2VzLAorCW1heG5vb2ZNdWx0aWNhc3RTZXJ2aWNlc1BlclJOQywKKwltYXhNQk1TU0EsCisJbWF4TUJNU1JBLAorCW1heG5vb2ZNdWx0aWNhc3RTZXJ2aWNlc1BlclVFLAorCW1heE5yT2ZFRENITUFDZEZsb3dzLTEsCisJbWF4R0FOU1NTZXQsCisJbWF4TnJPZkVVVFJBRnJlcXMsCisJbWF4TnJPZkNlbGxJZHMsCisJbWF4TnJPZlJBSXMsCisJbWF4TnJPZkxBSXMsCisJbWF4TnJPZlZvbCwKKwltYXhTaXplT2ZJTVNJbmZvLAorCW1heG5vb2ZNRFRQTE1OcywKKwltYXhBZGRQb3NTZXQsCisJbWF4bm9vZlBMTU5zLAorCisJaWQtQ04tRG9tYWluSW5kaWNhdG9yLAorCWlkLU1lc3NhZ2VTdHJ1Y3R1cmUsCisJaWQtU1JCLVRyQ0gtTWFwcGluZywKKwlpZC1UeXBlT2ZFcnJvciwKKwlpZC1oUy1EU0NILU1BQy1kLUZsb3ctSUQsCisJaWQtU2lnbmFsbGluZ0luZGljYXRpb24sCisJaWQtQ2VsbExvYWRJbmZvcm1hdGlvbkdyb3VwLAorCWlkLVRyYWNlUmVjb3JkaW5nU2Vzc2lvbkluZm9ybWF0aW9uLAorCWlkLU1CTVNMaW5raW5nSW5mb3JtYXRpb24sCisJaWQtQWx0ZXJuYXRpdmVSQUJDb25maWd1cmF0aW9uLAorCWlkLUFsdGVybmF0aXZlUkFCQ29uZmlndXJhdGlvblJlcXVlc3QsCisJaWQtRS1EQ0gtTUFDLWQtRmxvdy1JRCwKKwlpZC1SQUMsCisJaWQtQWx0LVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRHdWFyYW50ZWVkQml0cmF0ZUluZiwKKwlpZC1BbHQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZE1heEJpdHJhdGVJbmYsCisJaWQtQXNzLVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRHdWFyYW50ZWVkQml0cmF0ZUxpc3QsCisJaWQtQXNzLVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRNYXhCaXRyYXRlTGlzdCwKKwlpZC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkR3VhcmFudGVlZEJpdHJhdGVMaXN0LAorCWlkLVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRNYXhCaXRyYXRlTGlzdCwKKwlpZC1SZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZE1heEJpdHJhdGVMaXN0LAorCWlkLVJlcXVlc3RlZC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkR3VhcmFudGVlZEJpdHJhdGVMaXN0LAorCWlkLUxBb2ZJZGxlTW9kZVVFcywKKwlpZC1uZXdMQUxpc3RvZklkbGVNb2RlVUVzLAorCWlkLUxBTGlzdHdpdGhOb0lkbGVNb2RlVUVzQW55TW9yZSwKKwlpZC1FeHRlbmRlZFJOQy1JRCwKKwlpZC1HQU5TUy1Qb3NpdGlvbmluZ0RhdGFTZXQsCisJaWQtZC1STlRJLWZvci1Ob0l1Q1NVUCwKKwlpZC1VRS1IaXN0b3J5LUluZm9ybWF0aW9uLAorCWlkLVN1YnNjcmliZXJQcm9maWxlSURmb3JSRlAsCisJaWQtQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkR3VhcmFudGVlZEJpdHJhdGVJbmYsCisJaWQtQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkTWF4Qml0cmF0ZUluZiwKKwlpZC1Bc3MtUkFCLVBhcmFtZXRlci1TdXBwb3J0ZWRHdWFyYW50ZWVkQml0cmF0ZUxpc3QsCisJaWQtQXNzLVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkTWF4Qml0cmF0ZUxpc3QsCisJaWQtUkFCLVBhcmFtZXRlci1TdXBwb3J0ZWRHdWFyYW50ZWVkQml0cmF0ZUxpc3QsCisJaWQtUkFCLVBhcmFtZXRlci1TdXBwb3J0ZWRNYXhCaXRyYXRlTGlzdCwKKwlpZC1SZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1TdXBwb3J0ZWRNYXhCaXRyYXRlTGlzdCwKKwlpZC1SZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1TdXBwb3J0ZWRHdWFyYW50ZWVkQml0cmF0ZUxpc3QsCisJaWQtUFNSQUJ0b2JlUmVwbGFjZWQsCisJaWQtU1JWQ0MtSW5mb3JtYXRpb24sCisJaWQtQ1NHLUlkLAorCWlkLUNTRkItSW5mb3JtYXRpb24sCisJaWQtSVJBVC1NZWFzdXJlbWVudC1Db25maWd1cmF0aW9uLAorCWlkLU1hbmFnZW1lbnQtQmFzZWQtTURULUFsbG93ZWQsCisJaWQtVGltZS1VRS1TdGF5ZWRJbkNlbGwtRW5oYW5jZWRHcmFudWxhcml0eSwKKwlpZC1ITy1DYXVzZSwKKwlpZC1UcmFjZVJlY29yZGluZ1Nlc3Npb25SZWZlcmVuY2UsCisJaWQtSU1TSSwKKwlpZC1NYW5hZ2VtZW50LUJhc2VkLU1EVC1QTE1OLUxpc3QsCisJaWQtU2lnbmFsbGluZ0Jhc2VkTURUUExNTkxpc3QsCisJaWQtTTRSZXBvcnQsCisJaWQtTTVSZXBvcnQsCisJaWQtTTZSZXBvcnQsCisJaWQtTTdSZXBvcnQsCisJaWQtVGltaW5nRGlmZmVyZW5jZVVMREwsCisJaWQtVHJhY2UtQ29sbGVjdGlvbi1FbnRpdHktSVAtQWRkZXNzLAorCWlkLVNlcnZpbmctQ2VsbC1JZGVudGlmaWVyLAorCWlkLUVBUkZDTi1FeHRlbmRlZCwKKwlpZC1MYXN0RS1VVFJBTlBMTU5JZGVudGl0eSwKKwlpZC1SU1JRLVR5cGUsCisJaWQtUlNSUS1FeHRlbnNpb24sCisJaWQtQWRkaXRpb25hbC1Qb3NpdGlvbmluZ0RhdGFTZXQKKworCitGUk9NIFJBTkFQLUNvbnN0YW50cworCisJQ3JpdGljYWxpdHksCisJUHJvY2VkdXJlQ29kZSwKKwlQcm90b2NvbElFLUlELAorCVRyaWdnZXJpbmdNZXNzYWdlCitGUk9NIFJBTkFQLUNvbW1vbkRhdGFUeXBlcworCisJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXJ7fSwKKwlSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04KK0ZST00gUkFOQVAtQ29udGFpbmVyczsKKworLS0gQQorCitBY2N1cmFjeUZ1bGZpbG1lbnRJbmRpY2F0b3IgOjo9IEVOVU1FUkFURUR7CisJcmVxdWVzdGVkLUFjY3VyYWN5LUZ1bGZpbGxlZCwKKwlyZXF1ZXN0ZWQtQWNjdXJhY3ktTm90LUZ1bGZpbGxlZCwKKwkuLi4KK30KKworQWRkaXRpb25hbC1DU1BTLWNvb3JkaW5hdGlvbi1pbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgeworCW9sZC1MQUkJCQkJCUxBSQkJCQkJCQlPUFRJT05BTCwKKwlvbGQtUkFDCQkJCQlSQUMJCQkJCQkJT1BUSU9OQUwsCisJblJJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTApKQkJT1BUSU9OQUwsCisJdUUtaXMtQXR0YWNoaW5nCQkJTlVMTAkJCQkJCU9QVElPTkFMLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtBZGRpdGlvbmFsLUNTUFMtY29vcmRpbmF0aW9uLWluZm9ybWF0aW9uLUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworQWRkaXRpb25hbC1DU1BTLWNvb3JkaW5hdGlvbi1pbmZvcm1hdGlvbi1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0FkZGl0aW9uYWwtUG9zaXRpb25pbmdEYXRhU2V0IDo6PSBTRVFVRU5DRShTSVpFKDEuLm1heEFkZFBvc1NldCkpIE9GIEFkZGl0aW9uYWwtUG9zaXRpb25pbmdNZXRob2RBbmRVc2FnZQorCitBZGRpdGlvbmFsLVBvc2l0aW9uaW5nTWV0aG9kQW5kVXNhZ2UgOjo9IE9DVEVUIFNUUklORyAoU0laRSgxKSkKKworQWxsb2NhdGlvbk9yUmV0ZW50aW9uUHJpb3JpdHkgOjo9IFNFUVVFTkNFIHsKKwlwcmlvcml0eUxldmVsCQkJUHJpb3JpdHlMZXZlbCwKKwlwcmUtZW1wdGlvbkNhcGFiaWxpdHkJCVByZS1lbXB0aW9uQ2FwYWJpbGl0eSwKKwlwcmUtZW1wdGlvblZ1bG5lcmFiaWxpdHkJUHJlLWVtcHRpb25WdWxuZXJhYmlsaXR5LAorCXF1ZXVpbmdBbGxvd2VkCQkJUXVldWluZ0FsbG93ZWQsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge0FsbG9jYXRpb25PclJldGVudGlvblByaW9yaXR5LUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworQWxsb2NhdGlvbk9yUmV0ZW50aW9uUHJpb3JpdHktRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitBbHQtUkFCLVBhcmFtZXRlcnMgOjo9IFNFUVVFTkNFIHsKKwlhbHRNYXhCaXRyYXRlSW5mCQkJQWx0LVJBQi1QYXJhbWV0ZXItTWF4Qml0cmF0ZUluZiAJCQkJCQlPUFRJT05BTCwKKwlhbHRHdWFyYW50ZWVkQml0UmF0ZUluZgkJQWx0LVJBQi1QYXJhbWV0ZXItR3VhcmFudGVlZEJpdHJhdGVJbmYgCQkJCQlPUFRJT05BTCwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7QWx0LVJBQi1QYXJhbWV0ZXJzLUV4dElFc30gfSAJT1BUSU9OQUwsCisJLi4uCit9CisKK0FsdC1SQUItUGFyYW1ldGVycy1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBpbmRpY2F0ZSBhbiBhbHRlcm5hdGl2ZSBSQUIgY29uZmlndXJhdGlvbiAtLQorCXsgSUQgaWQtQWx0ZXJuYXRpdmVSQUJDb25maWd1cmF0aW9uCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFJBQi1QYXJhbWV0ZXJzCVBSRVNFTkNFIG9wdGlvbmFsIH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNyB0byBpbmRpY2F0ZSBhbiBhbHRlcm5hdGl2ZSBsaXN0IG9mIEV4dGVuZGVkIEd1YXJhbnRlZWQgQml0cmF0ZXMgLS0KK3sgSUQgaWQtQWx0LVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRHdWFyYW50ZWVkQml0cmF0ZUluZgkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBBbHQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlSW5mIAlQUkVTRU5DRSBvcHRpb25hbCB9fAorLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDcgdG8gaW5kaWNhdGUgYW4gYWx0ZXJuYXRpdmUgbGlzdCBvZiBFeHRlbmRlZCBNYXhpbXVtIEJpdHJhdGVzIC0tCit7IElEIGlkLUFsdC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkTWF4Qml0cmF0ZUluZgkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBBbHQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZE1heEJpdHJhdGVJbmYgCVBSRVNFTkNFIG9wdGlvbmFsIH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOCB0byBpbmRpY2F0ZSBhbiBhbHRlcm5hdGl2ZSBsaXN0IG9mIFN1cHBvcnRlZCBNYXhpbXVtIEJpdHJhdGVzIC0tCit7IElEIGlkLUFsdC1SQUItUGFyYW1ldGVyLVN1cHBvcnRlZE1heEJpdHJhdGVJbmYJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkTWF4Qml0cmF0ZUluZiAJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIGluZGljYXRlIGFuIGFsdGVybmF0aXZlIGxpc3Qgb2YgU3VwcG9ydGVkIEd1YXJhbnRlZWQgQml0cmF0ZXMgLS0KK3sgSUQgaWQtQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkR3VhcmFudGVlZEJpdHJhdGVJbmYJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkR3VhcmFudGVlZEJpdHJhdGVJbmYgCVBSRVNFTkNFIG9wdGlvbmFsIH0sCisJLi4uCit9CisKK0FsdC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkR3VhcmFudGVlZEJpdHJhdGVJbmYgOjo9IFNFUVVFTkNFIHsKKwlhbHRFeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlVHlwZQkJCUFsdC1SQUItUGFyYW1ldGVyLUd1YXJhbnRlZWRCaXRyYXRlVHlwZSwKKwlhbHRFeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlcwkJCQlBbHQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlcwkJCU9QVElPTkFMCisJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBUeXBlIG9mIEV4dGVuZGVkIEd1YXJhbnRlZWQgQml0IFJhdGVzIEluZm9ybWF0aW9uIElFIGlzIHNldCB0byAiVmFsdWUgcmFuZ2UiIG9yICJEaXNjcmV0ZSB2YWx1ZXMiIC0tLAorCS4uLgorfQorCitBbHQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZBbHRWYWx1ZXMpKSBPRgorCUFsdC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkR3VhcmFudGVlZEJpdHJhdGVMaXN0CisKK0FsdC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkR3VhcmFudGVlZEJpdHJhdGVMaXN0CTo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlNlcGFyYXRlVHJhZmZpY0RpcmVjdGlvbnMpKSBPRiBFeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlCisKK0FsdC1SQUItUGFyYW1ldGVyLUd1YXJhbnRlZWRCaXRyYXRlSW5mIDo6PSBTRVFVRU5DRSB7CisJYWx0R3VhcmFudGVlZEJpdHJhdGVUeXBlCQkJQWx0LVJBQi1QYXJhbWV0ZXItR3VhcmFudGVlZEJpdHJhdGVUeXBlLAorCWFsdEd1YXJhbnRlZWRCaXRyYXRlcwkJCQlBbHQtUkFCLVBhcmFtZXRlci1HdWFyYW50ZWVkQml0cmF0ZXMJCQlPUFRJT05BTAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgVHlwZSBvZiBHdWFyYW50ZWVkIEJpdCBSYXRlcyBJbmZvcm1hdGlvbiBJRSBpcyBzZXQgdG8gIlZhbHVlIHJhbmdlIiBvciAiRGlzY3JldGUgdmFsdWVzIiAtLSwKKwkuLi4KK30KKworQWx0LVJBQi1QYXJhbWV0ZXItR3VhcmFudGVlZEJpdHJhdGVUeXBlIDo6PSBFTlVNRVJBVEVEeworCXVuc3BlY2lmaWVkLAorCXZhbHVlLXJhbmdlLAorCWRpc2NyZXRlLXZhbHVlcywKKwkuLi4KK30KKworQWx0LVJBQi1QYXJhbWV0ZXItR3VhcmFudGVlZEJpdHJhdGVzIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZkFsdFZhbHVlcykpIE9GCisJQWx0LVJBQi1QYXJhbWV0ZXItR3VhcmFudGVlZEJpdHJhdGVMaXN0CisKKworQWx0LVJBQi1QYXJhbWV0ZXItR3VhcmFudGVlZEJpdHJhdGVMaXN0CTo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlNlcGFyYXRlVHJhZmZpY0RpcmVjdGlvbnMpKSBPRiBHdWFyYW50ZWVkQml0cmF0ZQorCitBbHQtUkFCLVBhcmFtZXRlci1TdXBwb3J0ZWRHdWFyYW50ZWVkQml0cmF0ZUluZiA6Oj0gU0VRVUVOQ0UgeworCWFsdFN1cHBvcnRlZEd1YXJhbnRlZWRCaXRyYXRlVHlwZQkJCUFsdC1SQUItUGFyYW1ldGVyLUd1YXJhbnRlZWRCaXRyYXRlVHlwZSwKKwlhbHRTdXBwb3J0ZWRHdWFyYW50ZWVkQml0cmF0ZXMJCQkJQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkR3VhcmFudGVlZEJpdHJhdGVzCQkJT1BUSU9OQUwKKwktLSBUaGlzIElFIHNoYWxsIGJlIHByZXNlbnQgaWYgdGhlIFR5cGUgb2YgU3VwcG9ydGVkIEd1YXJhbnRlZWQgQml0IFJhdGVzIEluZm9ybWF0aW9uIElFIGlzIHNldCB0byAiVmFsdWUgcmFuZ2UiIG9yICJEaXNjcmV0ZSB2YWx1ZXMiIC0tLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkR3VhcmFudGVlZEJpdHJhdGVJbmYtRXh0SUVzfSB9IAlPUFRJT05BTCwKKwkuLi4KK30KKworQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkR3VhcmFudGVlZEJpdHJhdGVJbmYtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworLi4uCit9CisKK0FsdC1SQUItUGFyYW1ldGVyLVN1cHBvcnRlZEd1YXJhbnRlZWRCaXRyYXRlcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZBbHRWYWx1ZXMpKSBPRgorCVN1cHBvcnRlZFJBQi1QYXJhbWV0ZXJCaXRyYXRlTGlzdAorCisKK0FsdC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkTWF4Qml0cmF0ZUluZiA6Oj0gU0VRVUVOQ0UgeworCWFsdEV4dGVuZGVkTWF4Qml0cmF0ZVR5cGUJCQlBbHQtUkFCLVBhcmFtZXRlci1NYXhCaXRyYXRlVHlwZSwKKwlhbHRFeHRlbmRlZE1heEJpdHJhdGVzCQkJCUFsdC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkTWF4Qml0cmF0ZXMJCQlPUFRJT05BTAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgVHlwZSBvZiBFeHRlbmRlZCBBbHRlcm5hdGl2ZSBNYXhpbXVtIEJpdCBSYXRlcyBJbmZvcm1hdGlvbiBJRSBpcyBzZXQgdG8gIlZhbHVlIHJhbmdlIiBvciAiRGlzY3JldGUgdmFsdWVzIiAtLSwKKwkuLi4KK30KKworQWx0LVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRNYXhCaXRyYXRlcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZBbHRWYWx1ZXMpKSBPRgorCUFsdC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkTWF4Qml0cmF0ZUxpc3QKKworQWx0LVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRNYXhCaXRyYXRlTGlzdAk6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZTZXBhcmF0ZVRyYWZmaWNEaXJlY3Rpb25zKSkgT0YgRXh0ZW5kZWRNYXhCaXRyYXRlCisKK0FsdC1SQUItUGFyYW1ldGVyLU1heEJpdHJhdGVJbmYgOjo9IFNFUVVFTkNFIHsKKwlhbHRNYXhCaXRyYXRlVHlwZQkJCUFsdC1SQUItUGFyYW1ldGVyLU1heEJpdHJhdGVUeXBlLAorCWFsdE1heEJpdHJhdGVzCQkJCUFsdC1SQUItUGFyYW1ldGVyLU1heEJpdHJhdGVzCQkJT1BUSU9OQUwKKwktLSBUaGlzIElFIHNoYWxsIGJlIHByZXNlbnQgaWYgdGhlIFR5cGUgb2YgQWx0ZXJuYXRpdmUgTWF4aW11biBCaXQgUmF0ZXMgSW5mb3JtYXRpb24gSUUgaXMgc2V0IHRvICJWYWx1ZSByYW5nZSIgb3IgIkRpc2NyZXRlIHZhbHVlcyIgLS0sCisJLi4uCit9CisKK0FsdC1SQUItUGFyYW1ldGVyLU1heEJpdHJhdGVUeXBlIDo6PSBFTlVNRVJBVEVEeworCXVuc3BlY2lmaWVkLAorCXZhbHVlLXJhbmdlLAorCWRpc2NyZXRlLXZhbHVlcywKKwkuLi4KK30KKworQWx0LVJBQi1QYXJhbWV0ZXItTWF4Qml0cmF0ZXMgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mQWx0VmFsdWVzKSkgT0YKKwlBbHQtUkFCLVBhcmFtZXRlci1NYXhCaXRyYXRlTGlzdAorCisKK0FsdC1SQUItUGFyYW1ldGVyLU1heEJpdHJhdGVMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlNlcGFyYXRlVHJhZmZpY0RpcmVjdGlvbnMpKSBPRiBNYXhCaXRyYXRlCisKKworQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkTWF4Qml0cmF0ZUluZiA6Oj0gU0VRVUVOQ0UgeworCWFsdFN1cHBvcnRlZE1heEJpdHJhdGVUeXBlCQkJQWx0LVJBQi1QYXJhbWV0ZXItTWF4Qml0cmF0ZVR5cGUsCisJYWx0U3VwcG9ydGVkTWF4Qml0cmF0ZXMJCQkJQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkTWF4Qml0cmF0ZXMJCQlPUFRJT05BTAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgVHlwZSBvZiBTdXBwb3J0ZWQgQWx0ZXJuYXRpdmUgTWF4aW11biBCaXQgUmF0ZXMgSW5mb3JtYXRpb24gSUUgaXMgc2V0IHRvICJWYWx1ZSByYW5nZSIgb3IgIkRpc2NyZXRlIHZhbHVlcyIgLS0sCisJIGlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkTWF4Qml0cmF0ZUluZi1FeHRJRXN9IH0gCU9QVElPTkFMLAorLi4uCit9CisKK0FsdC1SQUItUGFyYW1ldGVyLVN1cHBvcnRlZE1heEJpdHJhdGVJbmYtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworLi4uCit9CisKKworQWx0LVJBQi1QYXJhbWV0ZXItU3VwcG9ydGVkTWF4Qml0cmF0ZXMgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mQWx0VmFsdWVzKSkgT0YKKwlTdXBwb3J0ZWRSQUItUGFyYW1ldGVyQml0cmF0ZUxpc3QKKworQWx0ZXJuYXRpdmVSQUJDb25maWd1cmF0aW9uUmVxdWVzdCA6Oj0gRU5VTUVSQVRFRHsKKwlhbHRlcm5hdGl2ZS1SQUItY29uZmlndXJhdGlvbi1SZXF1ZXN0ZWQsCisJLi4uCit9CisKK1VFLUFwcGxpY2F0aW9uLUxheWVyLU1lYXN1cmVtZW50LUNvbmZpZ3VyYXRpb24JOjo9IFNFUVVFTkNFIHsKKwkJYXBwbGljYXRpb25MYXllckNvbnRhaW5lckZvck1lYXN1cmVtZW50Q29uZmlndXJhdGlvbgkJT0NURVQgU1RSSU5HICggU0laRSAoMS4uMTAwMCkpLAorCQlhcmVhU2NvcGVGb3JVRUFwcGxpY2F0aW9uTGF5ZXJNZWFzdXJlbWVudENvbmZpZ3VyYXRpb24JCQkJCUFyZWFTY29wZUZvclVFQXBwbGljYXRpb25MYXllck1lYXN1cmVtZW50Q29uZmlndXJhdGlvbiwKKwkJLi4uCit9CisKK1VFLUFwcGxpY2F0aW9uLUxheWVyLU1lYXN1cmVtZW50LUNvbmZpZ3VyYXRpb24tRm9yLVJlbG9jYXRpb24JOjo9IFNFUVVFTkNFIHsKKwkJYXJlYVNjb3BlRm9yVUVBcHBsaWNhdGlvbkxheWVyTWVhc3VyZW1lbnRDb25maWd1cmF0aW9uCQkJCQlBcmVhU2NvcGVGb3JVRUFwcGxpY2F0aW9uTGF5ZXJNZWFzdXJlbWVudENvbmZpZ3VyYXRpb24sCisJCXRyYWNlUmVmZXJlbmNlCQkJCQkJVHJhY2VSZWZlcmVuY2UsCisJCXRyYWNlUHJvcGFnYXRpb25QYXJhbWV0ZXJzCQkJVHJhY2VQcm9wYWdhdGlvblBhcmFtZXRlcnMgT1BUSU9OQUwsCisJCXRyYWNlQ29sbGVjdGlvbkVudGl0eUlQQWRkcmVzcwkJVHJhbnNwb3J0TGF5ZXJBZGRyZXNzCQkJT1BUSU9OQUwsCisJCS4uLgorfQorCisKK0FQTgk6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxLi4yNTUpKQorLS0gUmVmZXJlbmNlOiAyMy4wMDMKKworQXJlYVNjb3BlRm9yVUVBcHBsaWNhdGlvbkxheWVyTWVhc3VyZW1lbnRDb25maWd1cmF0aW9uIDo6PQlDSE9JQ0UgeworCWNlbGxiYXNlZAkJCUNlbGxCYXNlZCwKKwlsYWJhc2VkCQkJCUxBQmFzZWQsCisJcmFiYXNlZAkJCQlSQUJhc2VkLAorCXBsbW4tYXJlYS1iYXNlZAkJUExNTkJhc2VkLAorCS4uLgorfQorCitBcmVhSWRlbnRpdHkgOjo9IENIT0lDRSB7CisJc0FJCQkJCVNBSSwKKwlnZW9ncmFwaGljYWxBcmVhCQlHZW9ncmFwaGljYWxBcmVhLAorCS4uLgorfQorCitBc3MtUkFCLVBhcmFtZXRlcnMgOjo9IFNFUVVFTkNFIHsKKwlhc3NNYXhCaXRyYXRlSW5mCQkJQXNzLVJBQi1QYXJhbWV0ZXItTWF4Qml0cmF0ZUxpc3QgCQkJCQkJT1BUSU9OQUwsCisJYXNzR3VhcmFudGVlZEJpdFJhdGVJbmYJCUFzcy1SQUItUGFyYW1ldGVyLUd1YXJhbnRlZWRCaXRyYXRlTGlzdCAJCQkJT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge0Fzcy1SQUItUGFyYW1ldGVycy1FeHRJRXN9IH0gCU9QVElPTkFMLAorCS4uLgorfQorCitBc3MtUkFCLVBhcmFtZXRlcnMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDcgdG8gaW5kaWNhdGUgYW4gZXh0ZW5kZWQgYXNzaWduZWQgR3VhcmFudGVlZCBCaXRyYXRlIC0tCisJeyBJRCBpZC1Bc3MtUkFCLVBhcmFtZXRlci1FeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlTGlzdAkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBBc3MtUkFCLVBhcmFtZXRlci1FeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlTGlzdCAJIFBSRVNFTkNFIG9wdGlvbmFsIH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNyB0byBpbmRpY2F0ZSBhbiBleHRlbmRlZCBhc3NpZ25lZCBNYXhpbXVtIEJpdHJhdGUgLS0KKwl7IElEIGlkLUFzcy1SQUItUGFyYW1ldGVyLUV4dGVuZGVkTWF4Qml0cmF0ZUxpc3QJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gQXNzLVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRNYXhCaXRyYXRlTGlzdCAJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIGluZGljYXRlIGFuIHN1cHBvcnRlZCBhc3NpZ25lZCBNYXhpbXVtIEJpdHJhdGUgLS0KKwl7IElEIGlkLUFzcy1SQUItUGFyYW1ldGVyLVN1cHBvcnRlZE1heEJpdHJhdGVMaXN0CQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFN1cHBvcnRlZFJBQi1QYXJhbWV0ZXJCaXRyYXRlTGlzdCAJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIGluZGljYXRlIGFuIHN1cHBvcnRlZCBhc3NpZ25lZCBHdWFyYW50ZWVkIEJpdHJhdGUgLS0KKwl7IElEIGlkLUFzcy1SQUItUGFyYW1ldGVyLVN1cHBvcnRlZEd1YXJhbnRlZWRCaXRyYXRlTGlzdAkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBTdXBwb3J0ZWRSQUItUGFyYW1ldGVyQml0cmF0ZUxpc3QJUFJFU0VOQ0Ugb3B0aW9uYWwgfSwKKwkuLi4KK30KKworQXNzLVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRHdWFyYW50ZWVkQml0cmF0ZUxpc3QJOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mU2VwYXJhdGVUcmFmZmljRGlyZWN0aW9ucykpIE9GIEV4dGVuZGVkR3VhcmFudGVlZEJpdHJhdGUKKworQXNzLVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRNYXhCaXRyYXRlTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZTZXBhcmF0ZVRyYWZmaWNEaXJlY3Rpb25zKSkgT0YgRXh0ZW5kZWRNYXhCaXRyYXRlCisKKworQXNzLVJBQi1QYXJhbWV0ZXItR3VhcmFudGVlZEJpdHJhdGVMaXN0CTo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlNlcGFyYXRlVHJhZmZpY0RpcmVjdGlvbnMpKSBPRiBHdWFyYW50ZWVkQml0cmF0ZQorCisKK0Fzcy1SQUItUGFyYW1ldGVyLU1heEJpdHJhdGVMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlNlcGFyYXRlVHJhZmZpY0RpcmVjdGlvbnMpKSBPRiBNYXhCaXRyYXRlCisKK0F1dGhvcmlzZWRQTE1OcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZQTE1Oc1NOKSkgT0YKKwlTRVFVRU5DRSB7CisJCXBMTU5pZGVudGl0eQkJCVBMTU5pZGVudGl0eSwKKwkJYXV0aG9yaXNlZFNOQXNMaXN0CQlBdXRob3Jpc2VkU05BcwkJT1BUSU9OQUwsCisJCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtBdXRob3Jpc2VkUExNTnMtRXh0SUVzfSB9IE9QVElPTkFMLAorCQkuLi4KKwl9CisKK0F1dGhvcmlzZWRQTE1Ocy1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0F1dGhvcmlzZWRTTkFzIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlNOQXMpKSBPRiBTTkFDCisKKworLS0gQgorCitCYXJvbWV0cmljUHJlc3N1cmUgOjo9IElOVEVHRVIgKDMwMDAwLi4xMTUwMDApCisKK0JpbmRpbmdJRAkJCQk6Oj0gT0NURVQgU1RSSU5HIChTSVpFICg0KSkKKworQnJvYWRjYXN0QXNzaXN0YW5jZURhdGFEZWNpcGhlcmluZ0tleXMJOjo9IFNFUVVFTkNFIHsKKwljaXBoZXJpbmdLZXlGbGFnCQlCSVQgU1RSSU5HIChTSVpFICgxKSksCisJY3VycmVudERlY2lwaGVyaW5nS2V5CUJJVCBTVFJJTkcgKFNJWkUgKDU2KSksCisJbmV4dERlY2lwaGVyaW5nS2V5CQlCSVQgU1RSSU5HIChTSVpFICg1NikpLAorCS4uLgorfQorCistLSBDCisKKworQ2F1c2UgOjo9IENIT0lDRSB7CisJcmFkaW9OZXR3b3JrCQkJQ2F1c2VSYWRpb05ldHdvcmssCisJdHJhbnNtaXNzaW9uTmV0d29yawkJQ2F1c2VUcmFuc21pc3Npb25OZXR3b3JrLAorCW5BUwkJCQlDYXVzZU5BUywKKwlwcm90b2NvbAkJCUNhdXNlUHJvdG9jb2wsCisJbWlzYwkJCQlDYXVzZU1pc2MsCisJbm9uLVN0YW5kYXJkCQkJQ2F1c2VOb24tU3RhbmRhcmQsCisJLi4uLAorCXJhZGlvTmV0d29ya0V4dGVuc2lvbglDYXVzZVJhZGlvTmV0d29ya0V4dGVuc2lvbgorfQorCitDYXVzZU1pc2MgOjo9IElOVEVHRVIgeworCW9tLWludGVydmVudGlvbiAoMTEzKSwKKwluby1yZXNvdXJjZS1hdmFpbGFibGUgKDExNCksCisJdW5zcGVjaWZpZWQtZmFpbHVyZSAoMTE1KSwKKwluZXR3b3JrLW9wdGltaXNhdGlvbiAoMTE2KQorfSAoMTEzLi4xMjgpCisKK0NhdXNlTkFTIDo6PSBJTlRFR0VSIHsKKwl1c2VyLXJlc3RyaWN0aW9uLXN0YXJ0LWluZGljYXRpb24gKDgxKSwKKwl1c2VyLXJlc3RyaWN0aW9uLWVuZC1pbmRpY2F0aW9uICg4MiksCisJbm9ybWFsLXJlbGVhc2UgKDgzKSwKKwljc2ctc3Vic2NyaXB0aW9uLWV4cGlyeSg4NCkKK30gKDgxLi45NikKKworQ2F1c2VQcm90b2NvbCA6Oj0gSU5URUdFUiB7CisJdHJhbnNmZXItc3ludGF4LWVycm9yICg5NyksCisJc2VtYW50aWMtZXJyb3IgKDk4KSwKKwltZXNzYWdlLW5vdC1jb21wYXRpYmxlLXdpdGgtcmVjZWl2ZXItc3RhdGUgKDk5KSwKKwlhYnN0cmFjdC1zeW50YXgtZXJyb3ItcmVqZWN0ICgxMDApLAorCWFic3RyYWN0LXN5bnRheC1lcnJvci1pZ25vcmUtYW5kLW5vdGlmeSAoMTAxKSwKKwlhYnN0cmFjdC1zeW50YXgtZXJyb3ItZmFsc2VseS1jb25zdHJ1Y3RlZC1tZXNzYWdlICgxMDIpCit9ICg5Ny4uMTEyKQorCitDYXVzZVJhZGlvTmV0d29yayA6Oj0gSU5URUdFUiB7CisJcmFiLXByZS1lbXB0ZWQgKDEpLAorCXRyZWxvY292ZXJhbGwtZXhwaXJ5ICgyKSwKKwl0cmVsb2NwcmVwLWV4cGlyeSAoMyksCisJdHJlbG9jY29tcGxldGUtZXhwaXJ5ICg0KSwKKwl0cXVlaW5nLWV4cGlyeSAoNSksCisJcmVsb2NhdGlvbi10cmlnZ2VyZWQgKDYpLAorCXRyZWxsb2NhbGxvYy1leHBpcnkoNyksCisJdW5hYmxlLXRvLWVzdGFibGlzaC1kdXJpbmctcmVsb2NhdGlvbiAoOCksCisJdW5rbm93bi10YXJnZXQtcm5jICg5KSwKKwlyZWxvY2F0aW9uLWNhbmNlbGxlZCAoMTApLAorCXN1Y2Nlc3NmdWwtcmVsb2NhdGlvbiAoMTEpLAorCXJlcXVlc3RlZC1jaXBoZXJpbmctYW5kLW9yLWludGVncml0eS1wcm90ZWN0aW9uLWFsZ29yaXRobXMtbm90LXN1cHBvcnRlZCAoMTIpLAorCWNvbmZsaWN0LXdpdGgtYWxyZWFkeS1leGlzdGluZy1pbnRlZ3JpdHktcHJvdGVjdGlvbi1hbmQtb3ItY2lwaGVyaW5nLWluZm9ybWF0aW9uICgxMyksCisJZmFpbHVyZS1pbi10aGUtcmFkaW8taW50ZXJmYWNlLXByb2NlZHVyZSAoMTQpLAorCXJlbGVhc2UtZHVlLXRvLXV0cmFuLWdlbmVyYXRlZC1yZWFzb24gKDE1KSwKKwl1c2VyLWluYWN0aXZpdHkgKDE2KSwKKwl0aW1lLWNyaXRpY2FsLXJlbG9jYXRpb24gKDE3KSwKKwlyZXF1ZXN0ZWQtdHJhZmZpYy1jbGFzcy1ub3QtYXZhaWxhYmxlICgxOCksCisJaW52YWxpZC1yYWItcGFyYW1ldGVycy12YWx1ZSAoMTkpLAorCXJlcXVlc3RlZC1tYXhpbXVtLWJpdC1yYXRlLW5vdC1hdmFpbGFibGUgKDIwKSwKKwlyZXF1ZXN0ZWQtZ3VhcmFudGVlZC1iaXQtcmF0ZS1ub3QtYXZhaWxhYmxlICgyMSksCisJcmVxdWVzdGVkLXRyYW5zZmVyLWRlbGF5LW5vdC1hY2hpZXZhYmxlICgyMiksCisJaW52YWxpZC1yYWItcGFyYW1ldGVycy1jb21iaW5hdGlvbiAoMjMpLAorCWNvbmRpdGlvbi12aW9sYXRpb24tZm9yLXNkdS1wYXJhbWV0ZXJzICgyNCksCisJY29uZGl0aW9uLXZpb2xhdGlvbi1mb3ItdHJhZmZpYy1oYW5kbGluZy1wcmlvcml0eSAoMjUpLAorCWNvbmRpdGlvbi12aW9sYXRpb24tZm9yLWd1YXJhbnRlZWQtYml0LXJhdGUgKDI2KSwKKwl1c2VyLXBsYW5lLXZlcnNpb25zLW5vdC1zdXBwb3J0ZWQgKDI3KSwKKwlpdS11cC1mYWlsdXJlICgyOCksCisJcmVsb2NhdGlvbi1mYWlsdXJlLWluLXRhcmdldC1DTi1STkMtb3ItdGFyZ2V0LXN5c3RlbSgyOSksCisJaW52YWxpZC1SQUItSUQgKDMwKSwKKwluby1yZW1haW5pbmctcmFiICgzMSksCisJaW50ZXJhY3Rpb24td2l0aC1vdGhlci1wcm9jZWR1cmUgKDMyKSwKKwlyZXF1ZXN0ZWQtbWF4aW11bS1iaXQtcmF0ZS1mb3ItZGwtbm90LWF2YWlsYWJsZSAoMzMpLAorCXJlcXVlc3RlZC1tYXhpbXVtLWJpdC1yYXRlLWZvci11bC1ub3QtYXZhaWxhYmxlICgzNCksCisJcmVxdWVzdGVkLWd1YXJhbnRlZWQtYml0LXJhdGUtZm9yLWRsLW5vdC1hdmFpbGFibGUgKDM1KSwKKwlyZXF1ZXN0ZWQtZ3VhcmFudGVlZC1iaXQtcmF0ZS1mb3ItdWwtbm90LWF2YWlsYWJsZSAoMzYpLAorCXJlcGVhdGVkLWludGVncml0eS1jaGVja2luZy1mYWlsdXJlICgzNyksCisJcmVxdWVzdGVkLXJlcXVlc3QtdHlwZS1ub3Qtc3VwcG9ydGVkICgzOCksCisJcmVxdWVzdC1zdXBlcnNlZGVkICgzOSksCisJcmVsZWFzZS1kdWUtdG8tVUUtZ2VuZXJhdGVkLXNpZ25hbGxpbmctY29ubmVjdGlvbi1yZWxlYXNlICg0MCksCisJcmVzb3VyY2Utb3B0aW1pc2F0aW9uLXJlbG9jYXRpb24gKDQxKSwKKwlyZXF1ZXN0ZWQtaW5mb3JtYXRpb24tbm90LWF2YWlsYWJsZSAoNDIpLAorCXJlbG9jYXRpb24tZGVzaXJhYmxlLWZvci1yYWRpby1yZWFzb25zICg0MyksCisJcmVsb2NhdGlvbi1ub3Qtc3VwcG9ydGVkLWluLXRhcmdldC1STkMtb3ItdGFyZ2V0LXN5c3RlbSAoNDQpLAorCWRpcmVjdGVkLXJldHJ5ICg0NSksCisJcmFkaW8tY29ubmVjdGlvbi13aXRoLVVFLUxvc3QgKDQ2KSwKKwlyTkMtdW5hYmxlLXRvLWVzdGFibGlzaC1hbGwtUkZDcyAoNDcpLAorCWRlY2lwaGVyaW5nLWtleXMtbm90LWF2YWlsYWJsZSg0OCksCisJZGVkaWNhdGVkLWFzc2lzdGFuY2UtZGF0YS1ub3QtYXZhaWxhYmxlKDQ5KSwKKwlyZWxvY2F0aW9uLXRhcmdldC1ub3QtYWxsb3dlZCAoNTApLAorCWxvY2F0aW9uLXJlcG9ydGluZy1jb25nZXN0aW9uICg1MSksCisJcmVkdWNlLWxvYWQtaW4tc2VydmluZy1jZWxsICg1MiksCisJbm8tcmFkaW8tcmVzb3VyY2VzLWF2YWlsYWJsZS1pbi10YXJnZXQtY2VsbCAoNTMpLAorCWdFUkFOLUl1bW9kZS1mYWlsdXJlICg1NCksCisJYWNjZXNzLXJlc3RyaWN0ZWQtZHVlLXRvLXNoYXJlZC1uZXR3b3JrcyAoNTUpLAorCWluY29taW5nLXJlbG9jYXRpb24tbm90LXN1cHBvcnRlZC1kdWUtdG8tUFVFU0JJTkUtZmVhdHVyZSAoNTYpLAorCXRyYWZmaWMtbG9hZC1pbi10aGUtdGFyZ2V0LWNlbGwtaGlnaGVyLXRoYW4taW4tdGhlLXNvdXJjZS1jZWxsICg1NyksCisJbUJNUy1uby1tdWx0aWNhc3Qtc2VydmljZS1mb3ItdGhpcy1VRSg1OCksCisJbUJNUy11bmtub3duLVVFLUlEKDU5KSwKKwlzdWNjZXNzZnVsLU1CTVMtc2Vzc2lvbi1zdGFydC1uby1kYXRhLWJlYXJlci1uZWNlc3NhcnkoNjApLAorCW1CTVMtc3VwZXJzZWRlZC1kdWUtdG8tTk5TRig2MSksCisJbUJNUy1VRS1saW5raW5nLWFscmVhZHktZG9uZSg2MiksCisJbUJNUy1VRS1kZS1saW5raW5nLWZhaWx1cmUtbm8tZXhpc3RpbmctVUUtbGlua2luZyg2MyksCisJdE1HSS11bmtub3duKDY0KQorfSAoMS4uNjQpCisKK0NhdXNlUmFkaW9OZXR3b3JrRXh0ZW5zaW9uIDo6PSBJTlRFR0VSIHsKKwlpUC1tdWx0aWNhc3QtYWRkcmVzcy1hbmQtQVBOLW5vdC12YWxpZCgyNTcpLAorCW1CTVMtZGUtcmVnaXN0cmF0aW9uLXJlamVjdGVkLWR1ZS10by1pbXBsaWNpdC1yZWdpc3RyYXRpb24oMjU4KSwKKwltQk1TLXJlcXVlc3Qtc3VwZXJzZWRlZCgyNTkpLAorCW1CTVMtZGUtcmVnaXN0cmF0aW9uLWR1cmluZy1zZXNzaW9uLW5vdC1hbGxvd2VkKDI2MCksCisJbUJNUy1uby1kYXRhLWJlYXJlci1uZWNlc3NhcnkoMjYxKSwKKwlwZXJpb2RpY0xvY2F0aW9uSW5mb3JtYXRpb25Ob3RBdmFpbGFibGUoMjYyKSwKKwlnVFAtUmVzb3VyY2VzLVVuYXZhaWxhYmxlKDI2MyksCisJdE1HSS1pblVzZS1vdmVybGFwcGluZy1NQk1TLXNlcnZpY2UtYXJlYSgyNjQpLAorCW1CTVMtbm8tY2VsbC1pbi1NQk1TLXNlcnZpY2UtYXJlYSgyNjUpLAorCW5vLUl1LUNTLVVQLXJlbG9jYXRpb24oMjY2KSwKKwlzdWNjZXNzZnVsLU1CTVMtU2Vzc2lvbi1TdGFydC1JUC1NdWx0aWNhc3QtQmVhcmVyLWVzdGFibGlzaGVkKDI2NyksCisJY1MtZmFsbGJhY2stdHJpZ2dlcmVkKDI2OCksCisJaW52YWxpZC1DU0ctSWQoMjY5KQorfSAoMjU3Li41MTIpCisKK0NhdXNlTm9uLVN0YW5kYXJkIDo6PSBJTlRFR0VSICgxMjkuLjI1NikKKy0tIENhdXNlIHZhbHVlIDI1NiBzaGFsbCBub3QgYmUgdXNlZCAtLQorCitDYXVzZVRyYW5zbWlzc2lvbk5ldHdvcmsgOjo9IElOVEVHRVIgeworCXNpZ25hbGxpbmctdHJhbnNwb3J0LXJlc291cmNlLWZhaWx1cmUgKDY1KSwKKwlpdS10cmFuc3BvcnQtY29ubmVjdGlvbi1mYWlsZWQtdG8tZXN0YWJsaXNoICg2NikKK30gKDY1Li44MCkKKworQ2VsbC1BY2Nlc3MtTW9kZTo6PSBFTlVNRVJBVEVEIHsKKwloeWJyaWQsCisJLi4uCit9CisKK0NlbGxCYXNlZDo6PSBTRVFVRU5DRSB7CisJY2VsbElkTGlzdAkJCUNlbGxJZExpc3QsCisJaUUtRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7Q2VsbEJhc2VkLUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworQ2VsbEJhc2VkLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworQ2VsbElkTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZDZWxsSWRzKSkgT0YKKwlDZWxsLUlkCisKK0NlbGwtSWQJCTo6PSBJTlRFR0VSICgwLi4yNjg0MzU0NTUpCisKK0NlbGwtQ2FwYWNpdHktQ2xhc3MtVmFsdWUgOjo9IElOVEVHRVIgKDEuLjEwMCwuLi4pCisKK0NlbGxMb2FkSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwljZWxsLUNhcGFjaXR5LUNsYXNzLVZhbHVlCUNlbGwtQ2FwYWNpdHktQ2xhc3MtVmFsdWUsCisJbG9hZFZhbHVlCQkJCQlMb2FkVmFsdWUsCisJclRMb2FkVmFsdWUJCQkJCVJUTG9hZFZhbHVlCQkJCQkJT1BUSU9OQUwsCisJblJUTG9hZEluZm9ybWF0aW9uVmFsdWUJCU5SVExvYWRJbmZvcm1hdGlvblZhbHVlCQkJT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgQ2VsbExvYWRJbmZvcm1hdGlvbi1FeHRJRXMgfSB9CQlPUFRJT05BTCwKKwkuLi4KK30KKworQ2VsbExvYWRJbmZvcm1hdGlvbi1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0NlbGxMb2FkSW5mb3JtYXRpb25Hcm91cCA6Oj0gU0VRVUVOQ0UgeworCXNvdXJjZUNlbGxJRAkJCQkJCVNvdXJjZUNlbGxJRCwKKwl1cGxpbmtDZWxsTG9hZEluZm9ybWF0aW9uCQkJQ2VsbExvYWRJbmZvcm1hdGlvbgkJT1BUSU9OQUwsCisJZG93bmxpbmtDZWxsTG9hZEluZm9ybWF0aW9uCQkJQ2VsbExvYWRJbmZvcm1hdGlvbgkJT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgQ2VsbExvYWRJbmZvcm1hdGlvbkdyb3VwLUV4dElFcyB9IH0JT1BUSU9OQUwsCisJLi4uCit9CisKK0NlbGxMb2FkSW5mb3JtYXRpb25Hcm91cC1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0NlbGxUeXBlIDo6PSBFTlVNRVJBVEVEeworCW1hY3JvLAorCW1pY3JvLAorCXBpY28sCisJZmVtdG8sCisJLi4uCit9CisKK0NpdmljQWRkcmVzcyA6Oj0gT0NURVQgU1RSSU5HCisKK0NsaWVudFR5cGUgOjo9IEVOVU1FUkFURUQgeworCWVtZXJnZW5jeS1TZXJ2aWNlcywKKwl2YWx1ZS1BZGRlZC1TZXJ2aWNlcywKKwlwTE1OLU9wZXJhdG9yLVNlcnZpY2VzLAorCWxhd2Z1bC1JbnRlcmNlcHQtU2VydmljZXMsCisJcExNTi1PcGVyYXRvci1Ccm9hZGNhc3QtU2VydmljZXMsCisJcExNTi1PcGVyYXRvci1PLWV0LU0sCisJcExNTi1PcGVyYXRvci1Bbm9ueW1vdXMtU3RhdGlzdGljcywKKwlwTE1OLU9wZXJhdG9yLVRhcmdldC1NUy1TZXJ2aWNlLVN1cHBvcnQsCisJLi4uCit9CisKK0NyaXRpY2FsaXR5RGlhZ25vc3RpY3MgOjo9IFNFUVVFTkNFIHsKKwlwcm9jZWR1cmVDb2RlCQkJUHJvY2VkdXJlQ29kZQkJCU9QVElPTkFMLAorCXRyaWdnZXJpbmdNZXNzYWdlCQlUcmlnZ2VyaW5nTWVzc2FnZQkJT1BUSU9OQUwsCisJcHJvY2VkdXJlQ3JpdGljYWxpdHkJCUNyaXRpY2FsaXR5CQkJT1BUSU9OQUwsCisJaUVzQ3JpdGljYWxpdHlEaWFnbm9zdGljcwkJQ3JpdGljYWxpdHlEaWFnbm9zdGljcy1JRS1MaXN0IAlPUFRJT05BTCwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7Q3JpdGljYWxpdHlEaWFnbm9zdGljcy1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK0NyaXRpY2FsaXR5RGlhZ25vc3RpY3MtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitDcml0aWNhbGl0eURpYWdub3N0aWNzLUlFLUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mRXJyb3JzKSkgT0YKKwlTRVFVRU5DRSB7CisJCWlFQ3JpdGljYWxpdHkJCUNyaXRpY2FsaXR5LAorCQlpRS1JRAkJCQlQcm90b2NvbElFLUlELAorCQlyZXBldGl0aW9uTnVtYmVyCQlSZXBldGl0aW9uTnVtYmVyMAkJT1BUSU9OQUwsCisJCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtDcml0aWNhbGl0eURpYWdub3N0aWNzLUlFLUxpc3QtRXh0SUVzfSB9IE9QVElPTkFMLAorCQkuLi4KKwl9CisKK0NyaXRpY2FsaXR5RGlhZ25vc3RpY3MtSUUtTGlzdC1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOTkgdG8gZW5hYmxlIHJlcG9ydGluZyB0aGUgbWVzc2FnZSBzdHJ1Y3R1cmUgZG93biB0byB0aGUgZXJyb25lb3VzIElFIC0tCisJewlJRCBpZC1NZXNzYWdlU3RydWN0dXJlCUNSSVRJQ0FMSVRZIGlnbm9yZQkJRVhURU5TSU9OIE1lc3NhZ2VTdHJ1Y3R1cmUJUFJFU0VOQ0Ugb3B0aW9uYWwJfSB8CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOTkgdG8gZW5hYmxlIHJlcG9ydGluZyBpZiBhIHJlcG9ydGVkIGVycm9yIGlzIGR1ZSB0byBhIG5vdCB1bmRlcnN0b29kIG9yIGEgbWlzc2luZyBJRSAtLQorCXsJSUQgaWQtVHlwZU9mRXJyb3IJCUNSSVRJQ0FMSVRZIGlnbm9yZQkJRVhURU5TSU9OIFR5cGVPZkVycm9yCQlQUkVTRU5DRSBtYW5kYXRvcnkJfSwKKwkuLi4KK30KKworTWVzc2FnZVN0cnVjdHVyZSA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZMZXZlbHMpKSBPRgorCVNFUVVFTkNFIHsKKwkJaUUtSUQJCQkJCVByb3RvY29sSUUtSUQsCisJCXJlcGV0aXRpb25OdW1iZXIJCVJlcGV0aXRpb25OdW1iZXIxCQlPUFRJT05BTCwKKwkJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge01lc3NhZ2VTdHJ1Y3R1cmUtRXh0SUVzfSB9IE9QVElPTkFMLAorCQkuLi4KKwl9CisKK01lc3NhZ2VTdHJ1Y3R1cmUtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitDR0kgOjo9IFNFUVVFTkNFIHsKKwlwTE1OaWRlbnRpdHkJCQkJUExNTmlkZW50aXR5LAorCWxBQwkJCQlMQUMsCisJY0kJCQkJQ0ksCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge0NHSS1FeHRJRXN9IH0gT1BUSU9OQUwKK30KKworQ0dJLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA2IHRvIGVuYWJsZSBJbnRlci1SQVQgUFMgSGFuZG92ZXIgYmV0d2VlbiBVVFJBTiBhbmQgR0VSQU4gQS9HYiAtLQorCXsJSUQgaWQtUkFDCUNSSVRJQ0FMSVRZIGlnbm9yZQkJRVhURU5TSU9OIFJBQwlQUkVTRU5DRSBvcHRpb25hbAl9LAorCS4uLgorfQorCitDaG9zZW5FbmNyeXB0aW9uQWxnb3JpdGhtIAkJOjo9IEVuY3J5cHRpb25BbGdvcml0aG0KKworQ2hvc2VuSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobSAJOjo9IEludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0KKworQ0kJCQkJCTo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDIpKQorCitDbGFzc21hcmtJbmZvcm1hdGlvbjIJCQk6Oj0gT0NURVQgU1RSSU5HCisKK0NsYXNzbWFya0luZm9ybWF0aW9uMwkJCTo6PSBPQ1RFVCBTVFJJTkcKKworQ04tRG9tYWluSW5kaWNhdG9yIDo6PSBFTlVNRVJBVEVEIHsKKwljcy1kb21haW4sCisJcHMtZG9tYWluCit9CisKK0NOLUlECQkJCTo6PSBJTlRFR0VSICgwLi40MDk1KQorCitDb3JyZWxhdGlvbi1JRAk6Oj0gT0NURVQgU1RSSU5HIChTSVpFICg0KSkKKworQ1NGQi1JbmZvcm1hdGlvbiA6Oj0gRU5VTUVSQVRFRCB7CisJY3NmYiwKKwljc2ZiLWhpZ2gtcHJpb3JpdHksCisJLi4uCit9CisKK0NTRy1JZAkJOjo9IEJJVCBTVFJJTkcgKFNJWkUgKDI3KSkKKworQ1NHLUlkLUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mQ1NHcykpIE9GCisJQ1NHLUlkCisKK0NTRy1NZW1iZXJzaGlwLVN0YXR1cyA6Oj0gRU5VTUVSQVRFRCB7CisJbWVtYmVyLAorCW5vbi1tZW1iZXIsCisJLi4uCit9CisKKy0tIEQKKworRGF0YVBEVVR5cGUJCTo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJcERVdHlwZTAsCisJCQkJCXBEVXR5cGUxLAorCQkJCQkuLi4KKwkJCQkJfQorCitEYXRhVm9sdW1lUmVmZXJlbmNlCQkJOjo9IElOVEVHRVIgKDAuLjI1NSkKKworRGF0YVZvbHVtZVJlcG9ydGluZ0luZGljYXRpb24gOjo9IEVOVU1FUkFURUQgeworCWRvLXJlcG9ydCwKKwlkby1ub3QtcmVwb3J0Cit9CisKK0RDSC1JRCA6Oj0gSU5URUdFUiAoMC4uMjU1KQorCitEQ04tSUQgOjo9IElOVEVHRVIgKDAuLjY1NTM1KQorCisKK0RlbGl2ZXJ5T2ZFcnJvbmVvdXNTRFUgOjo9IEVOVU1FUkFURUQgeworCXllcywKKwlubywKKwluby1lcnJvci1kZXRlY3Rpb24tY29uc2lkZXJhdGlvbgorfQorCitEZWxpdmVyeU9yZGVyOjo9IEVOVU1FUkFURUQgeworCWRlbGl2ZXJ5LW9yZGVyLXJlcXVlc3RlZCwKKwlkZWxpdmVyeS1vcmRlci1ub3QtcmVxdWVzdGVkCit9CisKK0RlbHRhUkFMaXN0b2ZJZGxlTW9kZVVFcyA6Oj0gU0VRVUVOQ0UgeworCW5ld1JBTGlzdG9mSWRsZU1vZGVVRXMJCQkJCU5ld1JBTGlzdG9mSWRsZU1vZGVVRXMJT1BUSU9OQUwsCisJckFMaXN0d2l0aE5vSWRsZU1vZGVVRXNBbnlNb3JlCQkJUkFMaXN0d2l0aE5vSWRsZU1vZGVVRXNBbnlNb3JlCU9QVElPTkFMLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtEZWx0YVJBTGlzdG9mSWRsZU1vZGVVRXMtRXh0SUVzfSB9IE9QVElPTkFMCit9CisKK05ld1JBTGlzdG9mSWRsZU1vZGVVRXMgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TUkEpKSBPRgorCVJBQworCitSQUxpc3R3aXRoTm9JZGxlTW9kZVVFc0FueU1vcmUgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TUkEpKSBPRgorCVJBQworCitEZWx0YVJBTGlzdG9mSWRsZU1vZGVVRXMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworeyBJRCBpZC1uZXdMQUxpc3RvZklkbGVNb2RlVUVzCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIExBTGlzdG9mSWRsZU1vZGVVRXMJCQkJUFJFU0VOQ0UgY29uZGl0aW9uYWwJfXwKKwktLSBUaGlzIElFIHNoYWxsIGJlIHByZXNlbnQgaWYgdGhlIE5ldyBSQSBMaXN0IG9mIElkbGUgTW9kZSBVRXMgSUUgaXMgaW5jbHVkZWQuIC0tCit7IElEIGlkLUxBTGlzdHdpdGhOb0lkbGVNb2RlVUVzQW55TW9yZQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBMQUxpc3RvZklkbGVNb2RlVUVzCQkJCVBSRVNFTkNFIGNvbmRpdGlvbmFsCX0sCisJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50aWYgdGhlIFJBIExpc3Qgd2l0aCBObyBJZGxlIE1vZGUgVUVzIEFueSBNb3JlIElFIGlzIGluY2x1ZGVkLiAtLQorCS4uLgorfQorCitGb3J3YXJkaW5nSW5kaWNhdGlvbjo6PUVOVU1FUkFURUR7CisJZm9yd2FyZGluZy1hZG1pdHRlZCwKKwkuLi4KK30KKworREwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlcgkJOjo9IElOVEVHRVIgKDAuLjY1NTM1KQorCitETC1OLVBEVS1TZXF1ZW5jZU51bWJlciAJCTo6PSBJTlRFR0VSICgwLi42NTUzNSkKKworRC1STlRJCQkJCQk6Oj0gSU5URUdFUiAoMC4uMTA0ODU3NSkKKworRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJCQk6Oj0gSU5URUdFUiAoNi4uOSkKKworRFNDSC1JRCA6Oj0gSU5URUdFUiAoMC4uMjU1KQorCisKKy0tIEUKKworRUFSRkNOLUV4dGVuZGVkCQk6Oj0gSU5URUdFUiAoNjU1MzYuLjI2MjE0MywgLi4uKQorCitFLURDSC1NQUMtZC1GbG93LUlECQk6Oj0gSU5URUdFUiAoMC4uIG1heE5yT2ZFRENITUFDZEZsb3dzLTEpCisKK0VOQi1JRCA6Oj0gQ0hPSUNFIHsKKwltYWNyb0VOQi1JRAkJCUJJVCBTVFJJTkcgKFNJWkUoMjApKSwKKwlob21lRU5CLUlECQkJQklUIFNUUklORyAoU0laRSgyOCkpLAorCS4uLiwKKwlzaG9ydC1tYWNyb0VOQi1JRAkJQklUIFNUUklORyAoU0laRSgxOCkpLAorCWxvbmctbWFjcm9FTkItSUQJCUJJVCBTVFJJTkcgKFNJWkUoMjEpKQorCit9CisKK0VuY3J5cHRpb25BbGdvcml0aG0gCQkJOjo9IElOVEVHRVIgeyBuby1lbmNyeXB0aW9uICgwKSwgc3RhbmRhcmQtVU1UUy1lbmNyeXB0aW9uLWFsZ29yaXRoLVVFQTEgKDEpLCBzdGFuZGFyZC1VTVRTLWVuY3J5cHRpb24tYWxnb3JpdGhtLVVFQTIgKDIpIH0gKDAuLjE1KQorCitFbmNyeXB0aW9uSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwlwZXJtaXR0ZWRBbGdvcml0aG1zCQlQZXJtaXR0ZWRFbmNyeXB0aW9uQWxnb3JpdGhtcywKKwlrZXkJCQkJRW5jcnlwdGlvbktleSwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7RW5jcnlwdGlvbkluZm9ybWF0aW9uLUV4dElFc30gfSBPUFRJT05BTAorfQorCitFbmNyeXB0aW9uSW5mb3JtYXRpb24tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitFbmNyeXB0aW9uS2V5IAkJCQk6Oj0gQklUIFNUUklORyAoU0laRSAoMTI4KSkKKy0tIFJlZmVyZW5jZTogMzMuMTAyCisKK0VuZC1PZi1DU0ZCIDo6PSBFTlVNRVJBVEVEeworCWVuZC1vZi1DU0ZCLAorCS4uLgorfQorCitFcXVpcG1lbnRzVG9CZVRyYWNlZCA6Oj0gQ0hPSUNFIHsKKwlpTUVJbGlzdAkJCQlJTUVJTGlzdCwKKwlpTUVJU1ZsaXN0CQkJCUlNRUlTVkxpc3QsCisJaU1FSWdyb3VwCQkJCUlNRUlHcm91cCwKKwlpTUVJU1Zncm91cAkJCQlJTUVJU1ZHcm91cCwKKwkuLi4KK30KKworRS1VVFJBTi1TZXJ2aWNlLUhhbmRvdmVyIDo6PSBFTlVNRVJBVEVEIHsKKwloYW5kb3Zlci10by1FLVVUUkFOLXNoYWxsLW5vdC1iZS1wZXJmb3JtZWQsCisJLi4uCit9CisKK0V2ZW50IDo6PSBFTlVNRVJBVEVEIHsKKwlzdG9wLWNoYW5nZS1vZi1zZXJ2aWNlLWFyZWEsCisJZGlyZWN0LAorCWNoYW5nZS1vZi1zZXJ2aWNlYXJlYSwKKwkuLi4sCisJc3RvcC1kaXJlY3QsCisJcGVyaW9kaWMsCisJc3RvcC1wZXJpb2RpYworfQorCitFdmVudDFGLVBhcmFtZXRlcnMJCTo6PQlTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnRRdWFudGl0eQkJTWVhc3VyZW1lbnRRdWFudGl0eSwKKwl0aHJlc2hvbGQJCQkJSU5URUdFUigtMTIwLi4xNjUpLAorCS4uLgorfQorCitFdmVudDFJLVBhcmFtZXRlcnMJCTo6PQlTRVFVRU5DRSB7CisJdGhyZXNob2xkCQkJCUlOVEVHRVIoLTEyMC4uLTI1KSwKKwkuLi4KK30KKworRXh0ZW5kZWRHdWFyYW50ZWVkQml0cmF0ZQkJCTo6PSBJTlRFR0VSICgxNjAwMDAwMS4uMjU2MDAwMDAwKQorLS0gVW5pdCBpcyBiaXRzIHBlciBzZWMKKworRXh0ZW5kZWRNYXhCaXRyYXRlCQkJOjo9IElOVEVHRVIgKDE2MDAwMDAxLi4yNTYwMDAwMDApCistLSBVbml0IGlzIGJpdHMgcGVyIHNlYworCitFeHRlbmRlZFJOQy1JRAkJCQkJOjo9IElOVEVHRVIgKDQwOTYuLjY1NTM1KQorCistLSBGCisKK0ZyYW1lU2VxdWVuY2VOdW1iZXIJCTo6PQlJTlRFR0VSKDAuLjE1KQorCitGcmVxdWVuY2VMYXllckNvbnZlcmdlbmNlRmxhZyA6Oj0gRU5VTUVSQVRFRCB7CisJbm8tRkxDLWZsYWcsCisJLi4uCit9CisKKy0tIEcKKworR0FOU1MtUG9zaXRpb25pbmdEYXRhU2V0IDo6PSBTRVFVRU5DRShTSVpFKDEuLm1heEdBTlNTU2V0KSkgT0YgR0FOU1MtUG9zaXRpb25pbmdNZXRob2RBbmRVc2FnZQorCitHQU5TUy1Qb3NpdGlvbmluZ01ldGhvZEFuZFVzYWdlIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUoMSkpCisKK0dlb2dyYXBoaWNhbEFyZWEgOjo9IENIT0lDRSB7CisJcG9pbnQJCQkJR0EtUG9pbnQsCisJcG9pbnRXaXRoVW5DZXJ0YWludHkJCUdBLVBvaW50V2l0aFVuQ2VydGFpbnR5LAorCXBvbHlnb24JCQkJR0EtUG9seWdvbiwKKwkuLi4sCisJcG9pbnRXaXRoVW5jZXJ0YWludHlFbGxpcHNlCQlHQS1Qb2ludFdpdGhVbkNlcnRhaW50eUVsbGlwc2UsCisJcG9pbnRXaXRoQWx0aXR1ZGUJCUdBLVBvaW50V2l0aEFsdGl0dWRlLAorCXBvaW50V2l0aEFsdGl0dWRlQW5kVW5jZXJ0YWludHlFbGxpcHNvaWQJCUdBLVBvaW50V2l0aEFsdGl0dWRlQW5kVW5jZXJ0YWludHlFbGxpcHNvaWQsCisJZWxsaXBzb2lkQXJjCQlHQS1FbGxpcHNvaWRBcmMKK30KKworR2VvZ3JhcGhpY2FsQ29vcmRpbmF0ZXMgOjo9IFNFUVVFTkNFIHsKKwlsYXRpdHVkZVNpZ24JCQlFTlVNRVJBVEVEIHsgbm9ydGgsIHNvdXRoIH0sCisJbGF0aXR1ZGUJCQlJTlRFR0VSICgwLi44Mzg4NjA3KSwKKwlsb25naXR1ZGUJCQlJTlRFR0VSICgtODM4ODYwOC4uODM4ODYwNyksCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge0dlb2dyYXBoaWNhbENvb3JkaW5hdGVzLUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworR2VvZ3JhcGhpY2FsQ29vcmRpbmF0ZXMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitHQS1BbHRpdHVkZUFuZERpcmVjdGlvbiA6Oj0gU0VRVUVOQ0UgeworCWRpcmVjdGlvbk9mQWx0aXR1ZGUJCUVOVU1FUkFURUQge2hlaWdodCwgZGVwdGh9LAorCWFsdGl0dWRlCQlJTlRFR0VSICgwLi4zMjc2NyksCisJLi4uCit9CisKK0dBLUVsbGlwc29pZEFyYyA6Oj0gU0VRVUVOQ0UgeworCWdlb2dyYXBoaWNhbENvb3JkaW5hdGVzCQlHZW9ncmFwaGljYWxDb29yZGluYXRlcywKKwlpbm5lclJhZGl1cwkJCQkJSU5URUdFUiAoMC4uNjU1MzUpLAorCXVuY2VydGFpbnR5UmFkaXVzCQkJSU5URUdFUiAoMC4uMTI3KSwKKwlvZmZzZXRBbmdsZQkJCQkJSU5URUdFUiAoMC4uMTc5KSwKKwlpbmNsdWRlZEFuZ2xlCQkJCUlOVEVHRVIgKDAuLjE3OSksCisJY29uZmlkZW5jZQkJCQkJSU5URUdFUiAoMC4uMTI3KSwKKwlpRS1FeHRlbnNpb25zCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBHQS1FbGxpcHNvaWRBcmMtRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitHQS1FbGxpcHNvaWRBcmMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitHQS1Qb2ludCA6Oj0gU0VRVUVOQ0UgeworCWdlb2dyYXBoaWNhbENvb3JkaW5hdGVzCQlHZW9ncmFwaGljYWxDb29yZGluYXRlcywKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7R0EtUG9pbnQtRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitHQS1Qb2ludC1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0dBLVBvaW50V2l0aEFsdGl0dWRlIDo6PSBTRVFVRU5DRSB7CisJZ2VvZ3JhcGhpY2FsQ29vcmRpbmF0ZXMJCUdlb2dyYXBoaWNhbENvb3JkaW5hdGVzLAorCWFsdGl0dWRlQW5kRGlyZWN0aW9uCQlHQS1BbHRpdHVkZUFuZERpcmVjdGlvbiwKKwlpRS1FeHRlbnNpb25zCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBHQS1Qb2ludFdpdGhBbHRpdHVkZS1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK0dBLVBvaW50V2l0aEFsdGl0dWRlLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworR0EtUG9pbnRXaXRoQWx0aXR1ZGVBbmRVbmNlcnRhaW50eUVsbGlwc29pZCA6Oj0gU0VRVUVOQ0UgeworCWdlb2dyYXBoaWNhbENvb3JkaW5hdGVzCQlHZW9ncmFwaGljYWxDb29yZGluYXRlcywKKwlhbHRpdHVkZUFuZERpcmVjdGlvbgkJR0EtQWx0aXR1ZGVBbmREaXJlY3Rpb24sCisJdW5jZXJ0YWludHlFbGxpcHNlCQkJR0EtVW5jZXJ0YWludHlFbGxpcHNlLAorCXVuY2VydGFpbnR5QWx0aXR1ZGUJCQlJTlRFR0VSICgwLi4xMjcpLAorCWNvbmZpZGVuY2UJCQkJCUlOVEVHRVIgKDAuLjEyNyksCisJaUUtRXh0ZW5zaW9ucwkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgR0EtUG9pbnRXaXRoQWx0aXR1ZGVBbmRVbmNlcnRhaW50eUVsbGlwc29pZC1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK0dBLVBvaW50V2l0aEFsdGl0dWRlQW5kVW5jZXJ0YWludHlFbGxpcHNvaWQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitHQS1Qb2ludFdpdGhVbkNlcnRhaW50eSA6Oj1TRVFVRU5DRSB7CisJZ2VvZ3JhcGhpY2FsQ29vcmRpbmF0ZXMJCUdlb2dyYXBoaWNhbENvb3JkaW5hdGVzLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtHQS1Qb2ludFdpdGhVbkNlcnRhaW50eS1FeHRJRXN9IH0gT1BUSU9OQUwsCisJdW5jZXJ0YWludHlDb2RlCQkJSU5URUdFUiAoMC4uMTI3KQorfQorCitHQS1Qb2ludFdpdGhVbkNlcnRhaW50eS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0dBLVBvaW50V2l0aFVuQ2VydGFpbnR5RWxsaXBzZSA6Oj0gU0VRVUVOQ0UgeworCWdlb2dyYXBoaWNhbENvb3JkaW5hdGVzCQlHZW9ncmFwaGljYWxDb29yZGluYXRlcywKKwl1bmNlcnRhaW50eUVsbGlwc2UJCQlHQS1VbmNlcnRhaW50eUVsbGlwc2UsCisJY29uZmlkZW5jZQkJCQkJSU5URUdFUiAoMC4uMTI3KSwKKwlpRS1FeHRlbnNpb25zCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBHQS1Qb2ludFdpdGhVbkNlcnRhaW50eUVsbGlwc2UtRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitHQS1Qb2ludFdpdGhVbkNlcnRhaW50eUVsbGlwc2UtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitHQS1Qb2x5Z29uIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlBvaW50cykpIE9GCisJU0VRVUVOQ0UgeworCQlnZW9ncmFwaGljYWxDb29yZGluYXRlcwkJR2VvZ3JhcGhpY2FsQ29vcmRpbmF0ZXMsCisJCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtHQS1Qb2x5Z29uLUV4dElFc30gfSBPUFRJT05BTCwKKwkJLi4uCisJfQorCitHQS1Qb2x5Z29uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworR0EtVW5jZXJ0YWludHlFbGxpcHNlIDo6PSBTRVFVRU5DRSB7CisJdW5jZXJ0YWludHlTZW1pLW1ham9yCQlJTlRFR0VSICgwLi4xMjcpLAorCXVuY2VydGFpbnR5U2VtaS1taW5vcgkJSU5URUdFUiAoMC4uMTI3KSwKKwlvcmllbnRhdGlvbk9mTWFqb3JBeGlzCQlJTlRFR0VSICgwLi4xNzkpLCAJLS0gVGhlIHZhbHVlcyA5MC4uMTc5IHNoYWxsIG5vdCBiZSB1c2VkLgorCS4uLgorfQorCitHRVJBTi1CU0MtQ29udGFpbmVyCQkJCTo6PSBPQ1RFVCBTVFJJTkcKKwktLSBHRVJBTiBCU0MgQ29udGFpbmVyIGFzIGRlZmluZWQgaW4gVFMgNDguMDA4IFsxMV0gLS0KKworCitHRVJBTi1DZWxsLUlEIDo6PSBTRVFVRU5DRSB7CisJbEFJCQkJCUxBSSwKKwlyQUMJCQkJUkFDLAorCWNJCQkJCUNJLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtHRVJBTi1DZWxsLUlELUV4dElFc30gfSBPUFRJT05BTAorfQorCitHRVJBTi1DZWxsLUlELUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworR0VSQU4tQ2xhc3NtYXJrCSAJCQkJOjo9IE9DVEVUIFNUUklORworCS0tIEdFUkFOIENsYXNzbWFyayBhcyBkZWZpbmVkIGluIFRTIDQ4LjAwOCBbMTFdIC0tCisKK0dsb2JhbENOLUlEIDo6PSBTRVFVRU5DRSB7CisJcExNTmlkZW50aXR5CQkJCVBMTU5pZGVudGl0eSwKKwljTi1JRAkJCQlDTi1JRAorfQorCisKK0dsb2JhbFJOQy1JRCA6Oj0gU0VRVUVOQ0UgeworCXBMTU5pZGVudGl0eQkJCQlQTE1OaWRlbnRpdHksCisJck5DLUlECQkJCVJOQy1JRAorfQorCitHVFAtVEVJCQkJCQk6Oj0gT0NURVQgU1RSSU5HIChTSVpFICg0KSkKKworR3VhcmFudGVlZEJpdHJhdGUJCQk6Oj0gSU5URUdFUiAoMC4uMTYwMDAwMDApCistLSBVbml0IGlzIGJpdHMgcGVyIHNlYworCistLSBICisKK0hpZ2hlckJpdHJhdGVzVGhhbjE2TWJwc0ZsYWcgOjo9IEVOVU1FUkFURUR7CisJYWxsb3dlZCwKKwlub3QtYWxsb3dlZCwKKwkuLi4KK30KKworSFMtRFNDSC1NQUMtZC1GbG93LUlECQk6Oj0gSU5URUdFUiAoMC4uIG1heE5yT2ZIU0RTQ0hNQUNkRmxvd3MtMSkKKworLS0gSQorCisKK0lNRUkJCQkJCTo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDgpKQorLS0gUmVmZXJlbmNlOiAyMy4wMDMKKworSU1FSUdyb3VwCTo6PSBTRVFVRU5DRSB7CisJaU1FSQkJCQlJTUVJLAorCWlNRUlNYXNrCQkJQklUIFNUUklORyAoU0laRSAoNykpLAorCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBJTUVJR3JvdXAtRXh0SUVzfSB9IE9QVElPTkFMCit9CisKK0lNRUlHcm91cC1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0lNRUlMaXN0CTo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlVFc1RvQmVUcmFjZWQpKSBPRiBJTUVJCisKK0lNRUlTVgkJCQkJOjo9IE9DVEVUIFNUUklORyAoU0laRSAoOCkpCistLSBSZWZlcmVuY2U6IDIzLjAwMworCitJTUVJU1ZHcm91cAk6Oj0gU0VRVUVOQ0UgeworCWlNRUlTVgkJCQlJTUVJU1YsCisJaU1FSVNWTWFzawkJCUJJVCBTVFJJTkcgKFNJWkUgKDcpKSwKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgSU1FSVNWR3JvdXAtRXh0SUVzfSB9IE9QVElPTkFMCit9CisKK0lNRUlTVkdyb3VwLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworSU1FSVNWTGlzdAk6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZVRXNUb0JlVHJhY2VkKSkgT0YgSU1FSVNWCisKK0ltbWVkaWF0ZU1EVAk6Oj0gU0VRVUVOQ0UgeworCW1lYXN1cmVtZW50c1RvQWN0aXZhdGUJCU1lYXN1cmVtZW50c1RvQWN0aXZhdGUsCisJbTFyZXBvcnQJCQkJCU0xUmVwb3J0CQkJCU9QVElPTkFMLAorCS0tIEluY2x1ZGVkIGluIGNhc2Ugb2YgZXZlbnQtdHJpZ2dlcmVkIHJlcG9ydGluZyBmb3IgbWVhc3VyZW1lbnQgTTEKKwltMnJlcG9ydAkJCQkJTTJSZXBvcnQJCQkJT1BUSU9OQUwsCisJLS0gSW5jbHVkZWQgaW4gY2FzZSBvZiBldmVudC10cmlnZ2VyZWQgcmVwb3J0aW5nIGZvciBtZWFzdXJlbWVudCBNMgorCS4uLiwKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgSW1tZWRpYXRlTURULUV4dElFc30gfSBPUFRJT05BTAorfQorCitJbW1lZGlhdGVNRFQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCXtJRCBpZC1NNFJlcG9ydAkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBNNFJlcG9ydAkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorCS0tIEluY2x1ZGVkIGluIGNhc2UgdGhhdCBtZWFzdXJlbWVudCBNNCBpcyBhY3RpdmF0ZWQKKwl7SUQgaWQtTTVSZXBvcnQJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gTTVSZXBvcnQJCVBSRVNFTkNFIG9wdGlvbmFsfXwKKwktLSBJbmNsdWRlZCBpbiBjYXNlIHRoYXQgbWVhc3VyZW1lbnQgTTUgaXMgYWN0aXZhdGVkCisJe0lEIGlkLU02UmVwb3J0CQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIE02UmVwb3J0CQlQUkVTRU5DRSBvcHRpb25hbH18CisJLS0gSW5jbHVkZWQgaW4gY2FzZSB0aGF0IG1lYXN1cmVtZW50IE02IGlzIGFjdGl2YXRlZAorCXtJRCBpZC1NN1JlcG9ydAkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBNN1JlcG9ydAkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAorCS0tIEluY2x1ZGVkIGluIGNhc2UgdGhhdCBtZWFzdXJlbWVudCBNNyBpcyBhY3RpdmF0ZWQKKwkuLi4KK30KKworSU1TSQkJCQkJOjo9IFRCQ0QtU1RSSU5HIChTSVpFICgzLi44KSkKKy0tIFJlZmVyZW5jZTogMjMuMDAzCisKK0luY2x1ZGVWZWxvY2l0eQkJOjo9IEVOVU1FUkFURUQgeworCXJlcXVlc3RlZAorfQorCitJbmZvcm1hdGlvbkV4Y2hhbmdlSUQgOjo9IElOVEVHRVIgKDAuLiAxMDQ4NTc1KQorCitJbmZvcm1hdGlvbkV4Y2hhbmdlVHlwZSA6Oj0gRU5VTUVSQVRFRCB7CisJdHJhbnNmZXIsCisJcmVxdWVzdCwKKwkuLi4KK30KKworSW5mb3JtYXRpb25SZXF1ZXN0ZWQgOjo9IENIT0lDRSB7CisJcmVxdWVzdGVkTUJNU0lQTXVsdGljYXN0QWRkcmVzc2FuZEFQTlJlcXVlc3QJCVJlcXVlc3RlZE1CTVNJUE11bHRpY2FzdEFkZHJlc3NhbmRBUE5SZXF1ZXN0LAorCXJlcXVlc3RlZE11bHRpY2FzdFNlcnZpY2VMaXN0CQkJCQkJUmVxdWVzdGVkTXVsdGljYXN0U2VydmljZUxpc3QsCisJLi4uCit9CisKKworSW5mb3JtYXRpb25SZXF1ZXN0VHlwZSA6Oj0gQ0hPSUNFIHsKKwltQk1TSVBNdWx0aWNhc3RBZGRyZXNzYW5kQVBOUmVxdWVzdAkJTUJNU0lQTXVsdGljYXN0QWRkcmVzc2FuZEFQTlJlcXVlc3QsCisJcGVybWFuZW50TkFTLVVFLUlECQkJCQkJUGVybWFuZW50TkFTLVVFLUlELAorCS4uLgorfQorCitJbmZvcm1hdGlvblRyYW5zZmVySUQgOjo9IElOVEVHRVIgKDAuLiAxMDQ4NTc1KQorCitJbmZvcm1hdGlvblRyYW5zZmVyVHlwZSA6Oj0gQ0hPSUNFIHsKKwlyTkNUcmFjZUluZm9ybWF0aW9uCQkJUk5DVHJhY2VJbmZvcm1hdGlvbiwKKwkuLi4KK30KKworSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobQkJOjo9IElOVEVHRVIgeworCXN0YW5kYXJkLVVNVFMtaW50ZWdyaXR5LWFsZ29yaXRobS1VSUExICgwKSwgc3RhbmRhcmQtVU1UUy1pbnRlZ3JpdHktYWxnb3JpdGhtLVVJQTIgKDEpLAorCW5vLXZhbHVlICgxNSkKK30gKDAuLjE1KQorCitJbnRlZ3JpdHlQcm90ZWN0aW9uSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwlwZXJtaXR0ZWRBbGdvcml0aG1zCQlQZXJtaXR0ZWRJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtcywKKwlrZXkJCQkJSW50ZWdyaXR5UHJvdGVjdGlvbktleSwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7SW50ZWdyaXR5UHJvdGVjdGlvbkluZm9ybWF0aW9uLUV4dElFc30gfSBPUFRJT05BTAorfQorCitJbnRlZ3JpdHlQcm90ZWN0aW9uSW5mb3JtYXRpb24tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitJbnRlZ3JpdHlQcm90ZWN0aW9uS2V5CQkJOjo9IEJJVCBTVFJJTkcgKFNJWkUgKDEyOCkpCisKK0ludGVyU3lzdGVtSW5mb3JtYXRpb25UcmFuc2ZlclR5cGUgOjo9IENIT0lDRSB7CisJcklNLVRyYW5zZmVyCQkJCQlSSU0tVHJhbnNmZXIsCisJLi4uCit9CisKK0ludGVyU3lzdGVtSW5mb3JtYXRpb24tVHJhbnNwYXJlbnRDb250YWluZXIgOjo9IFNFUVVFTkNFIHsKKwlkb3dubGlua0NlbGxMb2FkSW5mb3JtYXRpb24JCQlDZWxsTG9hZEluZm9ybWF0aW9uCQlPUFRJT05BTCwKKwl1cGxpbmtDZWxsTG9hZEluZm9ybWF0aW9uCQkJQ2VsbExvYWRJbmZvcm1hdGlvbgkJT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBJbnRlclN5c3RlbUluZm9ybWF0aW9uLVRyYW5zcGFyZW50Q29udGFpbmVyLUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworSW50ZXJTeXN0ZW1JbmZvcm1hdGlvbi1UcmFuc3BhcmVudENvbnRhaW5lci1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisuLi4KK30KKworSVBNdWx0aWNhc3RBZGRyZXNzIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDQuLjE2KSkKKy0tIFJlZmVyZW5jZTogMjMuMDAzCisKK0l1U2lnbmFsbGluZ0Nvbm5lY3Rpb25JZGVudGlmaWVyCTo6PSBCSVQgU1RSSU5HIChTSVpFICgyNCkpCisKK0l1VHJhbnNwb3J0QXNzb2NpYXRpb24gOjo9IENIT0lDRSB7CisJZ1RQLVRFSQkJCQlHVFAtVEVJLAorCWJpbmRpbmdJRAkJCUJpbmRpbmdJRCwKKwkuLi4KK30KKworLS0gSgorLS0gSworCitLZXlTdGF0dXMJOjo9IEVOVU1FUkFURUQgeworCW9sZCwKKwluZXcsCisJLi4uCit9CistLSBMCisKK0xBLUxJU1QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mTEFzKSkgT0YKKwlTRVFVRU5DRSB7CisJCWxBQwkJCQkJCUxBQywKKwkJbGlzdE9GLVNOQXMJCQkJTGlzdE9GLVNOQXMsCisJCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgTEEtTElTVC1FeHRJRXN9IH0gT1BUSU9OQUwsCisJCS4uLgorCX0KKworTEEtTElTVC1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0xBQwkJCQkJOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMikpCisKK0xBSSA6Oj0gU0VRVUVOQ0UgeworCXBMTU5pZGVudGl0eQkJCQlQTE1OaWRlbnRpdHksCisJbEFDCQkJCUxBQywKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7TEFJLUV4dElFc30gfSBPUFRJT05BTAorfQorCitMQUktRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitMYXN0S25vd25TZXJ2aWNlQXJlYQk6Oj0gU0VRVUVOQ0UgeworCXNBSQkJCVNBSSwKKwlhZ2VPZlNBSQlJTlRFR0VSICgwLi4zMjc2NyksCisJaUUtRXh0ZW5zaW9ucwlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtMYXN0S25vd25TZXJ2aWNlQXJlYS1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK0xhc3RLbm93blNlcnZpY2VBcmVhLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworTGFzdFZpc2l0ZWRVVFJBTkNlbGwtSXRlbSA6Oj0gU0VRVUVOQ0UgeworCXVUUkFOLUNlbGxJRAkJCQkJVVRSQU4tQ2VsbElELAorCWNlbGxUeXBlCQkJCQkJQ2VsbFR5cGUsCisJdGltZS1VRS1TdGF5ZWRJbkNlbGwJCQlUaW1lLVVFLVN0YXllZEluQ2VsbCwKKwlpRS1FeHRlbnNpb25zCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtMYXN0VmlzaXRlZFVUUkFOQ2VsbC1JdGVtLUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworTGFzdFZpc2l0ZWRVVFJBTkNlbGwtSXRlbS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CistLSBFeHRlbnNpb24gZm9yIFJlbC0xMSB0byBzdXBwb3J0IGVuaGFuY2VkIGdyYW51bGFyaXR5IGZvciB0aW1lIFVFIHN0YXllZCBpbiBjZWxsIC0tCisJeyBJRCBpZC1UaW1lLVVFLVN0YXllZEluQ2VsbC1FbmhhbmNlZEdyYW51bGFyaXR5CUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVGltZS1VRS1TdGF5ZWRJbkNlbGwtRW5oYW5jZWRHcmFudWxhcml0eQkJUFJFU0VOQ0UJb3B0aW9uYWwgfXwKKwl7IElEIGlkLUhPLUNhdXNlCQkJCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBDYXVzZQkJCQkJCQkJCQkJCQkJUFJFU0VOQ0UJb3B0aW9uYWwgfSwKKwkuLi4KK30KKworTEhOLUlEIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDMyLi4yNTYpKQorCitMaW5rcy10by1sb2cgOjo9IEVOVU1FUkFURUQge3VwbGluaywgZG93bmxpbmssIGJvdGgtdXBsaW5rLWFuZC1kb3dubGluaywgLi4ufQorCitMaXN0T0YtU05BcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZTTkFzKSkgT0YgU05BQworCitMaXN0T2ZJbnRlcmZhY2VzVG9UcmFjZSA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZJbnRlcmZhY2VzKSkgT0YgSW50ZXJmYWNlc1RvVHJhY2VJdGVtCisKK0ludGVyZmFjZXNUb1RyYWNlSXRlbSA6Oj0gU0VRVUVOQ0UgeworCWludGVyZmFjZQkJCQlFTlVNRVJBVEVEIHtpdS1jcywgaXUtcHMsIGl1ciwgaXViLCB1dSwgLi4ufSwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7SW50ZXJmYWNlc1RvVHJhY2VJdGVtLUV4dElFc30gfQlPUFRJT05BTCwKKwkuLi4KK30KKworSW50ZXJmYWNlc1RvVHJhY2VJdGVtLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworTG9hZFZhbHVlCTo6PSBJTlRFR0VSICgwLi4xMDApCisKK0xvY2F0aW9uUmVsYXRlZERhdGFSZXF1ZXN0VHlwZQk6Oj0gU0VRVUVOQ0UgeworCXJlcXVlc3RlZExvY2F0aW9uUmVsYXRlZERhdGFUeXBlCQkJUmVxdWVzdGVkTG9jYXRpb25SZWxhdGVkRGF0YVR5cGUsCisJcmVxdWVzdGVkR1BTQXNzaXN0YW5jZURhdGEJCQkJCVJlcXVlc3RlZEdQU0Fzc2lzdGFuY2VEYXRhCU9QVElPTkFMLAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgUmVxdWVzdGVkIExvY2F0aW9uIFJlbGF0ZWQgRGF0YSBUeXBlIElFIGlzIHNldCB0byCRRGVkaWNhdGVkIEFzc2lzdGFuY2UgRGF0YSBmb3IgQXNzaXN0ZWQgR1BTkiBvcgorCS0tIGBEZWRpY2F0ZWQgQXNzaXN0YW5jZSBEYXRhIGZvciBBc3Npc3RlZCBHUFMgYW5kIEdBTlNTkgorCS4uLgorfQorCitMb2NhdGlvblJlbGF0ZWREYXRhUmVxdWVzdFR5cGVTcGVjaWZpY1RvR0VSQU5JdU1vZGUJOjo9IEVOVU1FUkFURUQgeworCWRlY2lwaGVyaW5nS2V5c0VPVEQsCisJZGVkaWNhdGVkTW9iaWxlQXNzaXN0ZWRFT1REQXNzaXN0YW5jZURhdGEsCisJZGVkaWNhdGVkTW9iaWxlQmFzZWRFT1REQXNzaXN0YW5jZURhdGEsCisJLi4uCit9CisKK0xvY2F0aW9uUmVwb3J0aW5nVHJhbnNmZXJJbmZvcm1hdGlvbgk6Oj0JU0VRVUVOQ0UgeworCXJlcG9ydENoYW5nZU9mU0FJCQkJCVJlcG9ydENoYW5nZU9mU0FJCQkJT1BUSU9OQUwsCisJcGVyaW9kaWNSZXBvcnRpbmdJbmRpY2F0b3IJCVBlcmlvZGljUmVwb3J0aW5nSW5kaWNhdG9yCU9QVElPTkFMLAorCWRpcmVjdFJlcG9ydGluZ0luZGljYXRvcgkJRGlyZWN0UmVwb3J0aW5nSW5kaWNhdG9yCU9QVElPTkFMLAorCXZlcnRpY2FsQWNjdXJhY3lDb2RlCQkJVmVydGljYWxBY2N1cmFjeUNvZGUJCU9QVElPTkFMLAorCXBvc2l0aW9uaW5nUHJpb3JpdHlDaGFuZ2VTQUkJUG9zaXRpb25pbmdQcmlvcml0eQkJCU9QVElPTkFMLAorCXBvc2l0aW9uaW5nUHJpb3JpdHlEaXJlY3QJCVBvc2l0aW9uaW5nUHJpb3JpdHkJCQlPUFRJT05BTCwKKwljbGllbnRUeXBlUGVyaW9kaWMJCQkJQ2xpZW50VHlwZQkJCQkJT1BUSU9OQUwsCisJY2xpZW50VHlwZURpcmVjdAkJCQlDbGllbnRUeXBlCQkJCQlPUFRJT05BTCwKKwlyZXNwb25zZVRpbWUJCQkJCVJlc3BvbnNlVGltZQkJCQlPUFRJT05BTCwKKwlpbmNsdWRlVmVsb2NpdHkJCQkJCUluY2x1ZGVWZWxvY2l0eQkJCQlPUFRJT05BTCwKKwlwZXJpb2RpY0xvY2F0aW9uSW5mbwkJCVBlcmlvZGljTG9jYXRpb25JbmZvCQlPUFRJT05BTCwKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgTG9jYXRpb25SZXBvcnRpbmdUcmFuc2ZlckluZm9ybWF0aW9uLUV4dElFcyB9IH0JCU9QVElPTkFMLAorCS4uLgorfQorCitMb2NhdGlvblJlcG9ydGluZ1RyYW5zZmVySW5mb3JtYXRpb24tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitSZXBvcnRDaGFuZ2VPZlNBSQkJCTo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCXJlcXVlc3RlZCwKKwkJCQkJCQkJCS4uLgorCQkJCQkJCQl9CisKK1BlcmlvZGljUmVwb3J0aW5nSW5kaWNhdG9yOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJcGVyaW9kaWNTQUksCisJCQkJCQkJCQlwZXJpb2RpY0dlbywKKwkJCQkJCQkJCS4uLgorCQkJCQkJCQl9CisKK0RpcmVjdFJlcG9ydGluZ0luZGljYXRvcjo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCWRpcmVjdFNBSSwKKwkJCQkJCQkJCWRpcmVjdEdlbywKKwkJCQkJCQkJCS4uLgorCQkJCQkJCQl9CisKK0wzLUluZm9ybWF0aW9uCQkJCTo6PSBPQ1RFVCBTVFJJTkcKKworLS0gTQorCitNMVJlcG9ydAk6Oj0gQ0hPSUNFIHsKKwlwZXJpb2RpYwkJCU1EVC1SZXBvcnQtUGFyYW1ldGVycywKKwlldmVudDFGCQkJCUV2ZW50MUYtUGFyYW1ldGVycywKKwkuLi4KK30KKworTTJSZXBvcnQJOjo9IENIT0lDRSB7CisJcGVyaW9kaWMJCQlNRFQtUmVwb3J0LVBhcmFtZXRlcnMsCisJZXZlbnQxSQkJCQlFdmVudDFJLVBhcmFtZXRlcnMsCisJLi4uCit9CisKK000UmVwb3J0CTo6PSBDSE9JQ0UgeworCWFsbAkJCQkJCQlOVUxMLAorCW00LWNvbGxlY3Rpb24tcGFyYW1ldGVycwlNNC1Db2xsZWN0aW9uLVBhcmFtZXRlcnMsCisJLi4uCit9CisKK000LUNvbGxlY3Rpb24tUGFyYW1ldGVycyA6Oj0gU0VRVUVOQ0UgeworCW00LXBlcmlvZAkJTTQtUGVyaW9kLAorCW00LXRocmVzaG9sZAlNNC1UaHJlc2hvbGQJT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgTTQtQ29sbGVjdGlvbi1QYXJhbWV0ZXJzLUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworTTQtQ29sbGVjdGlvbi1QYXJhbWV0ZXJzLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworTTQtUGVyaW9kICA6Oj0gRU5VTUVSQVRFRCB7bXMxMDAsIG1zMjUwLCBtczUwMCwgbXMxMDAwLCBtczIwMDAsIG1zMzAwMCwgbXM0MDAwLCBtczYwMDAsIC4uLn0KKworCitNNC1UaHJlc2hvbGQgOjo9IElOVEVHRVIgKDAuLjMxKQorCisKK001UmVwb3J0CTo6PSBDSE9JQ0UgeworCXdoZW4tYXZhaWxhYmxlCQlOVUxMLAorCW01LXBlcmlvZAkJCU01LVBlcmlvZCwKKwkuLi4KK30KK001LVBlcmlvZCA6Oj0gRU5VTUVSQVRFRCB7bXMxMDAsIG1zMjUwLCBtczUwMCwgbXMxMDAwLCBtczIwMDAsIG1zMzAwMCwgbXM0MDAwLCBtczYwMDAsIC4uLn0KKworCisKK002UmVwb3J0IDo6PSBTRVFVRU5DRSB7CisJbTYtcGVyaW9kCQkJTTYtUGVyaW9kLAorCW02LWxpbmtzLXRvLWxvZwkJTGlua3MtdG8tbG9nLAorCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBNNlJlcG9ydC1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK002UmVwb3J0LUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworTTYtUGVyaW9kIDo6PSBFTlVNRVJBVEVEIHttczEwMDAsIG1zMjAwMCwgbXMzMDAwLCBtczQwMDAsIG1zNjAwMCwgbXM4MDAwLCBtczEyMDAwLCBtczE2MDAwLCBtczIwMDAwLCBtczI0MDAwLCBtczI4MDAwLCBtczMyMDAwLCBtczY0MDAwLCAuLi59CisKK003UmVwb3J0IDo6PSBTRVFVRU5DRSB7CisJbTctcGVyaW9kCQkJTTctUGVyaW9kLAorCW03LWxpbmtzLXRvLWxvZwkJTGlua3MtdG8tbG9nLAorCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBNN1JlcG9ydC1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK003UmVwb3J0LUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworTTctUGVyaW9kIDo6PSBFTlVNRVJBVEVEIHttczEwMDAsIG1zMjAwMCwgbXMzMDAwLCBtczQwMDAsIG1zNjAwMCwgbXM4MDAwLCBtczEyMDAwLCBtczE2MDAwLCBtczIwMDAwLCBtczI0MDAwLCBtczI4MDAwLCBtczMyMDAwLCBtczY0MDAwLCAuLi59CisKK01hbmFnZW1lbnQtQmFzZWQtTURULUFsbG93ZWQgOjo9IEVOVU1FUkFURUQgeworCWFsbG93ZWQsIC4uLiB9CisKK01heEJpdHJhdGUJCQkJOjo9IElOVEVHRVIgKDEuLjE2MDAwMDAwKQorLS0gVW5pdCBpcyBiaXRzIHBlciBzZWMKKworTWF4U0RVLVNpemUJCQkJOjo9IElOVEVHRVIgKDAuLjMyNzY4KQorLS0gTWF4U0RVLVNpemUKKy0tIFVuaXQgaXMgYml0CisKK01CTVMtUFRQLVJBQi1JRCA6Oj0gQklUIFNUUklORyAoU0laRSAoOCkpCisKK01CTVNCZWFyZXJTZXJ2aWNlVHlwZSA6Oj0gRU5VTUVSQVRFRCB7CisJbXVsdGljYXN0LAorCWJyb2FkY2FzdCwKKwkuLi4KK30KKworTUJNU0NORGUtUmVnaXN0cmF0aW9uIDo6PSBFTlVNRVJBVEVEIHsKKwlub3JtYWxzZXNzaW9uc3RvcCwKKwlkZXJlZ2lzdGVyLAorCS4uLgorfQorCisKK01CTVNDb3VudGluZ0luZm9ybWF0aW9uIDo6PSBFTlVNRVJBVEVEIHsKKwljb3VudGluZywKKwlub3Rjb3VudGluZywKKwkuLi4KK30KKworTUJNU0hDSW5kaWNhdG9yIDo6PSBFTlVNRVJBVEVEIHsKKwl1bmNvbXByZXNzZWQtaGVhZGVyLAorCWNvbXByZXNzZWQtaGVhZGVyLAorCS4uLgorfQorCitNQk1TSVBNdWx0aWNhc3RBZGRyZXNzYW5kQVBOUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heG5vb2ZNdWx0aWNhc3RTZXJ2aWNlc1BlclJOQykpIE9GCisJVE1HSQorCitNQk1TTGlua2luZ0luZm9ybWF0aW9uIDo6PSBFTlVNRVJBVEVEIHsKKwl1RS1oYXMtam9pbmVkLW11bHRpY2FzdC1zZXJ2aWNlcywKKwkuLi4KK30KKworTUJNU1JlZ2lzdHJhdGlvblJlcXVlc3RUeXBlIDo6PSBFTlVNRVJBVEVEIHsKKwlyZWdpc3RlciwKKwlkZXJlZ2lzdGVyLAorCS4uLgorfQorCitNQk1TU2VydmljZUFyZWEgOjo9IE9DVEVUIFNUUklORworCitNQk1TU2Vzc2lvbkR1cmF0aW9uIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDMpKQorCisKKworTUJNU1Nlc3Npb25JZGVudGl0eSA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxKSkKKworTUJNU1Nlc3Npb25SZXBldGl0aW9uTnVtYmVyIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQorCitNRFQtQWN0aXZhdGlvbgkJOjo9CUVOVU1FUkFURUQgeyBpbW1lZGlhdGVNRFRvbmx5LAorCQkJCQkJCQkJIGxvZ2dlZE1EVG9ubHksCisJCQkJCQkJCQkgaW1tZWRpYXRlTURUYW5kVHJhY2UsCisJCQkJCQkJCQkuLi4gfQorCitNRFRBcmVhU2NvcGUJCTo6PQlDSE9JQ0UgeworCWNlbGxiYXNlZAkJCUNlbGxCYXNlZCwKKwlsYWJhc2VkCQkJCUxBQmFzZWQsCisJcmFiYXNlZAkJCQlSQUJhc2VkLAorCXBsbW4tYXJlYS1iYXNlZAkJTlVMTCwKKwkuLi4KK30KKworTURULUNvbmZpZ3VyYXRpb24JOjo9IFNFUVVFTkNFIHsKKwkJbWR0QWN0aXZhdGlvbgkJCQkJTURULUFjdGl2YXRpb24sCisJCW1kdEFyZWFTY29wZQkJCQkJTURUQXJlYVNjb3BlLAorCQltZHRNb2RlCQkJCQkJCU1EVE1vZGUsCisJCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBNRFQtQ29uZmlndXJhdGlvbi1FeHRJRXN9IH0gT1BUSU9OQUwsCisJCS4uLgorfQorCitNRFQtQ29uZmlndXJhdGlvbi1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJeyBJRCBpZC1TaWduYWxsaW5nQmFzZWRNRFRQTE1OTGlzdAkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIE1EVC1QTE1OLUxpc3QJCVBSRVNFTkNFIG9wdGlvbmFsIH0sCisuLi4KK30KKworTURUTW9kZSA6Oj0gQ0hPSUNFIHsKKwlpbW1lZGlhdGVNRFQJCUltbWVkaWF0ZU1EVCwKKwlsb2dnZWRNRFQJCQlMb2dnZWRNRFQsCisJLi4uCit9CisKK01EVC1QTE1OLUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhub29mTURUUExNTnMpKSBPRgorCVBMTU5pZGVudGl0eQorCitNRFQtUmVwb3J0LVBhcmFtZXRlcnMgOjo9IFNFUVVFTkNFIHsKKwlyZXBvcnRJbnRlcnZhbAkJCVJlcG9ydEludGVydmFsLAorCXJlcG9ydEFtb3VudAkJCVJlcG9ydEFtb3VudCwKKwkuLi4KK30KKworTWVhc3VyZW1lbnRRdWFudGl0eSA6Oj0gRU5VTUVSQVRFRCB7CisJCWNwaWNoRWNObywKKwkJY3BpY2hSU0NQLAorCQlwYXRobG9zcywKKwkJLi4uCit9CisKK01lYXN1cmVtZW50c1RvQWN0aXZhdGU6Oj0gQklUIFNUUklORyAoU0laRSAoOCkpCisKK01TSVNETiA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxLi45KSkKKworLS0gTgorCisKK05BUy1QRFUgOjo9IE9DVEVUIFNUUklORworCitOQVMtU2VxdWVuY2VOdW1iZXIgOjo9IEJJVCBTVFJJTkcgKFNJWkUgKDIpKQorLS0gUmVmZXJlbmNlOiAyNC4wMDgKKworTkFTLVN5bmNocm9uaXNhdGlvbkluZGljYXRvciA6Oj0gQklUIFNUUklORyAoU0laRSAoNCkpCisKK05ld0JTUy1Uby1PbGRCU1MtSW5mb3JtYXRpb24gOjo9IE9DVEVUIFNUUklORworCitOb25TZWFyY2hpbmdJbmRpY2F0aW9uIDo6PSBFTlVNRVJBVEVEIHsKKwlub24tc2VhcmNoaW5nLAorCXNlYXJjaGluZworfQorCitOUlRMb2FkSW5mb3JtYXRpb25WYWx1ZSA6Oj0gSU5URUdFUiAoMC4uMykKKworTnVsbC1OUkkgOjo9IEJJVCBTVFJJTkcgKFNJWkUgKDEwKSkKKworTnVtYmVyT2ZJdUluc3RhbmNlcyA6Oj0gSU5URUdFUiAoMS4uMikKKworTnVtYmVyT2ZTdGVwcyA6Oj0gSU5URUdFUiAoMS4uMTYpCisKKy0tIE8KKworT2ZmbG9hZC1SQUItUGFyYW1ldGVycyA6Oj0gU0VRVUVOQ0UgeworCWFjY2Vzc1BvaW50TmFtZQkJCQlPZmZsb2FkLVJBQi1QYXJhbWV0ZXJzLUFQTiwKKwljaGFyZ2luZ0NoYXJhY3RlcmlzdGljcwkJT2ZmbG9hZC1SQUItUGFyYW1ldGVycy1DaGFyZ2luZ0NoYXJhY3RlcmlzdGljcywKKwlpRS1FeHRlbnNpb25zCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBPZmZsb2FkLVJBQi1QYXJhbWV0ZXJzLUV4dElFc30gfSAJT1BUSU9OQUwsCisJLi4uCit9CisKK09mZmxvYWQtUkFCLVBhcmFtZXRlcnMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitPZmZsb2FkLVJBQi1QYXJhbWV0ZXJzLUFQTiA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxLi4yNTUpKQorCitPZmZsb2FkLVJBQi1QYXJhbWV0ZXJzLUNoYXJnaW5nQ2hhcmFjdGVyaXN0aWNzIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDIpKQorCitPbGRCU1MtVG9OZXdCU1MtSW5mb3JtYXRpb24gOjo9IE9DVEVUIFNUUklORworCitPTUMtSUQJCQkJCTo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDMuLjIyKSkKKy0tIFJlZmVyZW5jZTogR1NNIFRTIDEyLjIwIFsyNV0KKworT3V0LU9mLVVUUkFOIDo6PSBFTlVNRVJBVEVEeworCWNlbGwtcmVzZWxlY3Rpb24tdG8tRVVUUkFOLAorCS4uLgorfQorCistLSBQCisKK1BhZ2luZ0FyZWFJRCA6Oj0gQ0hPSUNFIHsKKwlsQUkJCQkJTEFJLAorCXJBSQkJCQlSQUksCisJLi4uCit9CisKK1BhZ2luZ0NhdXNlIDo6PSBFTlVNRVJBVEVEIHsKKwl0ZXJtaW5hdGluZy1jb252ZXJzYXRpb25hbC1jYWxsLAorCXRlcm1pbmF0aW5nLXN0cmVhbWluZy1jYWxsLAorCXRlcm1pbmF0aW5nLWludGVyYWN0aXZlLWNhbGwsCisJdGVybWluYXRpbmctYmFja2dyb3VuZC1jYWxsLAorCXRlcm1pbmF0aW5nLWxvdy1wcmlvcml0eS1zaWduYWxsaW5nLAorCS4uLiwKKwl0ZXJtaW5hdGluZy1oaWdoLXByaW9yaXR5LXNpZ25hbGxpbmcKK30KKworUERQLVR5cGVJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZQRFBEaXJlY3Rpb25zKSkgT0YKKwlQRFAtVHlwZQorCitQRFAtVHlwZSA6Oj0gRU5VTUVSQVRFRCB7CisJZW1wdHksCisJcHBwLAorCW9zcC1paG9zcwktLSB0aGlzIHZhbHVlIHNoYWxsIG5vdCBiZSB1c2VkIC0tICwKKwlpcHY0LAorCWlwdjYsCisJLi4uCit9CitQRFAtVHlwZUluZm9ybWF0aW9uLWV4dGVuc2lvbiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZQRFBEaXJlY3Rpb25zKSkgT0YKKwlQRFAtVHlwZS1leHRlbnNpb24KKworUERQLVR5cGUtZXh0ZW5zaW9uIDo6PSBFTlVNRVJBVEVEIHsKKwlpcHY0LWFuZC1pcHY2LAorCS4uLgorfQorCitQRFVUeXBlMTRGcmFtZVNlcXVlbmNlTnVtYmVyCQk6Oj0JSU5URUdFUigwLi4zKQorCitQZXJpb2RpY0xvY2F0aW9uSW5mbyA6Oj0gU0VRVUVOQ0UgeworCXJlcG9ydGluZ0Ftb3VudAkJCQlJTlRFR0VSICgxLi44NjM5OTk5LCAuLi4pLAorCXJlcG9ydGluZ0ludGVydmFsCQkJSU5URUdFUiAoMS4uODYzOTk5OSwgLi4uKSwKKwlpRS1FeHRlbnNpb25zCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBQZXJpb2RpY0xvY2F0aW9uSW5mby1FeHRJRXMgfSB9CU9QVElPTkFMLAorCS4uLgorfQorCitQZXJpb2RpY0xvY2F0aW9uSW5mby1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKKworUGVybWFuZW50TkFTLVVFLUlEIDo6PSBDSE9JQ0UgeworCWlNU0kJCQkJSU1TSSwKKwkuLi4KK30KKworUGVybWl0dGVkRW5jcnlwdGlvbkFsZ29yaXRobXMgOjo9IFNFUVVFTkNFIChTSVpFICgxLi4xNikpIE9GCisJRW5jcnlwdGlvbkFsZ29yaXRobQorCitQZXJtaXR0ZWRJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLjE2KSkgT0YKKwlJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtCisKK0xBQmFzZWQJOjo9IFNFUVVFTkNFIHsKKwlsYWlMaXN0CQkJTEFJLUxpc3QsCisJaUUtRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7TEFCYXNlZC1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK0xBQmFzZWQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCisKK0xBSS1MaXN0CTo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZkxBSXMpKSBPRgorCUxBSQorCisKKworTG9nZ2VkTURUCTo6PQlTRVFVRU5DRSB7CisJbG9nZ2luZ0ludGVydmFsCQlMb2dnaW5nSW50ZXJ2YWwsCisJbG9nZ2luZ0R1cmF0aW9uCQlMb2dnaW5nRHVyYXRpb24sCisJaUUtRXh0ZW5zaW9ucwkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7TG9nZ2VkTURULUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworTG9nZ2VkTURULUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworTG9nZ2luZ0ludGVydmFsCTo6PQlFTlVNRVJBVEVEIHsKKwlzMWQyOCwKKwlzMmQ1NiwKKwlzNWQxMiwKKwlzMTBkMjQsCisJczIwZDQ4LAorCXMzMGQ3MiwKKwlzNDBkOTYsCisJczYxZDQ0LAorCS4uLgorCX0KKworTG9nZ2luZ0R1cmF0aW9uCTo6PQlFTlVNRVJBVEVEIHsKKwkJbWluMTAsCisJCW1pbjIwLAorCQltaW40MCwKKwkJbWluNjAsCisJCW1pbjkwLAorCQltaW4xMjAsCisuLi59CisKKworCitQTE1OQmFzZWQ6Oj0gU0VRVUVOQ0UgeworCXBsbW5MaXN0CQkJCVBMTU5MaXN0LAorCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1BMTU5CYXNlZC1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK1BMTU5CYXNlZC1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK1BMTU5MaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4uIG1heG5vb2ZQTE1OcykpIE9GCisJUExNTmlkZW50aXR5CisKKworCitQTE1OaWRlbnRpdHkgCQkJCTo6PSBUQkNELVNUUklORyAoU0laRSAoMykpCisKK1BMTU5zLWluLXNoYXJlZC1uZXR3b3JrIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlBMTU5zU04pKSBPRgorCVNFUVVFTkNFIHsKKwkJcExNTmlkZW50aXR5CQkJUExNTmlkZW50aXR5LAorCQlsQS1MSVNUCQkJCQlMQS1MSVNULAorCQlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7IFBMTU5zLWluLXNoYXJlZC1uZXR3b3JrLUV4dElFc30gfSBPUFRJT05BTCwKKwkJLi4uCisJfQorCitQTE1Ocy1pbi1zaGFyZWQtbmV0d29yay1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK1BvcnQtTnVtYmVyIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDIpKQorCitQb3NpdGlvbmluZ0RhdGFEaXNjcmltaW5hdG9yIDo6PSBCSVQgU1RSSU5HIChTSVpFKDQpKQorCitQb3NpdGlvbmluZ0RhdGFTZXQgOjo9IFNFUVVFTkNFKFNJWkUoMS4ubWF4U2V0KSkgT0YgUG9zaXRpb25pbmdNZXRob2RBbmRVc2FnZQorCitQb3NpdGlvbmluZ01ldGhvZEFuZFVzYWdlIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUoMSkpCisKK1Bvc2l0aW9uaW5nUHJpb3JpdHkJOjo9IEVOVU1FUkFURUQgeworCWhpZ2gtUHJpb3JpdHksCisJbm9ybWFsLVByaW9yaXR5LAorLi4uCit9CisKK1Bvc2l0aW9uRGF0YSA6Oj0gU0VRVUVOQ0UgeworCXBvc2l0aW9uaW5nRGF0YURpc2NyaW1pbmF0b3IJCVBvc2l0aW9uaW5nRGF0YURpc2NyaW1pbmF0b3IsCisJcG9zaXRpb25pbmdEYXRhU2V0CQkJCQlQb3NpdGlvbmluZ0RhdGFTZXQJCQlPUFRJT05BTCwKKy0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgUG9zaXRpb25pbmdEYXRhRGlzY3JpbWluYXRvciBJRSBpcyBzZXQgdG8gdGhlIHZhbHVlICIwMDAwIiAtLQorCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1Bvc2l0aW9uRGF0YS1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK1Bvc2l0aW9uRGF0YS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJeyBJRCBpZC1HQU5TUy1Qb3NpdGlvbmluZ0RhdGFTZXQJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEdBTlNTLVBvc2l0aW9uaW5nRGF0YVNldAkJCQlQUkVTRU5DRSBvcHRpb25hbH18CisJeyBJRCBpZC1BZGRpdGlvbmFsLVBvc2l0aW9uaW5nRGF0YVNldAkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBBZGRpdGlvbmFsLVBvc2l0aW9uaW5nRGF0YVNldAkJUFJFU0VOQ0Ugb3B0aW9uYWx9LAorCS4uLgorfQorCitQb3NpdGlvbkRhdGFTcGVjaWZpY1RvR0VSQU5JdU1vZGUgOjo9IE9DVEVUIFNUUklORworCitQcmUtZW1wdGlvbkNhcGFiaWxpdHkgOjo9IEVOVU1FUkFURUQgeworCXNoYWxsLW5vdC10cmlnZ2VyLXByZS1lbXB0aW9uLAorCW1heS10cmlnZ2VyLXByZS1lbXB0aW9uCit9CisKK1ByZS1lbXB0aW9uVnVsbmVyYWJpbGl0eSA6Oj0gRU5VTUVSQVRFRCB7CisJbm90LXByZS1lbXB0YWJsZSwKKwlwcmUtZW1wdGFibGUKK30KKworUHJpb3JpdHlMZXZlbAkJCQk6Oj0gSU5URUdFUiB7IHNwYXJlICgwKSwgaGlnaGVzdCAoMSksIGxvd2VzdCAoMTQpLCBuby1wcmlvcml0eSAoMTUpIH0gKDAuLjE1KQorCitQcmlvcml0eS1DbGFzcy1JbmRpY2F0b3IgOjo9IEJJVCBTVFJJTkcgKFNJWkUoOCkpCisKK1Byb3ZpZGVkRGF0YSA6Oj0gQ0hPSUNFIHsKKwlzaGFyZWQtbmV0d29yay1pbmZvcm1hdGlvbgkJCQlTaGFyZWQtTmV0d29yay1JbmZvcm1hdGlvbiwKKwkuLi4KK30KKworUG93ZXJTYXZpbmdJbmRpY2F0b3IgOjo9IEVOVU1FUkFURUQgeworCXBzbUNvbmZpZ3VyZWQsCisJZURSWENvbmZpZ3VyZWQsCisJLi4uCit9CisKK1AtVE1TSQkJCQkJOjo9IE9DVEVUIFNUUklORyAoU0laRSAoNCkpCisKKy0tIFEKKworUXVldWluZ0FsbG93ZWQgOjo9IEVOVU1FUkFURUQgeworCXF1ZXVlaW5nLW5vdC1hbGxvd2VkLAorCXF1ZXVlaW5nLWFsbG93ZWQKK30KKworLS0gUgorUkFCLUFzeW1tZXRyeUluZGljYXRvcjo6PSBFTlVNRVJBVEVEIHsKKwlzeW1tZXRyaWMtYmlkaXJlY3Rpb25hbCwKKwlhc3ltbWV0cmljLXVuaWRpcmVjdGlvbmFsLWRvd25saW5rLAorCWFzeW1tZXRyaWMtdW5pZGlyZWN0aW9uYWwtdXBsaW5rLAorCWFzeW1tZXRyaWMtYmlkaXJlY3Rpb25hbCwKKwkuLi4KK30KKworUkFCYXNlZAk6Oj0gU0VRVUVOQ0UgeworCXJhaUxpc3QJCQlSQUktTGlzdCwKKwlpRS1FeHRlbnNpb25zCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBQmFzZWQtRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitSQUJhc2VkLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworCitSQUktTGlzdAk6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZSQUlzKSkgT0YKKwlSQUkKKworUkFCRGF0YVZvbHVtZVJlcG9ydCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZWb2wpKSBPRgorCVNFUVVFTkNFIHsKKwkJZGwtVW5zdWNjZXNzZnVsbHlUcmFuc21pdHRlZERhdGFWb2x1bWUJVW5zdWNjZXNzZnVsbHlUcmFuc21pdHRlZERhdGFWb2x1bWUsCisJCWRhdGFWb2x1bWVSZWZlcmVuY2UJCQkJCQlEYXRhVm9sdW1lUmVmZXJlbmNlCU9QVElPTkFMLAorCQlpRS1FeHRlbnNpb25zCQkJCQkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1JBQkRhdGFWb2x1bWVSZXBvcnQtRXh0SUVzfSB9CQlPUFRJT05BTCwKKwkJLi4uCisJfQorCitSQUJEYXRhVm9sdW1lUmVwb3J0LUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworUkFCLUlECQkJCQk6Oj0gQklUIFNUUklORyAoU0laRSAoOCkpCisKK1JBQi1QYXJhbWV0ZXItRXh0ZW5kZWRHdWFyYW50ZWVkQml0cmF0ZUxpc3QJOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mU2VwYXJhdGVUcmFmZmljRGlyZWN0aW9ucykpIE9GIEV4dGVuZGVkR3VhcmFudGVlZEJpdHJhdGUKKworUkFCLVBhcmFtZXRlci1FeHRlbmRlZE1heEJpdHJhdGVMaXN0CQk6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZTZXBhcmF0ZVRyYWZmaWNEaXJlY3Rpb25zKSkgT0YgRXh0ZW5kZWRNYXhCaXRyYXRlCisKKworUkFCLVBhcmFtZXRlci1HdWFyYW50ZWVkQml0cmF0ZUxpc3QJOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mU2VwYXJhdGVUcmFmZmljRGlyZWN0aW9ucykpIE9GIEd1YXJhbnRlZWRCaXRyYXRlCistLVRoaXMgSUUgc2hhbGwgYmUgaWdub3JlZCBpZiBTdXBwb3J0ZWQgR3VhcmFudGVlZCBCaXQgcmF0ZSBpcyBwcmVzZW50LS0KKworUkFCLVBhcmFtZXRlci1NYXhCaXRyYXRlTGlzdAkJOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mU2VwYXJhdGVUcmFmZmljRGlyZWN0aW9ucykpIE9GIE1heEJpdHJhdGUKKy0tVGhpcyBJRSBzaGFsbCBiZSBpZ25vcmVkIGlmIFN1cHBvcnRlZCBNYXhpbXVtIEJpdCByYXRlIGlzIHByZXNlbnQtLQorCitSQUItUGFyYW1ldGVycyA6Oj0gU0VRVUVOQ0UgeworCXRyYWZmaWNDbGFzcwkJCVRyYWZmaWNDbGFzcywKKwlyQUItQXN5bW1ldHJ5SW5kaWNhdG9yCQkJUkFCLUFzeW1tZXRyeUluZGljYXRvciwKKwltYXhCaXRyYXRlCQkJUkFCLVBhcmFtZXRlci1NYXhCaXRyYXRlTGlzdCwKKwlndWFyYW50ZWVkQml0UmF0ZQkJUkFCLVBhcmFtZXRlci1HdWFyYW50ZWVkQml0cmF0ZUxpc3QgT1BUSU9OQUwKKwktLSBUaGlzIElFIHNoYWxsIGJlIHByZXNlbnQgdGhlIHRyYWZmaWMgY2xhc3MgSUUgaXMgc2V0IHRvICJDb252ZXJzYXRpb25hbCIgb3IgIlN0cmVhbWluZyIgLS0sCisJZGVsaXZlcnlPcmRlcgkJCURlbGl2ZXJ5T3JkZXIsCisJbWF4U0RVLVNpemUJCQlNYXhTRFUtU2l6ZSwKKwlzRFUtUGFyYW1ldGVycwkJCVNEVS1QYXJhbWV0ZXJzLAorCXRyYW5zZmVyRGVsYXkJCQlUcmFuc2ZlckRlbGF5IE9QVElPTkFMCisJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IHRoZSB0cmFmZmljIGNsYXNzIElFIGlzIHNldCB0byAiQ29udmVyc2F0aW9uYWwiIG9yICJTdHJlYW1pbmciIC0tLAorCXRyYWZmaWNIYW5kbGluZ1ByaW9yaXR5CQlUcmFmZmljSGFuZGxpbmdQcmlvcml0eSBPUFRJT05BTAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCB0aGUgdHJhZmZpYyBjbGFzcyBJRSBpcyBzZXQgdG8gIkludGVyYWN0aXZlIiAtLSwKKwlhbGxvY2F0aW9uT3JSZXRlbnRpb25Qcmlvcml0eQlBbGxvY2F0aW9uT3JSZXRlbnRpb25Qcmlvcml0eSBPUFRJT05BTCwKKwlzb3VyY2VTdGF0aXN0aWNzRGVzY3JpcHRvcglTb3VyY2VTdGF0aXN0aWNzRGVzY3JpcHRvciBPUFRJT05BTAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCB0aGUgdHJhZmZpYyBjbGFzcyBJRSBpcyBzZXQgdG8gIkNvbnZlcnNhdGlvbmFsIiBvciAiU3RyZWFtaW5nIiAtLSwKKwlyZWxvY2F0aW9uUmVxdWlyZW1lbnQJUmVsb2NhdGlvblJlcXVpcmVtZW50IE9QVElPTkFMLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSQUItUGFyYW1ldGVycy1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK1JBQi1QYXJhbWV0ZXJzLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA1IHRvIGVuYWJsZSBpbmRpY2F0aW9uIHRoYXQgSW50ZXJhY3RpdmUgVXNlciBQbGFuZSBkYXRhIGlzIG9mIGEgc2lnbmFsbGluZyBuYXR1cmUgLS0KKwl7IElEIGlkLVNpZ25hbGxpbmdJbmRpY2F0aW9uCUNSSVRJQ0FMSVRZIGlnbm9yZQkJRVhURU5TSU9OIFNpZ25hbGxpbmdJbmRpY2F0aW9uCQlQUkVTRU5DRSBvcHRpb25hbCB9fAorLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDcgdG8gaW5kaWNhdGUgYW4gRXh0ZW5kZWQgR3VhcmFudGVlZCBCaXRyYXRlIC0tCit7IElEIGlkLVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRHdWFyYW50ZWVkQml0cmF0ZUxpc3QJQ1JJVElDQUxJVFkgcmVqZWN0CQlFWFRFTlNJT04gUkFCLVBhcmFtZXRlci1FeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlTGlzdAkJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGluZGljYXRlIGFuIEV4dGVuZGVkIE1heGltdW0gQml0cmF0ZSAtLQoreyBJRCBpZC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkTWF4Qml0cmF0ZUxpc3QJQ1JJVElDQUxJVFkgcmVqZWN0CQlFWFRFTlNJT04gUkFCLVBhcmFtZXRlci1FeHRlbmRlZE1heEJpdHJhdGVMaXN0CQlQUkVTRU5DRSBvcHRpb25hbCB9fAorLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDggdG8gaW5kaWNhdGUgYW4gU3VwcG9ydGVkIE1heGltdW0gQml0cmF0ZSAtLQoreyBJRCBpZC1SQUItUGFyYW1ldGVyLVN1cHBvcnRlZE1heEJpdHJhdGVMaXN0CUNSSVRJQ0FMSVRZIHJlamVjdAkJRVhURU5TSU9OIFN1cHBvcnRlZFJBQi1QYXJhbWV0ZXJCaXRyYXRlTGlzdAkJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIGluZGljYXRlIGFuIFN1cHBvcnRlZCBHdWFyYW50ZWVkIEJpdHJhdGUgLS0KK3sgSUQgaWQtUkFCLVBhcmFtZXRlci1TdXBwb3J0ZWRHdWFyYW50ZWVkQml0cmF0ZUxpc3QJQ1JJVElDQUxJVFkgcmVqZWN0CQlFWFRFTlNJT04gU3VwcG9ydGVkUkFCLVBhcmFtZXRlckJpdHJhdGVMaXN0CQlQUkVTRU5DRSBvcHRpb25hbCB9LAorCS4uLgorfQorCitSQUJQYXJhbWV0ZXJzTGlzdAk6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLiBtYXhOck9mUkFCcykpIE9GIFNFUVVFTkNFCXsKKwlyYWItSWQJCQkJCVJBQi1JRCwKKwljbi1kb21haW4JCQkJQ04tRG9tYWluSW5kaWNhdG9yLAorCXJhYkRhdGFWb2x1bWVSZXBvcnQJCVJBQkRhdGFWb2x1bWVSZXBvcnQJT1BUSU9OQUwsCisJdXBJbmZvcm1hdGlvbgkJCVVQSW5mb3JtYXRpb24JT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBSQUJQYXJhbWV0ZXJzTGlzdC1FeHRJRXMgfSB9CQlPUFRJT05BTCwKKwkuLi4KK30KKworUkFCUGFyYW1ldGVyc0xpc3QtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitSQUItU3ViZmxvd0NvbWJpbmF0aW9uQml0UmF0ZSAJOjo9IElOVEVHRVIgKDAuLjE2MDAwMDAwKQorCitSQUItVHJDSC1NYXBwaW5nIDo6PQlTRVFVRU5DRSAoIFNJWkUgKDEuLm1heE5yT2ZSQUJzKSkgT0YKKwlSQUItVHJDSC1NYXBwaW5nSXRlbQorCitSQUItVHJDSC1NYXBwaW5nSXRlbSA6Oj0gU0VRVUVOQ0UgeworCXJBQi1JRAkJCVJBQi1JRCwKKwl0ckNILUlELUxpc3QJVHJDSC1JRC1MaXN0LAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgUkFCLVRyQ0gtTWFwcGluZ0l0ZW0tRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitSQUItVHJDSC1NYXBwaW5nSXRlbS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOTkgdG8gZW5hYmxlIHRyYW5zZmVyIG9mIFJBQiBTdWJmbG93IG1hcHBpbmcgb250byBJdXIgdHJhbnNwb3J0IGNoYW5uZWwgSWRzIGZvciBhIGdpdmVuIGluZGljYXRlZCBkb21haW4gLS0KKwl7CUlEIGlkLUNOLURvbWFpbkluZGljYXRvcglDUklUSUNBTElUWSBpZ25vcmUJCUVYVEVOU0lPTiBDTi1Eb21haW5JbmRpY2F0b3IJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKKwkuLi4KK30KKworUkFDCQkJCQk6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxKSkKKworUkFJIDo6PSBTRVFVRU5DRSB7CisJbEFJCQkJCUxBSSwKKwlyQUMJCQkJUkFDLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSQUktRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitSQUktRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitSQUxpc3RvZklkbGVNb2RlVUVzIDo6PSBDSE9JQ0UgeworCW5vdEVtcHR5UkFMaXN0b2ZJZGxlTW9kZVVFcwkJCU5vdEVtcHR5UkFMaXN0b2ZJZGxlTW9kZVVFcywKKwllbXB0eUZ1bGxSQUxpc3RvZklkbGVNb2RlVUVzCQkJRU5VTUVSQVRFRCB7ZW1wdHlsaXN0LGZ1bGxsaXN0LC4uLn0sCisJLi4uCit9CisKK05vdEVtcHR5UkFMaXN0b2ZJZGxlTW9kZVVFcyA6Oj0gU0VRVUVOQ0UgeworCXJBb2ZJZGxlTW9kZVVFcwkJCVJBb2ZJZGxlTW9kZVVFcywKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7Tm90RW1wdHlSQUxpc3RvZklkbGVNb2RlVUVzLUV4dElFc30gfSBPUFRJT05BTAorfQorCitSQW9mSWRsZU1vZGVVRXMgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TUkEpKSBPRgorCVJBQworCitOb3RFbXB0eVJBTGlzdG9mSWRsZU1vZGVVRXMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworeyBJRCBpZC1MQW9mSWRsZU1vZGVVRXMJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gTEFMaXN0b2ZJZGxlTW9kZVVFcyBQUkVTRU5DRSBjb25kaXRpb25hbCB9LAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgUkEgb2YgSWRsZSBNb2RlIFVFcyBJRSBpcyBpbmNsdWRlZC4gLS0KKwkuLi4KK30KKworTEFMaXN0b2ZJZGxlTW9kZVVFcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVNSQSkpIE9GCisJTEFJCisKK1JBVC1UeXBlIDo6PSBFTlVNRVJBVEVEIHsKKwl1dHJhbiwKKwlnZXJhbiwKKwkuLi4KK30KKworUmF0ZUNvbnRyb2xBbGxvd2VkIDo6PSBFTlVNRVJBVEVEIHsKKwlub3QtYWxsb3dlZCwKKwlhbGxvd2VkCit9CisKK1JlZGlyZWN0QXR0ZW1wdEZsYWcgCTo6PSBOVUxMCisKK1JlZGlyZWN0aW9uQ29tcGxldGVkCTo6PSBFTlVNRVJBVEVEIHsKKwlyZWRpcmVjdGlvbi1jb21wbGV0ZWQsCisJLi4uCit9CisKK1JlamVjdENhdXNlVmFsdWUgOjo9IEVOVU1FUkFURUQgeworCXBMTU4tTm90LUFsbG93ZWQsCisJbG9jYXRpb24tQXJlYS1Ob3QtQWxsb3dlZCwKKwlyb2FtaW5nLU5vdC1BbGxvd2VkLUluLVRoaXMtTG9jYXRpb24tQXJlYSwKKwluby1TdWl0YWJsZS1DZWxsLUluLUxvY2F0aW9uLUFyZWEsCisJZ1BSUy1TZXJ2aWNlcy1Ob3QtQWxsb3dlZC1Jbi1UaGlzLVBMTU4sCisJY1MtUFMtY29vcmRpbmF0aW9uLXJlcXVpcmVkLAorCS4uLiwKKwluZXR3b3JrLWZhaWx1cmUsCisJbm90LWF1dGhvcml6ZWQtZm9yLXRoaXMtQ1NHCit9CisKKworUmVsb2NhdGlvblJlcXVpcmVtZW50IDo6PSBFTlVNRVJBVEVEIHsKKwlsb3NzbGVzcywKKwlub25lLAorCS4uLiwKKwlyZWFsdGltZQorfQorCitSZWxvY2F0aW9uVHlwZSA6Oj0gRU5VTUVSQVRFRCB7CisJdWUtbm90LWludm9sdmVkLAorCXVlLWludm9sdmVkLAorCS4uLgorfQorCitSZXBldGl0aW9uTnVtYmVyMCA6Oj0gSU5URUdFUiAoMC4uMjU1KQorCitSZXBldGl0aW9uTnVtYmVyMSA6Oj0gSU5URUdFUiAoMS4uMjU2KQorCisKK1JlcG9ydEFyZWEgOjo9IEVOVU1FUkFURUQgeworCXNlcnZpY2UtYXJlYSwKKwlnZW9ncmFwaGljYWwtYXJlYSwKKwkuLi4KK30KKworUmVwb3J0SW50ZXJ2YWwJCTo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCW1zMjUwLAorCQkJCQkJbXM1MDAsCisJCQkJCQltczEwMDAsCisJCQkJCQltczIwMDAsCisJCQkJCQltczMwMDAsCisJCQkJCQltczQwMDAsCisJCQkJCQltczYwMDAsCisJCQkJCQltczEyMDAwLAorCQkJCQkJbXMxNjAwMCwKKwkJCQkJCW1zMjAwMDAsCisJCQkJCQltczI0MDAwLAorCQkJCQkJbXMzMjAwMCwKKwkJCQkJCW1zNjQwMDAsCisJCQkJCQkuLi4sCisJCQkJCQltczgwMDAsCisJCQkJCQltczI4MDAwCit9CisKK1JlcG9ydEFtb3VudAkJOjo9CUVOVU1FUkFURUQgeyBuMSwgbjIsIG40LCBuOCwgbjE2LCBuMzIsIG42NCwgaW5maW5pdHksIC4uLiB9CisKK1JlcXVlc3RlZEdQU0Fzc2lzdGFuY2VEYXRhIAk6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxIC4uIDM4ICkpCisJLS0gZ3BzQXNzaXN0YW5jZURhdGEgYXMgZGVmaW5lZCBpbiAyNC4wODAgLS0KKworUmVxdWVzdGVkR0FOU1NBc3Npc3RhbmNlRGF0YSAJOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSAuLiAyMDEgKSkKKwktLSBnYW5zc0Fzc2lzdGFuY2VEYXRhIGFzIGRlZmluZWQgaW4gMjQuMDgwIC0tCisKK1JlcXVlc3RlZExvY2F0aW9uUmVsYXRlZERhdGFUeXBlIDo6PSBFTlVNRVJBVEVEIHsKKwlkZWNpcGhlcmluZ0tleXNVRUJhc2VkT1RET0EsCisJZGVjaXBoZXJpbmdLZXlzQXNzaXN0ZWRHUFMsCisJZGVkaWNhdGVkQXNzaXN0YW5jZURhdGFVRUJhc2VkT1RET0EsCisJZGVkaWNhdGVkQXNzaXN0YW5jZURhdGFBc3Npc3RlZEdQUywKKwkuLi4sCistLSBSZWxlYXNlIDcgZXh0ZW5zaW9uIGVsZW1lbnRzIC0tCisJZGVjaXBoZXJpbmdLZXlzQXNzaXN0ZWRHQU5TUywKKwlkZWRpY2F0ZWRBc3Npc3RhbmNlRGF0YUFzc2lzdGVkR0FOU1MsCisJZGVjaXBoZXJpbmdLZXlzQXNzaXN0ZWRHUFNhbmRHQU5TUywKKwlkZWRpY2F0ZWRBc3Npc3RhbmNlRGF0YUFzc2lzdGVkR1BTYW5kR0FOU1MKK30KKworUmVxdWVzdGVkTUJNU0lQTXVsdGljYXN0QWRkcmVzc2FuZEFQTlJlcXVlc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhub29mTXVsdGljYXN0U2VydmljZXNQZXJSTkMpKSBPRgorCU1CTVNJUE11bHRpY2FzdEFkZHJlc3NhbmRBUE5saXN0CisKK01CTVNJUE11bHRpY2FzdEFkZHJlc3NhbmRBUE5saXN0IDo6PSBTRVFVRU5DRSB7CisJdE1HSQkJCQkJVE1HSSwKKwlpUE11bHRpY2FzdEFkZHJlc3MJCUlQTXVsdGljYXN0QWRkcmVzcywKKwlhUE4JCQkJCQlBUE4sCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge01CTVNJUE11bHRpY2FzdEFkZHJlc3NhbmRBUE5saXN0LUV4dElFc30gfSAJT1BUSU9OQUwsCisJLi4uCit9CisKK01CTVNJUE11bHRpY2FzdEFkZHJlc3NhbmRBUE5saXN0LUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworUmVxdWVzdGVkTXVsdGljYXN0U2VydmljZUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi4gbWF4bm9vZk11bHRpY2FzdFNlcnZpY2VzUGVyVUUpKSBPRgorCVRNR0kKKworUmVxdWVzdGVkLVJBQi1QYXJhbWV0ZXItVmFsdWVzIDo6PSBTRVFVRU5DRSB7CisJcmVxdWVzdGVkTWF4Qml0cmF0ZXMJCQkJUmVxdWVzdGVkLVJBQi1QYXJhbWV0ZXItTWF4Qml0cmF0ZUxpc3QJCQlPUFRJT05BTCwKKwlyZXF1ZXN0ZWRHdWFyYW50ZWVkQml0cmF0ZXMJCQkJUmVxdWVzdGVkLVJBQi1QYXJhbWV0ZXItR3VhcmFudGVlZEJpdHJhdGVMaXN0CQkJT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBSZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1WYWx1ZXMtRXh0SUVzfSB9IAlPUFRJT05BTCwKKwkuLi4KK30KKworUmVxdWVzdGVkLVJBQi1QYXJhbWV0ZXItVmFsdWVzLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA2IHRvIGVuYWJsZSBSTkMgdG8gcmVxdWVzdCB0aGUgZXhlY3V0aW9uIG9mIGFuIGFsdGVybmF0aXZlIFJBQiBjb25maWd1cmF0aW9uIC0tCisJeyBJRCBpZC1BbHRlcm5hdGl2ZVJBQkNvbmZpZ3VyYXRpb25SZXF1ZXN0CQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIEFsdGVybmF0aXZlUkFCQ29uZmlndXJhdGlvblJlcXVlc3QJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIHJlcXVlc3QgYW4gRXh0ZW5kZWQgTWF4aW11bSBCaXRyYXRlIC0tCisJeyBJRCBpZC1SZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZE1heEJpdHJhdGVMaXN0CQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIFJlcXVlc3RlZC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkTWF4Qml0cmF0ZUxpc3QJUFJFU0VOQ0Ugb3B0aW9uYWwgfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIHJlcXVlc3QgYW4gRXh0ZW5kZWQgR3VhcmFudGVlZCBCaXRyYXRlIC0tCisJeyBJRCBpZC1SZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlTGlzdAkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBSZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1FeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlTGlzdAlQUkVTRU5DRSBvcHRpb25hbCB9fAorLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDggdG8gcmVxdWVzdCBhbiBTdXBwb3J0ZWQgTWF4aW11bSBCaXRyYXRlIC0tCisJeyBJRCBpZC1SZXF1ZXN0ZWQtUkFCLVBhcmFtZXRlci1TdXBwb3J0ZWRNYXhCaXRyYXRlTGlzdAkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBTdXBwb3J0ZWRSQUItUGFyYW1ldGVyQml0cmF0ZUxpc3QJCVBSRVNFTkNFIG9wdGlvbmFsIH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgOCB0byByZXF1ZXN0IGFuIFN1cHBvcnRlZCBHdWFyYW50ZWVkIEJpdHJhdGUgLS0KKwl7IElEIGlkLVJlcXVlc3RlZC1SQUItUGFyYW1ldGVyLVN1cHBvcnRlZEd1YXJhbnRlZWRCaXRyYXRlTGlzdAkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBTdXBwb3J0ZWRSQUItUGFyYW1ldGVyQml0cmF0ZUxpc3QJUFJFU0VOQ0Ugb3B0aW9uYWwgfSwKKwkuLi4KK30KKworUmVxdWVzdGVkLVJBQi1QYXJhbWV0ZXItRXh0ZW5kZWRNYXhCaXRyYXRlTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZTZXBhcmF0ZVRyYWZmaWNEaXJlY3Rpb25zKSkgT0YgRXh0ZW5kZWRNYXhCaXRyYXRlCisKK1JlcXVlc3RlZC1SQUItUGFyYW1ldGVyLUV4dGVuZGVkR3VhcmFudGVlZEJpdHJhdGVMaXN0CTo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlNlcGFyYXRlVHJhZmZpY0RpcmVjdGlvbnMpKSBPRiBFeHRlbmRlZEd1YXJhbnRlZWRCaXRyYXRlCisKK1JlcXVlc3RlZC1SQUItUGFyYW1ldGVyLU1heEJpdHJhdGVMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnJPZlNlcGFyYXRlVHJhZmZpY0RpcmVjdGlvbnMpKSBPRiBNYXhCaXRyYXRlCisKK1JlcXVlc3RlZC1SQUItUGFyYW1ldGVyLUd1YXJhbnRlZWRCaXRyYXRlTGlzdAk6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZTZXBhcmF0ZVRyYWZmaWNEaXJlY3Rpb25zKSkgT0YgR3VhcmFudGVlZEJpdHJhdGUKKworCitSZXF1ZXN0VHlwZSA6Oj0gU0VRVUVOQ0UgeworCWV2ZW50CQkJCUV2ZW50LAorCXJlcG9ydEFyZWEJCQlSZXBvcnRBcmVhLAorCWFjY3VyYWN5Q29kZQkJSU5URUdFUiAoMC4uMTI3KQlPUFRJT05BTCwKKwkuLi4KK30KKworUmVzaWR1YWxCaXRFcnJvclJhdGlvIDo6PSBTRVFVRU5DRSB7CisJbWFudGlzc2EJCQlJTlRFR0VSICgxLi45KSwKKwlleHBvbmVudAkJCUlOVEVHRVIgKDEuLjgpLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtSZXNpZHVhbEJpdEVycm9yUmF0aW8tRXh0SUVzfSB9IE9QVElPTkFMCit9CistLSBSZXNpZHVhbEJpdEVycm9yUmF0aW8gPSBtYW50aXNzYSAqIDEwXi1leHBvbmVudAorCitSZXNpZHVhbEJpdEVycm9yUmF0aW8tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitSZXNwb25zZVRpbWUJOjo9IEVOVU1FUkFURUQgeworCWxvd2RlbGF5LAorCWRlbGF5dG9sZXJhbnQsCisuLi4KK30KKworUklNSW5mb3JtYXRpb24JCQkJCTo6PSBPQ1RFVCBTVFJJTkcKKworUklNLVRyYW5zZmVyIDo6PSBTRVFVRU5DRSB7CisJcklNSW5mb3JtYXRpb24JCQkJUklNSW5mb3JtYXRpb24sCisJcklNUm91dGluZ0FkZHJlc3MJCQlSSU1Sb3V0aW5nQWRkcmVzcwlPUFRJT05BTCwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7UklNLVRyYW5zZmVyLUV4dElFc30gfSBPUFRJT05BTAorfQorCitSSU0tVHJhbnNmZXItRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitSSU1Sb3V0aW5nQWRkcmVzcyA6Oj0gQ0hPSUNFIHsKKwl0YXJnZXRSTkMtSUQJCQkJCVRhcmdldFJOQy1JRCwKKwlnRVJBTi1DZWxsLUlECQkJCQlHRVJBTi1DZWxsLUlELAorCS4uLiAsCisJdGFyZ2V0ZU5CLUlECQkJCQlUYXJnZXRFTkItSUQKK30KKworCitSTkMtSUQJCQkJCTo6PSBJTlRFR0VSICgwLi40MDk1KQorLS0gUk5DLUlECQkJCQk6Oj0gQklUIFNUUklORyAoU0laRSAoMTIpKQorLS0gSGFybW9uaXplZCB3aXRoIFJOU0FQIGFuZCBOQkFQIGRlZmluaXRpb25zCisKKworUk5DVHJhY2VJbmZvcm1hdGlvbjo6PSBTRVFVRU5DRSB7CisJdHJhY2VSZWZlcmVuY2UJCQkJCVRyYWNlUmVmZXJlbmNlLAorCXRyYWNlQWN0aXZhdGlvbkluZGljYXRvcgkJRU5VTUVSQVRFRCB7YWN0aXZhdGVkLGRlYWN0aXZhdGVkfSwKKwllcXVpcG1lbnRzVG9CZVRyYWNlZAkJCUVxdWlwbWVudHNUb0JlVHJhY2VkCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBUcmFjZSBBY3RpdmF0aW9uIEluZGljYXRvciBJRSBpcyBzZXQgdG8gIkFjdGl2YXRlZCIuCisJaUUtRXh0ZW5zaW9ucwkJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7IFJOQ1RyYWNlSW5mb3JtYXRpb24tRXh0SUVzfSB9CQlPUFRJT05BTAorfQorCitSTkNUcmFjZUluZm9ybWF0aW9uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMSB0byBlbmFibGUgYW5vbnltaXphdGlvbiBNRFQgZm9yIGFyZWEgYmFzZWQgTURUIC0tCisJe0lEIGlkLVRyYWNlUmVjb3JkaW5nU2Vzc2lvblJlZmVyZW5jZQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBUcmFjZVJlY29yZGluZ1Nlc3Npb25SZWZlcmVuY2UJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorCXtJRCBpZC1JTVNJCQkJCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBJTVNJCQkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorCXtJRCBpZC1UcmFjZS1Db2xsZWN0aW9uLUVudGl0eS1JUC1BZGRlc3MJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBUcmFuc3BvcnRMYXllckFkZHJlc3MJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorCXtJRCBpZC1TZXJ2aW5nLUNlbGwtSWRlbnRpZmllcgkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFVUUkFOLUNlbGxJRAkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0sCisJLi4uCit9CisKK1JOU0FQUmVsb2NhdGlvblBhcmFtZXRlcnMJCQk6Oj0JU0VRVUVOQ0UgeworCXJhYlBhcm1ldGVyc0xpc3QJCQlSQUJQYXJhbWV0ZXJzTGlzdCAJCQkJCQlPUFRJT05BTCwKKwlsb2NhdGlvblJlcG9ydGluZwkJCUxvY2F0aW9uUmVwb3J0aW5nVHJhbnNmZXJJbmZvcm1hdGlvbglPUFRJT05BTCwKKwl0cmFjZUluZm9ybWF0aW9uCQkJVHJhY2VJbmZvcm1hdGlvbiAJCQkJCQlPUFRJT05BTCwKKwlzb3VyY2VTQUkJCQkJCVNBSQkJCQkJCQkJCQlPUFRJT05BTCwKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgUk5TQVBSZWxvY2F0aW9uUGFyYW1ldGVycy1FeHRJRXMgfSB9CQlPUFRJT05BTCwKKwkuLi4KK30KKworUk5TQVBSZWxvY2F0aW9uUGFyYW1ldGVycy1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK1JSQy1Db250YWluZXIJCQkJOjo9IE9DVEVUIFNUUklORworCitSVExvYWRWYWx1ZQk6Oj0gSU5URUdFUiAoMC4uMTAwKQorCitSU1JWQ0MtSE8tSW5kaWNhdGlvbiA6Oj0gRU5VTUVSQVRFRCB7CisJcHMtb25seSwKKwkuLi4KK30KKworUlNSVkNDLUluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJbm9uY2UJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEyOCkpLAorCWlNU0luZm9ybWF0aW9uCQkJT0NURVQgU1RSSU5HKFNJWkUoMS4uIG1heFNpemVPZklNU0luZm8pKSwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7IFJTUlZDQy1JbmZvcm1hdGlvbi1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCisKK30KKworUlNSVkNDLUluZm9ybWF0aW9uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworUlNSVkNDLU9wZXJhdGlvbi1Qb3NzaWJsZSA6Oj0gRU5VTUVSQVRFRCB7CisJcnNydmNjLXBvc3NpYmxlLAorCS4uLgorfQorCistLSBTCisKK1NBQwkJCQkJOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMikpCitTQUkgOjo9IFNFUVVFTkNFIHsKKwlwTE1OaWRlbnRpdHkJCQkJUExNTmlkZW50aXR5LAorCWxBQwkJCQlMQUMsCisJc0FDCQkJCVNBQywKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7U0FJLUV4dElFc30gfSBPUFRJT05BTAorfQorCitTQUktRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitTQVBJIDo6PSBFTlVNRVJBVEVEIHsKKwlzYXBpLTAsCisJc2FwaS0zLAorCS4uLgorfQorCitTZXNzaW9uVXBkYXRlSUQgOjo9IElOVEVHRVIgKDAuLiAxMDQ4NTc1KQorU2hhcmVkLU5ldHdvcmstSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwkJcExNTnMtaW4tc2hhcmVkLW5ldHdvcmsJCQlQTE1Ocy1pbi1zaGFyZWQtbmV0d29yaywKKwkJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1NoYXJlZC1OZXR3b3JrLUluZm9ybWF0aW9uLUV4dElFc30gfSBPUFRJT05BTCwKKwkJLi4uCisJfQorCitTZXNzaW9uLVJlLWVzdGFibGlzaG1lbnQtSW5kaWNhdG9yCTo6PSBFTlVNRVJBVEVEIHt0cnVlLCAuLi59CisKK1NoYXJlZC1OZXR3b3JrLUluZm9ybWF0aW9uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworU2lnbmFsbGluZ0luZGljYXRpb24gOjo9IEVOVU1FUkFURUQgeworCXNpZ25hbGxpbmcsCisJLi4uCit9CisKK1NEVS1FcnJvclJhdGlvIDo6PSBTRVFVRU5DRSB7CisJbWFudGlzc2EJCQlJTlRFR0VSICgxLi45KSwKKwlleHBvbmVudAkJCUlOVEVHRVIgKDEuLjYpLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtTRFUtRXJyb3JSYXRpby1FeHRJRXN9IH0gT1BUSU9OQUwKK30KKy0tIFNEVS1FcnJvclJhdGlvID0gbWFudGlzc2EgKiAxMF4tZXhwb25lbnQKKworU0RVLUVycm9yUmF0aW8tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorU0RVLUZvcm1hdEluZm9ybWF0aW9uUGFyYW1ldGVycyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQi1TdWJmbG93Q29tYmluYXRpb24pKSBPRgorCVNFUVVFTkNFIHsKKwkJc3ViZmxvd1NEVS1TaXplCQkJU3ViZmxvd1NEVS1TaXplIAlPUFRJT05BTCwKKwkJckFCLVN1YmZsb3dDb21iaW5hdGlvbkJpdFJhdGUJUkFCLVN1YmZsb3dDb21iaW5hdGlvbkJpdFJhdGUgCU9QVElPTkFMLAorCQlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7U0RVLUZvcm1hdEluZm9ybWF0aW9uUGFyYW1ldGVycy1FeHRJRXN9IH0gT1BUSU9OQUwsCisJCS4uLgorCX0KKworU0RVLUZvcm1hdEluZm9ybWF0aW9uUGFyYW1ldGVycy1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK1NEVS1QYXJhbWV0ZXJzIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCLVN1YmZsb3dzKSkgT0YKKwlTRVFVRU5DRSB7CisJCXNEVS1FcnJvclJhdGlvCQkJU0RVLUVycm9yUmF0aW8gT1BUSU9OQUwKKwkJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBEZWxpdmVyeSBPZiBFcnJvbmVvdXMgU0RVIElFIGlzIHNldCB0byAiWWVzIiBvciAiTm8iIC0tLAorCQlyZXNpZHVhbEJpdEVycm9yUmF0aW8JCVJlc2lkdWFsQml0RXJyb3JSYXRpbywKKwkJZGVsaXZlcnlPZkVycm9uZW91c1NEVQkJRGVsaXZlcnlPZkVycm9uZW91c1NEVSwKKwkJc0RVLUZvcm1hdEluZm9ybWF0aW9uUGFyYW1ldGVycwlTRFUtRm9ybWF0SW5mb3JtYXRpb25QYXJhbWV0ZXJzIE9QVElPTkFMLAorCQlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7U0RVLVBhcmFtZXRlcnMtRXh0SUVzfSB9IE9QVElPTkFMLAorCQkuLi4KKwl9CisKK1NEVS1QYXJhbWV0ZXJzLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworU0dTTi1Hcm91cC1JZGVudGl0eSA6Oj0gQ0hPSUNFIHsKKwludWxsLU5SSQkJCQlOdWxsLU5SSSwKKwlzR1NOLUdyb3VwLUlECQkJU0dTTi1Hcm91cC1JRAorfQorCitTR1NOLUdyb3VwLUlEIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDIpKQorCitTTkEtQWNjZXNzLUluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJCWF1dGhvcmlzZWRQTE1OcwkJCUF1dGhvcmlzZWRQTE1OcywKKwkJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1NOQS1BY2Nlc3MtSW5mb3JtYXRpb24tRXh0SUVzfSB9IE9QVElPTkFMLAorCQkuLi4KKwl9CisKK1NOQS1BY2Nlc3MtSW5mb3JtYXRpb24tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitTTkFDCQkJCTo6PSBJTlRFR0VSICgwLi42NTUzNSkKKworU2VydmljZS1IYW5kb3ZlciA6Oj0gRU5VTUVSQVRFRCB7CisJaGFuZG92ZXItdG8tR1NNLXNob3VsZC1iZS1wZXJmb3JtZWQsCisJaGFuZG92ZXItdG8tR1NNLXNob3VsZC1ub3QtYmUtcGVyZm9ybWVkLAorCWhhbmRvdmVyLXRvLUdTTS1zaGFsbC1ub3QtYmUtcGVyZm9ybWVkLAorCS4uLgorfQorCitTb3VyY2UtVG9UYXJnZXQtVHJhbnNwYXJlbnRDb250YWluZXIgOjo9IE9DVEVUIFNUUklORworLS0gVGhpcyBJRSBpcyBhIHRyYW5zcGFyZW50IGNvbnRhaW5lciwgdGhlIElFIHNoYWxsIGJlIGVuY29kZWQgbm90IGFzIGFuIE9DVEVUIFNUUklORyBidXQgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIHNwZWNpZmljYXRpb25zIG9mIHRoZSB0YXJnZXQgc3lzdGVtLgorLS0gTm90ZTogSW4gdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGlzIHNwZWNpZmljYXRpb24sIHRoaXMgSUUgbWF5IGVpdGhlciBjYXJyeSB0aGUgU291cmNlIFJOQyB0bworLS0gVGFyZ2V0IFJOQyBUcmFuc3BhcmVudCBDb250YWluZXIgb3IgdGhlIFNvdXJjZSBlTkIgdG8gVGFyZ2V0IGVOQiBUcmFuc3BhcmVudCBDb250YWluZXIgSUUgYXMKKy0tIGRlZmluZWQgaW4gVFMgMzYuNDEzIFs0OV0KKworU291cmNlZU5vZGVCLVRvVGFyZ2V0ZU5vZGVCLVRyYW5zcGFyZW50Q29udGFpbmVyIDo6PSBPQ1RFVCBTVFJJTkcKKworCitTb3VyY2VDZWxsSUQgOjo9IENIT0lDRSB7CisJc291cmNlVVRSQU5DZWxsSUQJCQlTb3VyY2VVVFJBTkNlbGxJRCwKKwlzb3VyY2VHRVJBTkNlbGxJRAkJCUNHSSwKKwkuLi4KK30KKworU291cmNlQlNTLVRvVGFyZ2V0QlNTLVRyYW5zcGFyZW50Q29udGFpbmVyCQk6Oj0gT0NURVQgU1RSSU5HCisKK1NvdXJjZUlEIDo6PSBDSE9JQ0UgeworCXNvdXJjZVJOQy1JRAkJCVNvdXJjZVJOQy1JRCwKKwlzQUkJCQkJU0FJLAorCS4uLgorfQorCisKK1NvdXJjZVJOQy1JRCA6Oj0gU0VRVUVOQ0UgeworCXBMTU5pZGVudGl0eQkJCQlQTE1OaWRlbnRpdHksCisJck5DLUlECQkJCVJOQy1JRCwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7U291cmNlUk5DLUlELUV4dElFc30gfSBPUFRJT05BTAorfQorCitTb3VyY2VSTkMtSUQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDcgdG8gaW5kaWNhdGUgZXh0ZW5kZWQgUk5DLUlEIC0tCisJeyBJRCBpZC1FeHRlbmRlZFJOQy1JRAkJCQlDUklUSUNBTElUWSByZWplY3QJRVhURU5TSU9OIEV4dGVuZGVkUk5DLUlECQlQUkVTRU5DRSBvcHRpb25hbAl9LAorCS4uLgorfQorCitTb3VyY2VSTkMtVG9UYXJnZXRSTkMtVHJhbnNwYXJlbnRDb250YWluZXIgOjo9IFNFUVVFTkNFIHsKKwlyUkMtQ29udGFpbmVyCQkJUlJDLUNvbnRhaW5lciwKKwludW1iZXJPZkl1SW5zdGFuY2VzCQlOdW1iZXJPZkl1SW5zdGFuY2VzLAorCXJlbG9jYXRpb25UeXBlIAkJCVJlbG9jYXRpb25UeXBlLAorCWNob3NlbkludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0gQ2hvc2VuSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobQlPUFRJT05BTCwKKwlpbnRlZ3JpdHlQcm90ZWN0aW9uS2V5CQlJbnRlZ3JpdHlQcm90ZWN0aW9uS2V5CQkJT1BUSU9OQUwsCisJY2hvc2VuRW5jcnlwdGlvbkFsZ29yaXRoRm9yU2lnbmFsbGluZyBDaG9zZW5FbmNyeXB0aW9uQWxnb3JpdGhtCQlPUFRJT05BTCwKKwljaXBoZXJpbmdLZXkJCQlFbmNyeXB0aW9uS2V5CQkJCU9QVElPTkFMLAorCWNob3NlbkVuY3J5cHRpb25BbGdvcml0aEZvckNTCUNob3NlbkVuY3J5cHRpb25BbGdvcml0aG0JCU9QVElPTkFMLAorCWNob3NlbkVuY3J5cHRpb25BbGdvcml0aEZvclBTCUNob3NlbkVuY3J5cHRpb25BbGdvcml0aG0JCU9QVElPTkFMLAorCWQtUk5USQkJCQlELVJOVEkgCQkJCQlPUFRJT05BTAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgUmVsb2NhdGlvbiB0eXBlIElFIGlzIHNldCB0byAiVUUgbm90IGludm9sdmVkIGluIHJlbG9jYXRpb24gb2YgU1JOUyIgLS0sCisJdGFyZ2V0Q2VsbElkCQkJVGFyZ2V0Q2VsbElkCQkJCU9QVElPTkFMCisJLS0gVGhpcyBJRSBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBSZWxvY2F0aW9uIHR5cGUgSUUgaXMgc2V0IHRvICJVRSBpbnZvbHZlZCBpbiByZWxvY2F0aW9uIG9mIFNSTlMiIC0tLAorCXJBQi1UckNILU1hcHBpbmcJCQlSQUItVHJDSC1NYXBwaW5nCQkJCU9QVElPTkFMLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtTb3VyY2VSTkMtVG9UYXJnZXRSTkMtVHJhbnNwYXJlbnRDb250YWluZXItRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitTb3VyY2VSTkMtVG9UYXJnZXRSTkMtVHJhbnNwYXJlbnRDb250YWluZXItRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDk5IHRvIGVuYWJsZSB0cmFuc2ZlciBvZiBTUkIgbWFwcGluZyBvbnRvIEl1ciB0cmFuc3BvcnQgY2hhbm5lbCBJZHMgLS0KKwl7SUQgaWQtU1JCLVRyQ0gtTWFwcGluZwkJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gU1JCLVRyQ0gtTWFwcGluZwkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNSB0byBlbmFibGUgSW50ZXIgUkFOIExvYWQgSW5mb3JtYXRpb24gRXhjaGFuZ2Ugb3ZlciBJdSAtLQorCXtJRCBpZC1DZWxsTG9hZEluZm9ybWF0aW9uR3JvdXAJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBDZWxsTG9hZEluZm9ybWF0aW9uR3JvdXAJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDYgdG8gcHJvdmlkZSBUcmFjZSBSZWNvcmRpbmcgU2Vzc2lvbiBJbmZvcm1hdGlvbiB0byB0aGUgVGFyZ2V0IFJOQyAtLQorCXtJRCBpZC1UcmFjZVJlY29yZGluZ1Nlc3Npb25JbmZvcm1hdGlvbgkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBUcmFjZVJlY29yZGluZ1Nlc3Npb25JbmZvcm1hdGlvbglQUkVTRU5DRSBvcHRpb25hbH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBpbmRpY2F0ZSB0byB0aGUgVGFyZ2V0IFJOQyB0aGF0IHRoZSBVRSBoYXMgYWN0aXZhdGVkIE11bHRpY2FzdCBTZXJ2aWNlIC0tCisJe0lEIGlkLU1CTVNMaW5raW5nSW5mb3JtYXRpb24JCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBNQk1TTGlua2luZ0luZm9ybWF0aW9uCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18CisJe0lEIGlkLWQtUk5USS1mb3ItTm9JdUNTVVAJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gRC1STlRJCQkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorCXtJRCBpZC1VRS1IaXN0b3J5LUluZm9ybWF0aW9uCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVUUtSGlzdG9yeS1JbmZvcm1hdGlvbgkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorCXtJRCBpZC1TdWJzY3JpYmVyUHJvZmlsZUlEZm9yUkZQCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBTdWJzY3JpYmVyUHJvZmlsZUlEZm9yUkZQCQkJCVBSRVNFTkNFIG9wdGlvbmFsfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA4IHRvIHRyYW5zZmVyIHRvIHRoZSBUYXJnZXQgUk5DIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIFNSVkNDIG9wZXJhdGlvbiAtLQorCXtJRCBpZC1TUlZDQy1JbmZvcm1hdGlvbiAJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gU1JWQ0MtSW5mb3JtYXRpb24JCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorCXtJRCBpZC1QU1JBQnRvYmVSZXBsYWNlZCAJCQkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gUkFCLUlECQkJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDkgdG8gdHJhbnNmZXIgdG8gdGhlIFRhcmdldCBSTkMgcGFyYW1ldGVycyByZXF1aXJlZCBmb3IgQ1NGQiBvcGVyYXRpb24gLS0KKwl7SUQgaWQtQ1NGQi1JbmZvcm1hdGlvbiAJCQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gQ1NGQi1JbmZvcm1hdGlvbiAJCQkJCQkJUFJFU0VOQ0Ugb3B0aW9uYWx9fAorLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDEwIHRvIGluZGljYXRlIHRvIHRoZSBUYXJnZXQgUk5DIHRoZSBuZWVkIG9mIGNvbnRpbnVlZCBJUkFUIG1lYXN1cmVtZW50IC0tCisJe0lEIGlkLUlSQVQtTWVhc3VyZW1lbnQtQ29uZmlndXJhdGlvbgkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBJUkFULU1lYXN1cmVtZW50LUNvbmZpZ3VyYXRpb24JCVBSRVNFTkNFIG9wdGlvbmFsfXwKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSAxMCB0byBpbmRpY2F0ZSBNYW5hZ2VtZW50IEJhc2VkIE1EVCBBbGxvd2VkIC0tCisJe0lEIGlkLU1hbmFnZW1lbnQtQmFzZWQtTURULUFsbG93ZWQJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIE1hbmFnZW1lbnQtQmFzZWQtTURULUFsbG93ZWQJCQlQUkVTRU5DRSBvcHRpb25hbH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTEgdG8gaW5kaWNhdGUgTWFuYWdlbWVudCBCYXNlZCBNRFQgUExNTiBMaXN0IC0tCisJe0lEIGlkLU1hbmFnZW1lbnQtQmFzZWQtTURULVBMTU4tTGlzdAkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBNRFQtUExNTi1MaXN0CQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgMTEgdG8gaW5kaWNhdGUgdGhlIGxhc3QgRS1VVFJBTiBQTE1OIElkZW50aXR5IC0tCisJe0lEIGlkLUxhc3RFLVVUUkFOUExNTklkZW50aXR5CQkJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gUExNTmlkZW50aXR5CQkJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH0sCisJLi4uCit9CisKK0lSQVQtTWVhc3VyZW1lbnQtQ29uZmlndXJhdGlvbiA6Oj0gU0VRVUVOQ0UgeworCXJTUlAJCQkJCQlJTlRFR0VSICgwLi45NykJCQlPUFRJT05BTCwKKwlyU1JRCQkJCQkJSU5URUdFUiAoMC4uMzQpCQkJT1BUSU9OQUwsCisJaVJBVG1lYXN1cmVtZW50UGFyYW1ldGVycwlJUkFUbWVhc3VyZW1lbnRQYXJhbWV0ZXJzLAorCWlFLUV4dGVuc2lvbnMJCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7SVJBVC1NZWFzdXJlbWVudC1Db25maWd1cmF0aW9uLUV4dElFc30gfSBPUFRJT05BTH0KKworSVJBVC1NZWFzdXJlbWVudC1Db25maWd1cmF0aW9uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwl7SUQgaWQtUlNSUS1UeXBlCQkJCQkJQ1JJVElDQUxJVFkgaWdub3JlCUVYVEVOU0lPTiBSU1JRLVR5cGUJCQkJCQlQUkVTRU5DRSBvcHRpb25hbH18CisJe0lEIGlkLVJTUlEtRXh0ZW5zaW9uCQkJCQlDUklUSUNBTElUWSBpZ25vcmUJRVhURU5TSU9OIFJTUlEtRXh0ZW5zaW9uCQkJCVBSRVNFTkNFIG9wdGlvbmFsfSwKKwkuLi4KK30KKworSVJBVG1lYXN1cmVtZW50UGFyYW1ldGVyczo6PSBTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnREdXJhdGlvbgkJSU5URUdFUiAoMS4uMTAwKSwKKwllVVRSQU5GcmVxdWVuY2llcwkJRVVUUkFORnJlcXVlbmNpZXMJCU9QVElPTkFMLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgSVJBVG1lYXN1cmVtZW50UGFyYW1ldGVycy1FeHRJRXN9IH0gT1BUSU9OQUx9CisKK0lSQVRtZWFzdXJlbWVudFBhcmFtZXRlcnMtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitSU1JRLVR5cGUgOjo9IFNFUVVFTkNFIHsKKwlhbGxTeW1ib2xzCQkJCQkJCUJPT0xFQU4sCisJd2lkZUJhbmQJCQkJCQkJQk9PTEVBTgorfQorCitSU1JRLUV4dGVuc2lvbiA6Oj0gSU5URUdFUiAoLTMwLi40NiwgLi4uKQorCitFVVRSQU5GcmVxdWVuY2llcyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5yT2ZFVVRSQUZyZXFzKSkgT0YgU0VRVUVOQ0UgeworCWVhcmZjbgkJCQkJSU5URUdFUiAoMC4uNjU1MzUpLAorCW1lYXNCYW5kCQkJCU1lYXNCYW5kCQkJT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge0VVVFJBTkZyZXF1ZW5jaWVzLUV4dElFc30gfSBPUFRJT05BTH0KKworTWVhc0JhbmQgOjo9IEVOVU1FUkFURUQgeworCXY2LAorCXYxNSwKKwl2MjUsCisJdjUwLAorCXY3NSwKKwl2MTAwCit9CisKK0VVVFJBTkZyZXF1ZW5jaWVzLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwl7IElEIGlkLUVBUkZDTi1FeHRlbmRlZAkJCUNSSVRJQ0FMSVRZIHJlamVjdAlFWFRFTlNJT04gRUFSRkNOLUV4dGVuZGVkCQlQUkVTRU5DRSBvcHRpb25hbH0sCisJLi4uCit9CisKK1N1YnNjcmliZXJQcm9maWxlSURmb3JSRlAgOjo9IElOVEVHRVIgKDEuLjI1NikKKworU291cmNlU3RhdGlzdGljc0Rlc2NyaXB0b3IgOjo9IEVOVU1FUkFURUQgeworCXNwZWVjaCwKKwl1bmtub3duLAorCS4uLgorfQorCitTdXBwb3J0ZWRSQUItUGFyYW1ldGVyQml0cmF0ZUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhOck9mU2VwYXJhdGVUcmFmZmljRGlyZWN0aW9ucykpIE9GIFN1cHBvcnRlZEJpdHJhdGUKKworU3VwcG9ydGVkQml0cmF0ZSA6Oj0gSU5URUdFUiAoMS4uMTAwMDAwMDAwMCwgLi4uKQorLS0gVW5pdCBpcyBiaXRzIHBlciBzZWMKKworU291cmNlVVRSQU5DZWxsSUQgOjo9IFNFUVVFTkNFIHsKKwlwTE1OaWRlbnRpdHkJCQlQTE1OaWRlbnRpdHksCisJdVRSQU5jZWxsSUQJCQkJVGFyZ2V0Q2VsbElkLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtTb3VyY2VVVFJBTkNlbGxJRC1FeHRJRXN9IH0gT1BUSU9OQUwKK30KKworU291cmNlVVRSQU5DZWxsSUQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitTUkItSUQgOjo9IElOVEVHRVIgKDEuLjMyKQorCitTUkItVHJDSC1NYXBwaW5nIDo6PQlTRVFVRU5DRSAoIFNJWkUgKDEuLm1heE5yT2ZTUkJzKSkgT0YKKwlTUkItVHJDSC1NYXBwaW5nSXRlbQorCitTUkItVHJDSC1NYXBwaW5nSXRlbSA6Oj0gU0VRVUVOQ0UgeworCXNSQi1JRAkJCVNSQi1JRCwKKwl0ckNILUlECQkJVHJDSC1JRCwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7IFNSQi1UckNILU1hcHBpbmdJdGVtLUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworCitTUkItVHJDSC1NYXBwaW5nSXRlbS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK1NSVkNDLUhPLUluZGljYXRpb24gOjo9IEVOVU1FUkFURUQgeworCXBzLWFuZC1jcywKKwljcy1vbmx5LAorCS4uLgorfQorCitTUlZDQy1JbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgeworCW5vbmNlCQkJQklUIFNUUklORyAoU0laRSAoMTI4KSksCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBTUlZDQy1JbmZvcm1hdGlvbi1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK1NSVkNDLUluZm9ybWF0aW9uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworU1JWQ0MtT3BlcmF0aW9uLVBvc3NpYmxlIDo6PSBFTlVNRVJBVEVEIHsKKwlzcnZjYy1wb3NzaWJsZSwKKwkuLi4KK30KKworU3ViZmxvd1NEVS1TaXplCQkJCTo6PSBJTlRFR0VSICgwLi40MDk1KQorLS0gVW5pdCBpcyBiaXQKKworCistLSBUCitUQUMgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMikpCisKK1RBSSA6Oj0gU0VRVUVOQ0UgeworCXBMTU5pZGVudGl0eQkJCVBMTU5pZGVudGl0eSwKKwl0QUMJCQkJCQlUQUMsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1RBSS1FeHRJRXN9IH0gT1BUSU9OQUwKK30KKworVEFJLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworCitUYXJnZXQtVG9Tb3VyY2UtVHJhbnNwYXJlbnRDb250YWluZXIgOjo9IE9DVEVUIFNUUklORworLS0gVGhpcyBJRSBpcyBhIHRyYW5zcGFyZW50IGNvbnRhaW5lciwgdGhlIElFIHNoYWxsIGJlIGVuY29kZWQgbm90IGFzIGFuIE9DVEVUIFNUUklORyBidXQgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIHNwZWNpZmljYXRpb25zIG9mIHRoZSB0YXJnZXQgc3lzdGVtLgorLS0gTm90ZTogSW4gdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGlzIHNwZWNpZmljYXRpb24sIHRoaXMgSUUgbWF5IGVpdGhlciBjYXJyeSB0aGUgVGFyZ2V0IFJOQyB0bworLS0gU291cmNlIFJOQyBUcmFuc3BhcmVudCBDb250YWluZXIgb3IgdGhlIFRhcmdldCBlTkIgdG8gU291cmNlIGVOQiBUcmFuc3BhcmVudCBDb250YWluZXIgSUUgYXMKKy0tIGRlZmluZWQgaW4gVFMgMzYuNDEzIFs0OV0KKworVGFyZ2V0ZU5vZGVCLVRvU291cmNlZU5vZGVCLVRyYW5zcGFyZW50Q29udGFpbmVyIDo6PSBPQ1RFVCBTVFJJTkcKKworVGFyZ2V0QlNTLVRvU291cmNlQlNTLVRyYW5zcGFyZW50Q29udGFpbmVyCQk6Oj0gT0NURVQgU1RSSU5HCisKK1RhcmdldENlbGxJZAkJCQk6Oj0gSU5URUdFUiAoMC4uMjY4NDM1NDU1KQorCitUYXJnZXRJRCA6Oj0gQ0hPSUNFIHsKKwl0YXJnZXRSTkMtSUQJCQlUYXJnZXRSTkMtSUQsCisJY0dJCQkJCUNHSSwKKworCS4uLiwKKwl0YXJnZXRlTkItSUQJVGFyZ2V0RU5CLUlECit9CisKK1RhcmdldEVOQi1JRCA6Oj0gU0VRVUVOQ0UgeworCXBMTU5pZGVudGl0eQkJCVBMTU5pZGVudGl0eSwKKwllTkItSUQJCQkJCUVOQi1JRCwKKwlpRS1FeHRlbnNpb25zCQkJUHJvdG9jb2xFeHRlbnNpb25Db250YWluZXIgeyB7VGFyZ2V0RU5CLUlELUV4dElFc30gfSBPUFRJT05BTCwKKwlzZWxlY3RlZFRBSQkJVEFJLAorCS4uLgorfQorCitUYXJnZXRFTkItSUQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCisKK1RhcmdldFJOQy1JRCA6Oj0gU0VRVUVOQ0UgeworCWxBSQkJCQlMQUksCisJckFDCQkJCVJBQyAJCU9QVElPTkFMLAorCXJOQy1JRAkJCQlSTkMtSUQsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1RhcmdldFJOQy1JRC1FeHRJRXN9IH0gT1BUSU9OQUwKK30KKworVGFyZ2V0Uk5DLUlELUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKy0tIEV4dGVuc2lvbiBmb3IgUmVsZWFzZSA3IHRvIGluZGljYXRlIGV4dGVuZGVkIFJOQy1JRCAtLQorCXsgSUQgaWQtRXh0ZW5kZWRSTkMtSUQJCQkJQ1JJVElDQUxJVFkgcmVqZWN0CUVYVEVOU0lPTiBFeHRlbmRlZFJOQy1JRAkJUFJFU0VOQ0Ugb3B0aW9uYWwJfSwKKwkuLi4KK30KKworVGFyZ2V0Uk5DLVRvU291cmNlUk5DLVRyYW5zcGFyZW50Q29udGFpbmVyIDo6PSBTRVFVRU5DRSB7CisJclJDLUNvbnRhaW5lcgkJCVJSQy1Db250YWluZXIsCisJZC1STlRJCQkJCQlELVJOVEkgCQkJCQlPUFRJT05BTAorCS0tIE1heSBiZSBpbmNsdWRlZCB0byBhbGxvdyB0aGUgdHJpZ2dlcmluZyBvZiB0aGUgUmVsb2NhdGlvbiBEZXRlY3QgcHJvY2VkdXJlIGZyb20gdGhlIEl1ciBJbnRlcmZhY2UgLS0sCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1RhcmdldFJOQy1Ub1NvdXJjZVJOQy1UcmFuc3BhcmVudENvbnRhaW5lci1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK1RhcmdldFJOQy1Ub1NvdXJjZVJOQy1UcmFuc3BhcmVudENvbnRhaW5lci1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK1RCQ0QtU1RSSU5HIAkJCQk6Oj0gT0NURVQgU1RSSU5HCisKK1RlbXBvcmFyeVVFLUlEIDo6PSBDSE9JQ0UgeworCXRNU0kJCQkJVE1TSSwKKwlwLVRNU0kJCQkJUC1UTVNJLAorCS4uLgorfQorCitUaW1lLVVFLVN0YXllZEluQ2VsbCA6Oj0gSU5URUdFUiAoMC4uNDA5NSkKKworVGltZS1VRS1TdGF5ZWRJbkNlbGwtRW5oYW5jZWRHcmFudWxhcml0eSA6Oj0gSU5URUdFUiAoMC4uNDA5NTApCisKK1RpbWVUb01CTVNEYXRhVHJhbnNmZXIJCTo6PSBPQ1RFVCBTVFJJTkcoU0laRSgxKSkKKworVGltaW5nRGlmZmVyZW5jZVVMREwJOjo9IE9DVEVUIFNUUklORyAoU0laRSgxKSkKKworVE1HSSA6Oj0gU0VRVUVOQ0UgeworCXBMTU5pZGVudGl0eQkJCVBMTU5pZGVudGl0eSwKKwlzZXJ2aWNlSUQJCQkJT0NURVQgU1RSSU5HIChTSVpFICgzKSksCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsge1RNR0ktRXh0SUVzfSB9IE9QVElPTkFMCit9CisKK1RNR0ktRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitUTVNJCQkJCQk6Oj0gT0NURVQgU1RSSU5HIChTSVpFICg0KSkKKworVHJhY2VEZXB0aCA6Oj0gRU5VTUVSQVRFRCB7CisJbWluaW11bSwKKwltZWRpdW0sCisJbWF4aW11bSwKKwkuLi4KK30KKworVHJhY2VJbmZvcm1hdGlvbgk6Oj0gU0VRVUVOQ0UgeworCXRyYWNlUmVmZXJlbmNlCQkJCVRyYWNlUmVmZXJlbmNlLAorCXVlLWlkZW50aXR5CQkJCQlVRS1JRCwKKwl0cmFjZVByb3BhZ2F0aW9uUGFyYW1ldGVycwlUcmFjZVByb3BhZ2F0aW9uUGFyYW1ldGVycyBPUFRJT05BTCwKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgVHJhY2VJbmZvcm1hdGlvbi1FeHRJRXMgfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitUcmFjZUluZm9ybWF0aW9uLUV4dElFcwlSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKy4uLgorfQorCitUcmFjZVByb3BhZ2F0aW9uUGFyYW1ldGVycyA6Oj0gU0VRVUVOQ0UgeworCXRyYWNlUmVjb3JkaW5nU2Vzc2lvblJlZmVyZW5jZQkJVHJhY2VSZWNvcmRpbmdTZXNzaW9uUmVmZXJlbmNlLAorCXRyYWNlRGVwdGgJCQkJCQkJVHJhY2VEZXB0aCwKKwlsaXN0T2ZJbnRlcmZhY2VzVG9UcmFjZQkJCQlMaXN0T2ZJbnRlcmZhY2VzVG9UcmFjZQkJT1BUSU9OQUwsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBUcmFjZVByb3BhZ2F0aW9uUGFyYW1ldGVycy1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK1RyYWNlUHJvcGFnYXRpb25QYXJhbWV0ZXJzLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworVHJhY2VSZWNvcmRpbmdTZXNzaW9uSW5mb3JtYXRpb24JOjo9IFNFUVVFTkNFIHsKKwl0cmFjZVJlZmVyZW5jZQkJCQkJCVRyYWNlUmVmZXJlbmNlLAorCXRyYWNlUmVjb3JkaW5nU2Vzc2lvblJlZmVyZW5jZQkJVHJhY2VSZWNvcmRpbmdTZXNzaW9uUmVmZXJlbmNlLAorCWlFLUV4dGVuc2lvbnMJCQkJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgVHJhY2VSZWNvcmRpbmdTZXNzaW9uSW5mb3JtYXRpb24tRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitUcmFjZVJlY29yZGluZ1Nlc3Npb25JbmZvcm1hdGlvbi1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK1RyYWNlUmVjb3JkaW5nU2Vzc2lvblJlZmVyZW5jZQkJOjo9IElOVEVHRVIgKDAuLjY1NTM1KQorCitUcmFjZVJlZmVyZW5jZQkJCQk6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgyLi4zKSkKKworVHJhY2VUeXBlCQkJCTo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQorLS0gUmVmZXJlbmNlOiBHU00gVFMgMTIuMDgKKworVHJhZmZpY0NsYXNzIDo6PSBFTlVNRVJBVEVEIHsKKwljb252ZXJzYXRpb25hbCwKKwlzdHJlYW1pbmcsCisJaW50ZXJhY3RpdmUsCisJYmFja2dyb3VuZCwKKwkuLi4KK30KKworVHJhZmZpY0hhbmRsaW5nUHJpb3JpdHkgCQk6Oj0gSU5URUdFUiB7IHNwYXJlICgwKSwgaGlnaGVzdCAoMSksIGxvd2VzdCAoMTQpLCBuby1wcmlvcml0eS11c2VkICgxNSkgfSAoMC4uMTUpCisKK1RyYW5zZmVyRGVsYXkgCQkJCTo6PSBJTlRFR0VSICgwLi42NTUzNSkKKy0tIFVuaXQgaXMgbWlsbGlzZWNvbmQKKworVW5zdWNjZXNzZnVsbHlUcmFuc21pdHRlZERhdGFWb2x1bWUJOjo9IElOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCisKK1RyYW5zcG9ydExheWVyQWRkcmVzcyAJCQk6Oj0gQklUIFNUUklORyAoU0laRSAoMS4uMTYwLCAuLi4pKQorCitUckNILUlEIDo6PSBTRVFVRU5DRSB7CisJZENILUlECQkJCURDSC1JRAkJT1BUSU9OQUwsCisJZFNDSC1JRAkJCQlEU0NILUlECQlPUFRJT05BTCwKKwl1U0NILUlECQkJCVVTQ0gtSUQJCU9QVElPTkFMLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgVHJDSC1JRC1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK1RyQ0gtSUQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworLS0gRXh0ZW5zaW9uIGZvciBSZWxlYXNlIDUgdG8gZW5hYmxlIHRyYW5zZmVyIG9mIEhTLURTQ0gtTUFDLWQtRmxvdy1JRCBvbnRvIEl1ciB0cmFuc3BvcnQgY2hhbm5lbCBJRCAtLQorCXtJRCBpZC1oUy1EU0NILU1BQy1kLUZsb3ctSUQJQ1JJVElDQUxJVFkgaWdub3JlCQlFWFRFTlNJT04gSFMtRFNDSC1NQUMtZC1GbG93LUlECQlQUkVTRU5DRSBvcHRpb25hbH18CistLSBFeHRlbnNpb24gZm9yIFJlbGVhc2UgNiB0byBlbmFibGUgdHJhbnNmZXIgb2YgRS1EQ0gtTUFDLWQtRmxvdy1JRCBvbnRvIEl1ciB0cmFuc3BvcnQgY2hhbm5lbCBJRCAtLQorCXtJRCBpZC1FLURDSC1NQUMtZC1GbG93LUlECUNSSVRJQ0FMSVRZIGlnbm9yZQkJRVhURU5TSU9OIEUtRENILU1BQy1kLUZsb3ctSUQgUFJFU0VOQ0Ugb3B0aW9uYWx9LAorCS4uLgorfQorCitUckNILUlELUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhSQUItU3ViZmxvd3MpKSBPRgorCVRyQ0gtSUQKKworVHJpZ2dlcklECQkJCTo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDMuLjIyKSkKKworVHVubmVsSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwl0cmFuc3BvcnRMYXllckFkZHJlc3MJVHJhbnNwb3J0TGF5ZXJBZGRyZXNzLAorCXVEUC1Qb3J0LU51bWJlcgkJCVBvcnQtTnVtYmVyCQkJCU9QVElPTkFMLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtUdW5uZWwtSW5mb3JtYXRpb24tRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitUdW5uZWwtSW5mb3JtYXRpb24tRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCisKK1R5cGVPZkVycm9yIDo6PSBFTlVNRVJBVEVEIHsKKwlub3QtdW5kZXJzdG9vZCwKKwltaXNzaW5nLAorCS4uLgorfQorCisKKy0tIFUKKworVUUtQWdncmVnYXRlTWF4aW11bUJpdFJhdGUgOjo9IFNFUVVFTkNFIHsKKwl1RS1BZ2dyZWdhdGVNYXhpbXVtQml0UmF0ZURvd25saW5rCQlVRS1BZ2dyZWdhdGVNYXhpbXVtQml0UmF0ZURvd25saW5rCU9QVElPTkFMLAorCXVFLUFnZ3JlZ2F0ZU1heGltdW1CaXRSYXRlVXBsaW5rCQlVRS1BZ2dyZWdhdGVNYXhpbXVtQml0UmF0ZVVwbGluawlPUFRJT05BTCwKKwkuLi4KK30KKworVUUtQWdncmVnYXRlTWF4aW11bUJpdFJhdGVEb3dubGluawkJCTo6PSBJTlRFR0VSICgxLi4xMDAwMDAwMDAwKQorLS0gVW5pdCBpcyBiaXRzIHBlciBzZWMKKworVUUtQWdncmVnYXRlTWF4aW11bUJpdFJhdGVVcGxpbmsJCQk6Oj0gSU5URUdFUiAoMS4uMTAwMDAwMDAwMCkKKy0tIFVuaXQgaXMgYml0cyBwZXIgc2VjCisKKworVUUtSGlzdG9yeS1JbmZvcm1hdGlvbiA6Oj0gT0NURVQgU1RSSU5HCisKK1VFLUlEIDo6PSBDSE9JQ0UgeworCWltc2kJCQkJSU1TSSwKKwlpbWVpCQkJCUlNRUksCisJLi4uLAorCWltZWlzdgkJCQlJTUVJU1YKKworfQorCitVRS1Jc05vdFNlcnZlZDo6PSBTRVFVRU5DRSB7CisJcGVybWFuZW50TkFTLVVFLUlECQlQZXJtYW5lbnROQVMtVUUtSUQsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBVRS1Jc05vdFNlcnZlZC1FeHRJRXMgfSB9CQlPUFRJT05BTCwKKwkuLi4KK30KKworVUUtSXNOb3RTZXJ2ZWQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCisKK1VFLUlzU2VydmVkOjo9IFNFUVVFTkNFIHsKKwlwZXJtYW5lbnROQVMtVUUtSUQJCVBlcm1hbmVudE5BUy1VRS1JRCwKKwlwTE1OaWRlbnRpdHkJCQlQTE1OaWRlbnRpdHksCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBVRS1Jc1NlcnZlZC1FeHRJRXMgfSB9CQlPUFRJT05BTCwKKwkuLi4KK30KKworVUUtSXNTZXJ2ZWQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCitVRS1Vc2FnZS1UeXBlIDo6PSBJTlRFR0VSICgwLi4yNTUpCisKK1VFUmVnaXN0cmF0aW9uUXVlcnlSZXN1bHQgOjo9IENIT0lDRSB7CisJdUUtSXNTZXJ2ZWQJCQlVRS1Jc1NlcnZlZCwKKwl1RS1Jc05vdFNlcnZlZAkJVUUtSXNOb3RTZXJ2ZWQKK30KKworVUVTQkktSXUgOjo9IFNFUVVFTkNFIHsKKwl1RVNCSS1JdUEJCVVFU0JJLUl1QQlPUFRJT05BTCwKKwl1RVNCSS1JdUIJCVVFU0JJLUl1QglPUFRJT05BTCwKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHtVRVNCSS1JdS1FeHRJRXN9IH0gT1BUSU9OQUwsCisJLi4uCit9CisKK1VFU0JJLUl1LUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworVUVTQkktSXVBCQkJCTo6PSBCSVQgU1RSSU5HIChTSVpFKDEuLjEyOCkpCistLSBSZWZlcmVuY2U6IFRSMjUuOTk0IC0tCitVRVNCSS1JdUIJCQkJOjo9IEJJVCBTVFJJTkcgKFNJWkUoMS4uMTI4KSkKKy0tIFJlZmVyZW5jZTogVFIyNS45OTUgLS0KKworVUwtR1RQLVBEVS1TZXF1ZW5jZU51bWJlcgkJOjo9IElOVEVHRVIgKDAuLjY1NTM1KQorCitVTC1OLVBEVS1TZXF1ZW5jZU51bWJlciAJCTo6PSBJTlRFR0VSICgwLi42NTUzNSkKKworVVBJbmZvcm1hdGlvbgkJOjo9CQlTRVFVRU5DRSB7CisJZnJhbWVTZXFOb1VMCQkJRnJhbWVTZXF1ZW5jZU51bWJlciwKKwlmcmFtZVNlcU5vREwJCQlGcmFtZVNlcXVlbmNlTnVtYmVyLAorCXBkdTE0RnJhbWVTZXFOb1VMCQlQRFVUeXBlMTRGcmFtZVNlcXVlbmNlTnVtYmVyLAorCXBkdTE0RnJhbWVTZXFOb0RMCQlQRFVUeXBlMTRGcmFtZVNlcXVlbmNlTnVtYmVyLAorCWRhdGFQRFVUeXBlCQkJCURhdGFQRFVUeXBlLAorCXVwaW5pdGlhbGlzYXRpb25GcmFtZQlVUEluaXRpYWxpc2F0aW9uRnJhbWUsCisJaUUtRXh0ZW5zaW9ucwkJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBVUEluZm9ybWF0aW9uLUV4dElFcyB9IH0JCU9QVElPTkFMLAorCS4uLgorfQorCitVUEluZm9ybWF0aW9uLUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwl7SUQgaWQtVGltaW5nRGlmZmVyZW5jZVVMREwJCUNSSVRJQ0FMSVRZIGlnbm9yZQlFWFRFTlNJT04gVGltaW5nRGlmZmVyZW5jZVVMREwJCVBSRVNFTkNFIG9wdGlvbmFsfSwKKworCS4uLgorfQorCitVUEluaXRpYWxpc2F0aW9uRnJhbWUJOjo9CU9DVEVUIFNUUklORworCitVUC1Nb2RlVmVyc2lvbnMJCQkJOjo9IEJJVCBTVFJJTkcgKFNJWkUgKDE2KSkKKworVVNDSC1JRAkJCQkJCTo6PSBJTlRFR0VSICgwLi4yNTUpCisKK1VzZXJQbGFuZU1vZGUgOjo9IEVOVU1FUkFURUQgeworCXRyYW5zcGFyZW50LW1vZGUsCisJc3VwcG9ydC1tb2RlLWZvci1wcmVkZWZpbmVkLVNEVS1zaXplcywKKwkuLi4KK30KKworVVRSQU4tQ2VsbElEIDo6PSBTRVFVRU5DRSB7CisJcExNTmlkZW50aXR5CQkJUExNTmlkZW50aXR5LAorCWNlbGxJRAkJCQkJVGFyZ2V0Q2VsbElkLAorCWlFLUV4dGVuc2lvbnMJCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgVVRSQU4tQ2VsbElELUV4dElFc30gfSBPUFRJT05BTAorfQorCitVVFJBTi1DZWxsSUQtRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCisKKy0tIFYKKworVmVsb2NpdHlFc3RpbWF0ZSA6Oj0gQ0hPSUNFIHsKKwlob3Jpem9udGFsVmVsb2NpdHkJCQkJCQkJCUhvcml6b250YWxWZWxvY2l0eSwKKwlob3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHkJCQkJCUhvcml6b250YWxXaXRoVmVydGljYWxWZWxvY2l0eSwKKwlob3Jpem9udGFsVmVsb2NpdHlXaXRoVW5jZXJ0YWludHkJCQkJSG9yaXpvbnRhbFZlbG9jaXR5V2l0aFVuY2VydGFpbnR5LAorCWhvcml6b250YWxXaXRoVmVyaXRjYWxWZWxvY2l0eUFuZFVuY2VydGFpbnR5CUhvcml6b250YWxXaXRoVmVydGljYWxWZWxvY2l0eUFuZFVuY2VydGFpbnR5LAorCS4uLgorfQorCitIb3Jpem9udGFsVmVsb2NpdHkJOjo9IFNFUVVFTkNFIHsKKwlob3Jpem9udGFsU3BlZWRBbmRCZWFyaW5nCQkJCQkJSG9yaXpvbnRhbFNwZWVkQW5kQmVhcmluZywKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgSG9yaXpvbnRhbFZlbG9jaXR5LUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworSG9yaXpvbnRhbFZlbG9jaXR5LUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworSG9yaXpvbnRhbFdpdGhWZXJ0aWNhbFZlbG9jaXR5IDo6PSBTRVFVRU5DRSB7CisJaG9yaXpvbnRhbFNwZWVkQW5kQmVhcmluZwkJCQkJCQlIb3Jpem9udGFsU3BlZWRBbmRCZWFyaW5nLAorCXZlcml0Y2FsVmVsb2NpdHkJCQkJCQkJCQlWZXJ0aWNhbFZlbG9jaXR5LAorCWlFLUV4dGVuc2lvbnMJCVByb3RvY29sRXh0ZW5zaW9uQ29udGFpbmVyIHsgeyBIb3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHktRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitIb3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHktRXh0SUVzIFJBTkFQLVBST1RPQ09MLUVYVEVOU0lPTiA6Oj0geworCS4uLgorfQorCisKK0hvcml6b250YWxWZWxvY2l0eVdpdGhVbmNlcnRhaW50eSA6Oj0gU0VRVUVOQ0UgeworCWhvcml6b250YWxTcGVlZEFuZEJlYXJpbmcJCQkJCQkJSG9yaXpvbnRhbFNwZWVkQW5kQmVhcmluZywKKwl1bmNlcnRhaW50eVNwZWVkCQkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgSG9yaXpvbnRhbFZlbG9jaXR5V2l0aFVuY2VydGFpbnR5LUV4dElFc30gfSBPUFRJT05BTCwKKwkuLi4KK30KKworSG9yaXpvbnRhbFZlbG9jaXR5V2l0aFVuY2VydGFpbnR5LUV4dElFcyBSQU5BUC1QUk9UT0NPTC1FWFRFTlNJT04gOjo9IHsKKwkuLi4KK30KKworSG9yaXpvbnRhbFdpdGhWZXJ0aWNhbFZlbG9jaXR5QW5kVW5jZXJ0YWludHkgOjo9IFNFUVVFTkNFIHsKKwlob3Jpem9udGFsU3BlZWRBbmRCZWFyaW5nCQkJCQkJCUhvcml6b250YWxTcGVlZEFuZEJlYXJpbmcsCisJdmVyaXRjYWxWZWxvY2l0eQkJCQkJCQkJCVZlcnRpY2FsVmVsb2NpdHksCisJaG9yaXpvbnRhbFVuY2VydGFpbnR5U3BlZWQJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwl2ZXJ0aWNhbFVuY2VydGFpbnR5U3BlZWQJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwlpRS1FeHRlbnNpb25zCQlQcm90b2NvbEV4dGVuc2lvbkNvbnRhaW5lciB7IHsgSG9yaXpvbnRhbFdpdGhWZXJ0aWNhbFZlbG9jaXR5QW5kVW5jZXJ0YWludHktRXh0SUVzfSB9IE9QVElPTkFMLAorCS4uLgorfQorCitIb3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHlBbmRVbmNlcnRhaW50eS1FeHRJRXMgUkFOQVAtUFJPVE9DT0wtRVhURU5TSU9OIDo6PSB7CisJLi4uCit9CisKK0hvcml6b250YWxTcGVlZEFuZEJlYXJpbmcgOjo9IFNFUVVFTkNFIHsKKwliZWFyaW5nCQkJCQkJCQkJCQlJTlRFR0VSICgwLi4zNTkpLAorCWhvcml6b250YWxTcGVlZAkJCQkJCQkJCUlOVEVHRVIgKDAuLjIwNDcpCit9CisKK1ZlcnRpY2FsVmVsb2NpdHkgOjo9IFNFUVVFTkNFIHsKKwl2ZXJpdGNhbFNwZWVkCQkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwl2ZXJpdGNhbFNwZWVkRGlyZWN0aW9uCQkJCQkJCVZlcnRpY2FsU3BlZWREaXJlY3Rpb24KK30KKworVmVydGljYWxTcGVlZERpcmVjdGlvbiA6Oj0gRU5VTUVSQVRFRCB7CisJdXB3YXJkLAorCWRvd253YXJkCit9CisKK1ZlcnRpY2FsQWNjdXJhY3lDb2RlCQkJOjo9IElOVEVHRVIgKDAuLjEyNykKKworVm9pY2VTdXBwb3J0TWF0Y2hJbmRpY2F0b3IgOjo9IEVOVU1FUkFURUQgeworCXN1cHBvcnRlZCwKKwlub3Qtc3VwcG9ydGVkLAorCS4uLgorfQorCitFTkQK