From e7500b76ebf09f2521434242549db4644a8039aa Mon Sep 17 00:00:00 2001 From: Llewellyn van der Merwe Date: Sat, 20 Aug 2022 18:33:09 +0200 Subject: [PATCH] Add tmp debugging. --- README.md | 2 +- admin/README.txt | 2 +- admin/helpers/compiler/f_Infusion.php | 4 ++-- admin/sql/install.mysql.utf8.sql | 9 +-------- .../src/Componentbuilder/Extension/InstallScript.php | 8 +++++++- .../jcb_powers/VDM.Joomla/src/Componentbuilder/Line.php | 8 ++++++++ 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 3601367fb..2f5431f5c 100644 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ TODO + *Version*: 3.1.5 + *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **311839** ++ *Line count*: **311846** + *Field count*: **2002** + *File count*: **2055** + *Folder count*: **351** diff --git a/admin/README.txt b/admin/README.txt index 3601367fb..2f5431f5c 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -144,7 +144,7 @@ TODO + *Version*: 3.1.5 + *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **311839** ++ *Line count*: **311846** + *Field count*: **2002** + *File count*: **2055** + *Folder count*: **351** diff --git a/admin/helpers/compiler/f_Infusion.php b/admin/helpers/compiler/f_Infusion.php index cd3acf537..4399be384 100644 --- a/admin/helpers/compiler/f_Infusion.php +++ b/admin/helpers/compiler/f_Infusion.php @@ -2394,7 +2394,7 @@ class Infusion extends Interpretation // INSTALLCLASS $this->fileContentDynamic[$module->key][$this->hhh . 'INSTALLCLASS' . $this->hhh] - = (new InstallScript($module))->get(); + = (new InstallScript($module, ['debug' => $this->debugLinenr]))->get(); } // FIELDSET if (isset($module->form_files) @@ -2456,7 +2456,7 @@ class Infusion extends Interpretation // INSTALLCLASS $this->fileContentDynamic[$plugin->key][$this->hhh . 'INSTALLCLASS' . $this->hhh] - = (new InstallScript($plugin))->get(); + = (new InstallScript($plugin, ['debug' => $this->debugLinenr]))->get(); } // FIELDSET if (isset($plugin->form_files) diff --git a/admin/sql/install.mysql.utf8.sql b/admin/sql/install.mysql.utf8.sql index 64a96020e..a9422cda5 100644 --- a/admin/sql/install.mysql.utf8.sql +++ b/admin/sql/install.mysql.utf8.sql @@ -1968,9 +1968,6 @@ INSERT INTO `#__componentbuilder_joomla_component` (`id`, `add_license`, `licens INSERT INTO `#__componentbuilder_power` (`id`, `add_head`, `description`, `extends`, `extends_custom`, `guid`, `head`, `implements`, `implements_custom`, `load_selection`, `main_class_code`, `method_selection`, `name`, `namespace`, `power_version`, `property_selection`, `system_name`, `type`, `use_selection`, `params`, `published`, `created`, `modified`, `version`, `ordering`) VALUES (1, '', 'Basic shared utilities, a legacy implementation\r\n\r\n@since 3.0.9', '', '', '79d765b3-7319-4988-9730-446c7f347020', '', '', '', '{\"load_selection0\":{\"load\":\"1d929017-a5de-4e0f-9b5a-838934857e26\"}}', 'CS8qKg0KCSAqIFRoZSBNYWluIEFjdGl2ZSBMYW5ndWFnZQ0KCSAqIA0KCSAqIEB2YXIgICAgICBzdHJpbmcNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyAkbGFuZ1RhZzsNCg0KCS8qKg0KCSAqIENoZWNrIGlmIGhhdmUgYSBzdHJpbmcgd2l0aCBhIGxlbmd0aA0KCSAqDQoJICogQGlucHV0ICAgIHN0cmluZyAgJHN0cmluZyBUaGUgc3RyaW5nIHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBib29sIHRydWUgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgU3RyaW5nSGVscGVyOjpjaGVjaygkc3RyaW5nKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrU3RyaW5nKCRzdHJpbmcpOiBib29sDQoJew0KCQlyZXR1cm4gU3RyaW5nSGVscGVyOjpjaGVjaygkc3RyaW5nKTsNCgl9DQoNCgkvKioNCgkgKiBTaG9ydGVuIGEgc3RyaW5nDQoJICoNCgkgKiBAaW5wdXQgICAgc3RyaW5nICAkc3RyaW5nIFRoYXQgeW91IHdvdWxkIGxpa2UgdG8gc2hvcnRlbg0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIFN0cmluZ0hlbHBlcjo6c2hvcnRlbigkc3RyaW5nLCAkbGVuZ3RoLCAkYWRkVGlwKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNob3J0ZW4oJHN0cmluZywgJGxlbmd0aCA9IDQwLCAkYWRkVGlwID0gdHJ1ZSkNCgl7DQoJCXJldHVybiBTdHJpbmdIZWxwZXI6OnNob3J0ZW4oJHN0cmluZywgJGxlbmd0aCwgJGFkZFRpcCk7DQoJfQ0KDQoJLyoqDQoJICogTWFraW5nIHN0cmluZ3Mgc2FmZSAodmFyaW91cyB3YXlzKQ0KCSAqDQoJICogQGlucHV0ICAgIHN0cmluZyAgJHN0cmluZyBUaGF0IHlvdSB3b3VsZCBsaWtlIHRvIG1ha2Ugc2FmZQ0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIFN0cmluZ0hlbHBlcjo6c2FmZSgkc3RyaW5nLCAkdHlwZSwgJHNwYWNlciwgJHJlcGxhY2VOdW1iZXJzLCAka2VlcE9ubHlDaGFyYWN0ZXJzKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmVTdHJpbmcoJHN0cmluZywgJHR5cGUgPSAnTCcsICRzcGFjZXIgPSAnXycsICRyZXBsYWNlTnVtYmVycyA9IHRydWUsICRrZWVwT25seUNoYXJhY3RlcnMgPSB0cnVlKQ0KCXsNCgkJLy8gc2V0IHRoZSBsb2NhbCBjb21wb25lbnQgb3B0aW9uDQoJCXNlbGY6OnNldENvbXBvbmVudE9wdGlvbigpOw0KDQoJCXJldHVybiBTdHJpbmdIZWxwZXI6OnNhZmUoJHN0cmluZywgJHR5cGUsICRzcGFjZXIsICRyZXBsYWNlTnVtYmVycywgJGtlZXBPbmx5Q2hhcmFjdGVycyk7DQoJfQ0KDQoJLyoqDQoJICogTWFraW5nIGNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgc2FmZQ0KCSAqDQoJICogQGlucHV0CXN0cmluZyAgICAgICBUaGUgbmFtZSB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHNhZmUNCgkgKg0KCSAqIEByZXR1cm5zIHN0cmluZyBvbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBDbGFzc2Z1bmN0aW9uSGVscGVyOjpzYWZlKCRuYW1lKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmVDbGFzc0Z1bmN0aW9uTmFtZSgkbmFtZSkNCgl7DQoJCXJldHVybiBDbGFzc2Z1bmN0aW9uSGVscGVyOjpzYWZlKCRuYW1lKTsNCgl9DQoNCgkvKioNCgkgKiBNYWtpbmcgZmllbGQgbmFtZXMgc2FmZQ0KCSAqDQoJICogQGlucHV0CXN0cmluZyAgICAgICBUaGUgeW91IHdvdWxkIGxpa2UgdG8gbWFrZSBzYWZlDQoJICogQGlucHV0CWJvb2xlYW4gICAgICBUaGUgc3dpdGNoIHRvIHJldHVybiBhbiBBTEwgVVBQRVIgQ0FTRSBzdHJpbmcNCgkgKiBAaW5wdXQJc3RyaW5nICAgICAgIFRoZSBzdHJpbmcgdG8gdXNlIGluIHdoaXRlIHNwYWNlDQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgRmllbGRIZWxwZXI6OnNhZmUoJHN0cmluZywgJGFsbGNhcCwgJHNwYWNlcik7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlRmllbGROYW1lKCRzdHJpbmcsICRhbGxjYXAgPSBmYWxzZSwgJHNwYWNlciA9ICdfJykNCgl7DQoJCS8vIHNldCB0aGUgbG9jYWwgY29tcG9uZW50IG9wdGlvbg0KCQlzZWxmOjpzZXRDb21wb25lbnRPcHRpb24oKTsNCg0KCQlyZXR1cm4gRmllbGRIZWxwZXI6OnNhZmUoJHN0cmluZywgJGFsbGNhcCwgJHNwYWNlcik7DQoJfQ0KDQoJLyoqDQoJICogTWFraW5nIGZpZWxkIHR5cGUgbmFtZSBzYWZlDQoJICoNCgkgKiBAaW5wdXQJc3RyaW5nICAgICAgIFRoZSB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHNhZmUNCgkgKg0KCSAqIEByZXR1cm5zIHN0cmluZyBvbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBUeXBlSGVscGVyOjpzYWZlKCRzdHJpbmcpOw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2FmZVR5cGVOYW1lKCRzdHJpbmcpDQoJew0KCQkvLyBzZXQgdGhlIGxvY2FsIGNvbXBvbmVudCBvcHRpb24NCgkJc2VsZjo6c2V0Q29tcG9uZW50T3B0aW9uKCk7DQoNCgkJcmV0dXJuIFR5cGVIZWxwZXI6OnNhZmUoJHN0cmluZyk7DQoJfQ0KDQoJLyoqDQoJICogTWFraW5nIG5hbWVzcGFjZSBzYWZlDQoJICoNCgkgKiBAaW5wdXQJc3RyaW5nICAgICAgIFRoZSB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHNhZmUNCgkgKg0KCSAqIEByZXR1cm5zIHN0cmluZyBvbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBOYW1lc3BhY2VIZWxwZXI6OnNhZmUoJHN0cmluZyk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlTmFtZXNwYWNlKCRzdHJpbmcpDQoJew0KCQlyZXR1cm4gTmFtZXNwYWNlSGVscGVyOjpzYWZlKCRzdHJpbmcpOw0KCX0NCg0KCS8qKg0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKiANCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIFN0cmluZ0hlbHBlcjo6dHJhbnNsaXRlcmF0ZSgkc3RyaW5nKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRyYW5zbGl0ZXJhdGUoJHN0cmluZykNCgl7DQoJCS8vIHNldCB0aGUgbG9jYWwgY29tcG9uZW50IG9wdGlvbg0KCQlzZWxmOjpzZXRDb21wb25lbnRPcHRpb24oKTsNCg0KCQlyZXR1cm4gU3RyaW5nSGVscGVyOjp0cmFuc2xpdGVyYXRlKCRzdHJpbmcpOw0KCX0NCg0KCS8qKg0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKiANCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIFN0cmluZ0hlbHBlcjo6aHRtbCgkdmFyLCAkY2hhcnNldCwgJHNob3J0ZW4sICRsZW5ndGgpOw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaHRtbEVzY2FwZSgkdmFyLCAkY2hhcnNldCA9ICdVVEYtOCcsICRzaG9ydGVuID0gZmFsc2UsICRsZW5ndGggPSA0MCkNCgl7DQoJCS8vIHNldCB0aGUgbG9jYWwgY29tcG9uZW50IG9wdGlvbg0KCQlzZWxmOjpzZXRDb21wb25lbnRPcHRpb24oKTsNCg0KCQlyZXR1cm4gU3RyaW5nSGVscGVyOjpodG1sKCR2YXIsICRjaGFyc2V0LCAkc2hvcnRlbiwgJGxlbmd0aCk7DQoJfQ0KDQoJLyoqDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqIA0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgU3RyaW5nSGVscGVyOjpudW1iZXJzKCRzdHJpbmcpOw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVwbGFjZU51bWJlcnMoJHN0cmluZykNCgl7DQoJCXJldHVybiBTdHJpbmdIZWxwZXI6Om51bWJlcnMoJHN0cmluZyk7DQoJfQ0KDQoJLyoqDQoJICogQ29udmVydCBhbiBpbnRlZ2VyIGludG8gYW4gRW5nbGlzaCB3b3JkIHN0cmluZw0KCSAqIFRoYW5rcyB0byBUb20gTmljaG9sc29uIDxodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uc3RydmFsLnBocCM0MTk4OD4NCgkgKg0KCSAqIEBpbnB1dCAgICBpbnQgJHggYW4gaW50DQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgYSBzdHJpbmcNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIFN0cmluZ0hlbHBlcjo6bnVtYmVyKCR4KTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG51bWJlclRvU3RyaW5nKCR4KQ0KCXsNCgkJcmV0dXJuIFN0cmluZ0hlbHBlcjo6bnVtYmVyKCR4KTsNCgl9DQoNCgkvKioNCgkgKiBSYW5kb20gS2V5DQoJICoNCgkgKiBAaW5wdXQgaW50ICRzaXplIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZw0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIGEgc3RyaW5nIG9mIHJhbmRvbSBjaGFyYWN0ZXJzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBTdHJpbmdIZWxwZXI6OnJhbmRvbSgkc2l6ZSk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByYW5kb21rZXkoJHNpemUpOiBzdHJpbmcNCgl7DQoJCXJldHVybiBTdHJpbmdIZWxwZXI6OnJhbmRvbSgkc2l6ZSk7DQoJfQ0KDQoJLyoqDQoJICogQ2hlY2sgaWYgeW91IGhhdmUgYSBqc29uIHN0cmluZw0KCSAqDQoJICogQGlucHV0ICAgIHN0cmluZyAgJHN0cmluZyAgVGhlIGpzb24gc3RyaW5nIHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBib29sIHRydWUgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgSnNvbkhlbHBlcjo6Y2hlY2soJHN0cmluZyk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja0pzb24oJHN0cmluZyk6IGJvb2wNCgl7DQoJCXJldHVybiBKc29uSGVscGVyOjpjaGVjaygkc3RyaW5nKTsNCgl9DQoNCgkvKioNCgkgKiBAc2luY2UgIDMuMC45DQoJICogDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBKc29uSGVscGVyOjpzdHJpbmcoJHZhbHVlLCAkc3BlcmF0b3IsICR0YWJsZSwgJGlkLCAkbmFtZSk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBqc29uVG9TdHJpbmcoJHZhbHVlLCAkc3BlcmF0b3IgPSAiLCAiLCAkdGFibGUgPSBudWxsLCAkaWQgPSAnaWQnLCAkbmFtZSA9ICduYW1lJykNCgl7DQoJCXJldHVybiBKc29uSGVscGVyOjpzdHJpbmcoJHZhbHVlLCAkc3BlcmF0b3IsICR0YWJsZSwgJGlkLCAkbmFtZSk7DQoJfQ0KDQoJLyoqDQoJICogQ2hlY2sgaWYgeW91IGhhdmUgYW4gYXJyYXkgd2l0aCBhIGxlbmd0aA0KCSAqDQoJICogQGlucHV0ICAgIG1peGVkICRhcnJheSAgICAgICAgICAgICAgVGhlIGFycmF5IHRvIGNoZWNrDQoJICogQGlucHV0ICAgIGJvb2wgICRyZW1vdmVFbXB0eVN0cmluZyAgU2hvdWxkIHdlIHJlbW92ZSBlbXB0eSB2YWx1ZXMNCgkgKg0KCSAqIEByZXR1cm5zIGludCAgbnVtYmVyIG9mIGl0ZW1zIGluIGFycmF5IG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIEFycmF5SGVscGVyOjpjaGVjaygkYXJyYXksICRyZW1vdmVFbXB0eVN0cmluZyk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja0FycmF5KCRhcnJheSwgJHJlbW92ZUVtcHR5U3RyaW5nID0gZmFsc2UpOiBpbnQNCgl7DQoJCXJldHVybiBBcnJheUhlbHBlcjo6Y2hlY2soJGFycmF5LCAkcmVtb3ZlRW1wdHlTdHJpbmcpOw0KCX0NCg0KCS8qKg0KCSAqIE1lcmdlIGFuIGFycmF5IG9mIGFycmF5J3MNCgkgKg0KCSAqIEBpbnB1dCAgICBtaXhlZCAgJGFycmF5cyBUaGUgYXJyYXlzIHlvdSB3b3VsZCBsaWtlIHRvIG1lcmdlDQoJICoNCgkgKiBAcmV0dXJucyBtaXhlZCBhcnJheSBvbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBBcnJheUhlbHBlcjo6bWVyZ2UoJGFycmF5cyk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtZXJnZUFycmF5cygkYXJyYXlzKQ0KCXsNCgkJcmV0dXJuIEFycmF5SGVscGVyOjptZXJnZSgkYXJyYXlzKTsNCgl9DQoNCgkvKioNCgkgKiBDaGVjayBpZiB5b3UgaGF2ZSBhbiBvYmplY3Qgd2l0aCBhIGxlbmd0aA0KCSAqDQoJICogQGlucHV0ICAgIG9iamVjdCAkb2JqZWN0ICBUaGUgb2JqZWN0IHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBib29sIHRydWUgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgT2JqZWN0SGVscGVyOjpjaGVjaygkb2JqZWN0KTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrT2JqZWN0KCRvYmplY3QpOiBib29sDQoJew0KCQlyZXR1cm4gT2JqZWN0SGVscGVyOjpjaGVjaygkb2JqZWN0KTsNCgl9DQoNCgkvKioNCgkgKiBHZXQgYSBWYXJpYWJsZSANCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgICAgVGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZ2V0IHRoZSB2YXJpYWJsZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR3aGVyZSAgICAgICAgVGhlIHZhbHVlIHdoZXJlDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHdoZXJlU3RyaW5nICBUaGUgdGFyZ2V0L2ZpZWxkIHN0cmluZyB3aGVyZS9uYW1lDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHdoYXQgICAgICAgICBUaGUgcmV0dXJuIGZpZWxkDQoJICogQHBhcmFtICAgc3RyaW5nICAgJG9wZXJhdG9yICAgICBUaGUgb3BlcmF0b3IgYmV0d2VlbiAkd2hlcmVTdHJpbmcvZmllbGQgYW5kICR3aGVyZS92YWx1ZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRtYWluICAgICAgICAgVGhlIGNvbXBvbmVudCBpbiB3aGljaCB0aGUgdGFibGUgaXMgZm91bmQNCgkgKg0KCSAqIEByZXR1cm4gIG1peCBzdHJpbmcvaW50L2Zsb2F0DQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBHZXRIZWxwZXI6OnZhcigkdGFibGUsICR3aGVyZSwgJHdoZXJlU3RyaW5nLCAkd2hhdCwgJG9wZXJhdG9yLCAkbWFpbik7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRWYXIoJHRhYmxlLCAkd2hlcmUgPSBudWxsLCAkd2hlcmVTdHJpbmcgPSAndXNlcicsICR3aGF0ID0gJ2lkJywgJG9wZXJhdG9yID0gJz0nLCAkbWFpbiA9IG51bGwpDQoJew0KCQkvLyBzZXQgdGhlIGxvY2FsIGNvbXBvbmVudCBvcHRpb24NCgkJc2VsZjo6c2V0Q29tcG9uZW50T3B0aW9uKCk7DQoNCgkJcmV0dXJuIEdldEhlbHBlcjo6dmFyKCR0YWJsZSwgJHdoZXJlLCAkd2hlcmVTdHJpbmcsICR3aGF0LCAkb3BlcmF0b3IsICRtYWluKTsNCgl9DQoNCgkvKioNCgkgKiBHZXQgYXJyYXkgb2YgdmFyaWFibGVzDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdGFibGUgICAgICAgIFRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGdldCB0aGUgdmFyaWFibGVzDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHdoZXJlICAgICAgICBUaGUgdmFsdWUgd2hlcmUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkd2hlcmVTdHJpbmcgIFRoZSB0YXJnZXQvZmllbGQgc3RyaW5nIHdoZXJlL25hbWUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkd2hhdCAgICAgICAgIFRoZSByZXR1cm4gZmllbGQNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkb3BlcmF0b3IgICAgIFRoZSBvcGVyYXRvciBiZXR3ZWVuICR3aGVyZVN0cmluZy9maWVsZCBhbmQgJHdoZXJlL3ZhbHVlDQoJICogQHBhcmFtICAgc3RyaW5nICAgJG1haW4gICAgICAgICBUaGUgY29tcG9uZW50IGluIHdoaWNoIHRoZSB0YWJsZSBpcyBmb3VuZA0KCSAqIEBwYXJhbSAgIGJvb2wgICAgICR1bmlxdWUgICAgICAgVGhlIHN3aXRjaCB0byByZXR1cm4gYSB1bmlxdWUgYXJyYXkNCgkgKg0KCSAqIEByZXR1cm4gIGFycmF5DQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBHZXRIZWxwZXI6OnZhcnMoJHRhYmxlLCAkd2hlcmUsICR3aGVyZVN0cmluZywgJHdoYXQsICRvcGVyYXRvciwgJG1haW4sICR1bmlxdWUpOw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmFycygkdGFibGUsICR3aGVyZSA9IG51bGwsICR3aGVyZVN0cmluZyA9ICd1c2VyJywgJHdoYXQgPSAnaWQnLCAkb3BlcmF0b3IgPSAnSU4nLCAkbWFpbiA9IG51bGwsICR1bmlxdWUgPSB0cnVlKQ0KCXsNCgkJLy8gc2V0IHRoZSBsb2NhbCBjb21wb25lbnQgb3B0aW9uDQoJCXNlbGY6OnNldENvbXBvbmVudE9wdGlvbigpOw0KDQoJCXJldHVybiBHZXRIZWxwZXI6OnZhcnMoJHRhYmxlLCAkd2hlcmUsICR3aGVyZVN0cmluZywgJHdoYXQsICRvcGVyYXRvciwgJG1haW4sICR1bmlxdWUpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCBhbGwgc3RyaW5ncyBiZXR3ZWVuIHR3byBvdGhlciBzdHJpbmdzDQoJICoNCgkgKiBAcGFyYW0gIHN0cmluZyAgICAgICAgICAkY29udGVudCAgICBUaGUgY29udGVudCB0byBzZWFyY2gNCgkgKiBAcGFyYW0gIHN0cmluZyAgICAgICAgICAkc3RhcnQgICAgICAgIFRoZSBzdGFydGluZyB2YWx1ZQ0KCSAqIEBwYXJhbSAgc3RyaW5nICAgICAgICAgICRlbmQgICAgICAgICBUaGUgZW5kaW5nIHZhbHVlDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheSAgICAgICAgICBPbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBHZXRIZWxwZXI6OmFsbEJldHdlZW4oJGNvbnRlbnQsICRzdGFydCwgJGVuZCk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRBbGxCZXR3ZWVuKCRjb250ZW50LCAkc3RhcnQsICRlbmQpDQoJew0KCQlyZXR1cm4gR2V0SGVscGVyOjphbGxCZXR3ZWVuKCRjb250ZW50LCAkc3RhcnQsICRlbmQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCBhIHN0cmluZyBiZXR3ZWVuIHR3byBvdGhlciBzdHJpbmdzDQoJICogDQoJICogQHBhcmFtICBzdHJpbmcgICAgICAgICAgJGNvbnRlbnQgICAgVGhlIGNvbnRlbnQgdG8gc2VhcmNoDQoJICogQHBhcmFtICBzdHJpbmcgICAgICAgICAgJHN0YXJ0ICAgICAgICBUaGUgc3RhcnRpbmcgdmFsdWUNCgkgKiBAcGFyYW0gIHN0cmluZyAgICAgICAgICAkZW5kICAgICAgICAgVGhlIGVuZGluZyB2YWx1ZQ0KCSAqIEBwYXJhbSAgc3RyaW5nICAgICAgICAgICRkZWZhdWx0ICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpZiBub25lIGZvdW5kDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcgICAgICAgICAgT24gc3VjY2VzcyAvIGVtcHR5IHN0cmluZyBvbiBmYWlsdXJlDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBHZXRIZWxwZXI6OmJldHdlZW4oJGNvbnRlbnQsICRzdGFydCwgJGVuZCwgJGRlZmF1bHQpOw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QmV0d2VlbigkY29udGVudCwgJHN0YXJ0LCAkZW5kLCAkZGVmYXVsdCA9ICcnKQ0KCXsNCgkJcmV0dXJuIEdldEhlbHBlcjo6YmV0d2VlbigkY29udGVudCwgJHN0YXJ0LCAkZW5kLCAkZGVmYXVsdCk7DQoJfQ0KDQoJLyoqDQoJICogYmMgbWF0aCB3cmFwcGVyICh2ZXJ5IGJhc2ljIG5vdCBmb3IgYWNjb3VudGluZykNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0eXBlICAgIFRoZSB0eXBlIGJjIG1hdGgNCgkgKiBAcGFyYW0gICBpbnQgICAgICAkdmFsMSAgICBUaGUgZmlyc3QgdmFsdWUNCgkgKiBAcGFyYW0gICBpbnQgICAgICAkdmFsMiAgICBUaGUgc2Vjb25kIHZhbHVlDQoJICogQHBhcmFtICAgaW50ICAgICAgJHNjYWxlICAgVGhlIHNjYWxlIHZhbHVlDQoJICoNCgkgKiBAcmV0dXJuIGZsb2F0fGludA0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgTWF0aEhlbHBlcjo6YmMoJHR5cGUsICR2YWwxLCAkdmFsMiwgJHNjYWxlKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJjbWF0aCgkdHlwZSwgJHZhbDEsICR2YWwyLCAkc2NhbGUgPSAwKQ0KCXsNCgkJcmV0dXJuIE1hdGhIZWxwZXI6OmJjKCR0eXBlLCAkdmFsMSwgJHZhbDIsICRzY2FsZSk7DQoJfQ0KDQoJLyoqDQoJICogQmFzaWMgc3VtIG9mIGFuIGFycmF5IHdpdGggbW9yZSBwcmVjaXNpb24NCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGFycmF5ICAgIFRoZSB2YWx1ZXMgdG8gc3VtDQoJICogQHBhcmFtICAgaW50ICAgICAgJHNjYWxlICAgVGhlIHNjYWxlIHZhbHVlDQoJICoNCgkgKiBAcmV0dXJuIGZsb2F0fGludA0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgTWF0aEhlbHBlcjo6c3VtKCRhcnJheSwgJHNjYWxlKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJjc3VtKCRhcnJheSwgJHNjYWxlID0gNCkNCgl7DQoJCXJldHVybiBNYXRoSGVscGVyOjpzdW0oJGFycmF5LCAkc2NhbGUpOw0KCX0NCg0KICAgICAgICAvKioNCiAgICAgICAgICogY3JlYXRlIHBsdWdpbiBjbGFzcyBuYW1lDQoJICoNCgkgKiBAaW5wdXQJc3RyaW5nICAgICAgIFRoZSBncm91cCBuYW1lDQoJICogQGlucHV0CXN0cmluZyAgICAgICBUaGUgbmFtZQ0KCSAqDQoJICogQHJldHVybiBzdHJpbmcNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIFBsdWdpbkhlbHBlcjo6c2FmZSgkbmFtZSwgJGdyb3VwKTsNCiAgICAgICAgICovDQogICAgICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUGx1Z2luQ2xhc3NOYW1lKCRncm91cCwgJG5hbWUpDQoJew0KCQlyZXR1cm4gUGx1Z2luSGVscGVyOjpzYWZlQ2xhc3NOYW1lKCRuYW1lLCAkZ3JvdXApOw0KCX0NCg0KCS8qKg0KCSAqIFJldHVybnMgYSBHVUlEdjQgc3RyaW5nDQoJICogDQoJICogVGhhbmtzIHRvIERhdmUgUGVhcnNvbiAoYW5kIG90aGVyKQ0KCSAqIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmNvbS1jcmVhdGUtZ3VpZC5waHAjMTE5MTY4IA0KCSAqDQoJICogVXNlcyB0aGUgYmVzdCBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgbWV0aG9kDQoJICogZm9yIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1zIHdpdGggZmFsbGJhY2sgdG8gYW4gb2xkZXIsDQoJICogbGVzcyBzZWN1cmUgdmVyc2lvbi4NCgkgKg0KCSAqIEBwYXJhbSBib29sICR0cmltDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgR3VpZEhlbHBlcjo6Z2V0KCR0cmltKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEdVSUQoJHRyaW0gPSB0cnVlKQ0KCXsNCgkJcmV0dXJuIEd1aWRIZWxwZXI6OmdldCgkdHJpbSk7DQoJfQ0KDQoJLyoqDQoJICogVmFsaWRhdGUgdGhlIEdsb2JhbGx5IFVuaXF1ZSBJZGVudGlmaWVyICggYW5kIGNoZWNrIGlmIHRhYmxlIGFscmVhZHkgaGFzIHRoaXMgaWRlbnRpZmllcikNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgJGd1aWQNCgkgKiBAcGFyYW0gc3RyaW5nICAgICAgICR0YWJsZQ0KCSAqIEBwYXJhbSBpbnQgICAgICAgICAgICAkaWQNCgkgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNvbXBvbmVudA0KCSAqDQoJICogQHJldHVybiBib29sDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBHdWlkSGVscGVyOjp2YWxpZCgkZ3VpZCwgJHRhYmxlLCAkaWQsICRjb21wb25lbnQpOw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdmFsaWRHVUlEKCRndWlkLCAkdGFibGUgPSBudWxsLCAkaWQgPSAwLCAkY29tcG9uZW50ID0gbnVsbCkNCgl7DQoJCS8vIHNldCB0aGUgbG9jYWwgY29tcG9uZW50IG9wdGlvbg0KCQlzZWxmOjpzZXRDb21wb25lbnRPcHRpb24oKTsNCg0KCQlyZXR1cm4gR3VpZEhlbHBlcjo6dmFsaWQoJGd1aWQsICR0YWJsZSwgJGlkLCAkY29tcG9uZW50KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIElURU0gb2YgYSBHVUlEIGJ5IHRhYmxlDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAkZ3VpZA0KCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICR0YWJsZQ0KCSAqIEBwYXJhbSBzdHJpbmcvYXJyYXkgICR3aGF0DQoJICogQHBhcmFtIHN0cmluZ3xudWxsICAgICRjb21wb25lbnQNCgkgKg0KCSAqIEByZXR1cm4gbWl4DQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqDQoJICogQGRlcHJlY2F0ZWQgIDQuMCAtIFVzZSBHdWlkSGVscGVyOjp2YWxpZCgkZ3VpZCwgJHRhYmxlLCAkaWQsICRjb21wb25lbnQpOw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0R1VJRCgkZ3VpZCwgJHRhYmxlLCAkd2hhdCA9ICdhLmlkJywgJGNvbXBvbmVudCA9IG51bGwpDQoJew0KCQkvLyBzZXQgdGhlIGxvY2FsIGNvbXBvbmVudCBvcHRpb24NCgkJc2VsZjo6c2V0Q29tcG9uZW50T3B0aW9uKCk7DQoNCgkJcmV0dXJuIEd1aWRIZWxwZXI6Oml0ZW0oJGd1aWQsICR0YWJsZSwgJHdoYXQsICRjb21wb25lbnQpOw0KCX0NCg0KCS8qKg0KCSAqIFZhbGlkYXRlIHRoZSBHbG9iYWxseSBVbmlxdWUgSWRlbnRpZmllcg0KCSAqDQoJICogVGhhbmtzIHRvIExld2llDQoJICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE1MTU0NTYvMTQyOTY3Nw0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkZ3VpZA0KCSAqDQoJICogQHJldHVybiBib29sDQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIEd1aWRIZWxwZXI6OnZhbGlkYXRlKCRndWlkKTsNCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIHZhbGlkYXRlR1VJRCgkZ3VpZCkNCgl7DQoJCXJldHVybiBHdWlkSGVscGVyOjp2YWxpZGF0ZSgkZ3VpZCk7DQoJfQ0KDQoJLyoqDQoJICogVGhlIHppcHBlciBtZXRob2QNCgkgKiANCgkgKiBAcGFyYW0gIHN0cmluZyAgICR3b3JraW5nRElSICAgIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGl0ZW1zIG11c3QgYmUgemlwcGVkDQoJICogQHBhcmFtICBzdHJpbmcgICAkZmlsZXBhdGggICAgICAgICAgVGhlIHBhdGggdG8gd2hlcmUgdGhlIHppcCBmaWxlIG11c3QgYmUgcGxhY2VkDQoJICoNCgkgKiBAcmV0dXJuICBib29sIHRydWUgICBPbiBzdWNjZXNzDQoJICoNCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIEZpbGVIZWxwZXI6OnppcCgkd29ya2luZ0RJUiwgJGZpbGVwYXRoKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHppcCgkd29ya2luZ0RJUiwgJiRmaWxlcGF0aCkNCgl7DQoJCXJldHVybiBGaWxlSGVscGVyOjp6aXAoJHdvcmtpbmdESVIsICRmaWxlcGF0aCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBjb250ZW50IG9mIGEgZmlsZQ0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgICAgICAgICRwYXRoICAgVGhlIHBhdGggdG8gdGhlIGZpbGUNCgkgKiBAcGFyYW0gIHN0cmluZy9ib29sICAgJG5vbmUgICBUaGUgcmV0dXJuIHZhbHVlIGlmIG5vIGNvbnRlbnQgd2FzIGZvdW5kDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcgICBPbiBzdWNjZXNzDQoJICoNCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIEZpbGVIZWxwZXI6OmdldENvbnRlbnQoJHBhdGgsICRub25lKTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEZpbGVDb250ZW50cygkcGF0aCwgJG5vbmUgPSAnJykNCgl7DQoJCXJldHVybiBGaWxlSGVscGVyOjpnZXRDb250ZW50KCRwYXRoLCAkbm9uZSk7DQoJfQ0KDQoJLyoqDQoJICogV3JpdGUgYSBmaWxlIHRvIHRoZSBzZXJ2ZXINCgkgKg0KCSAqIEBwYXJhbSAgc3RyaW5nICAgJHBhdGggICAgVGhlIHBhdGggYW5kIGZpbGUgbmFtZSB3aGVyZSB0byBzYWZlIHRoZSBkYXRhDQoJICogQHBhcmFtICBzdHJpbmcgICAkZGF0YSAgICBUaGUgZGF0YSB0byBzYWZlDQoJICoNCgkgKiBAcmV0dXJuICBib29sIHRydWUgICBPbiBzdWNjZXNzDQoJICoNCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIEZpbGVIZWxwZXI6OndyaXRlKCRwYXRoLCAkZGF0YSk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3cml0ZUZpbGUoJHBhdGgsICRkYXRhKQ0KCXsNCgkJcmV0dXJuIEZpbGVIZWxwZXI6OndyaXRlKCRwYXRoLCAkZGF0YSk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IGFsbCB0aGUgZmlsZSBwYXRocyBpbiBmb2xkZXIgYW5kIHN1YiBmb2xkZXJzDQoJICogDQoJICogQHBhcmFtICAgc3RyaW5nICAkZm9sZGVyICAgICBUaGUgbG9jYWwgcGF0aCB0byBwYXJzZQ0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGZpbGVUeXBlcyAgVGhlIHR5cGUgb2YgZmlsZXMgdG8gZ2V0DQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIEZpbGVIZWxwZXI6OmdldFBhdGhzKCRmb2xkZXIsICRmaWxlVHlwZXMgLCAkcmVjdXJzZSwgJGZ1bGwpOw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QWxsRmlsZVBhdGhzKCRmb2xkZXIsICRmaWxlVHlwZXMgPSBhcnJheSgnXC5waHAnLCAnXC5qcycsICdcLmNzcycsICdcLmxlc3MnKSwgJHJlY3Vyc2UgPSB0cnVlLCAkZnVsbCA9IHRydWUpDQoJew0KCQlyZXR1cm4gRmlsZUhlbHBlcjo6Z2V0UGF0aHMoJGZvbGRlciwgJGZpbGVUeXBlcyAsICRyZWN1cnNlLCAkZnVsbCk7DQoJfQ0KDQoJLyoqDQoJICogR2V0IHRoZSBmaWxlIHBhdGggb3IgdXJsDQoJICoNCgkgKiBAcGFyYW0gIHN0cmluZyAgICR0eXBlICAgICAgICAgICAgICBUaGUgKHVybC9wYXRoKSB0eXBlIHRvIHJldHVybg0KCSAqIEBwYXJhbSAgc3RyaW5nICAgJHRhcmdldCAgICAgICAgICAgIFRoZSBQYXJhbXMgVGFyZ2V0IG5hbWUgKGlmIHNldCkNCgkgKiBAcGFyYW0gIHN0cmluZyAgICRmaWxlVHlwZSAgICAgICAgICBUaGUga2luZCBvZiBmaWxlbmFtZSB0byBnZW5lcmF0ZSAoaWYgbm90IHNldCBubyBmaWxlIG5hbWUgaXMgZ2VuZXJhdGVkKQ0KCSAqIEBwYXJhbSAgc3RyaW5nICAgJGtleSAgICAgICAgICAgICAgIFRoZSBrZXkgdG8gYWRqdXN0IHRoZSBmaWxlbmFtZSAoaWYgbm90IHNldCBpZ25vcmVkKQ0KCSAqIEBwYXJhbSAgc3RyaW5nICAgJGRlZmF1bHQgICAgICAgICAgIFRoZSBkZWZhdWx0IHBhdGggaWYgbm90IHNldCBpbiBQYXJhbXMgKGZhbGxiYWNrIHBhdGgpDQoJICogQHBhcmFtICBib29sICAgICAkY3JlYXRlSWZOb3RTZXQgICAgVGhlIHN3aXRjaCB0byBjcmVhdGUgdGhlIGZvbGRlciBpZiBub3QgZm91bmQNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZyAgICBPbiBzdWNjZXNzIHRoZSBwYXRoIG9yIHVybCBpcyByZXR1cm5lZCBiYXNlZCBvbiB0aGUgdHlwZSByZXF1ZXN0ZWQNCgkgKg0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkICA0LjAgLSBVc2UgRmlsZUhlbHBlcjo6Z2V0UGF0aCgkdHlwZSwgJHRhcmdldCwgJGZpbGVUeXBlLCAka2V5LCAkZGVmYXVsdCwgJGNyZWF0ZUlmTm90U2V0KTsNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEZpbGVQYXRoKCR0eXBlID0gJ3BhdGgnLCAkdGFyZ2V0ID0gJ2ZpbGVwYXRoJywgJGZpbGVUeXBlID0gbnVsbCwgJGtleSA9ICcnLCAkZGVmYXVsdCA9ICcnLCAkY3JlYXRlSWZOb3RTZXQgPSB0cnVlKQ0KCXsNCgkJLy8gc2V0IHRoZSBsb2NhbCBjb21wb25lbnQgb3B0aW9uDQoJCXNlbGY6OnNldENvbXBvbmVudE9wdGlvbigpOw0KDQoJCXJldHVybiBGaWxlSGVscGVyOjpnZXRQYXRoKCR0eXBlLCAkdGFyZ2V0LCAkZmlsZVR5cGUsICRrZXksICRkZWZhdWx0LCAkY3JlYXRlSWZOb3RTZXQpOw0KCX0NCg0KCS8qKg0KCSAqIENoZWNrIGlmIGZpbGUgZXhpc3QNCgkgKg0KCSAqIEBwYXJhbSAgc3RyaW5nICAgJHBhdGggICBUaGUgdXJsL3BhdGggdG8gY2hlY2sNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wgICAgICBJZiBleGlzdCB0cnVlDQoJICoNCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCAgNC4wIC0gVXNlIEZpbGVIZWxwZXI6OmV4aXN0cygkcGF0aCk7DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1cmxFeGlzdHMoJHBhdGgpDQoJew0KCQlyZXR1cm4gRmlsZUhlbHBlcjo6ZXhpc3RzKCRwYXRoKTsNCgl9DQoNCgkvKioNCgkgKiBTZXQgdGhlIGNvbXBvbmVudCBvcHRpb24NCgkgKg0KCSAqIEBwYXJhbSAgIFN0cmluZ3xudWxsICAgICAgICRvcHRpb24gICAgVGhlIG9wdGlvbiBmb3IgdGhlIGNvbXBvbmVudC4NCgkgKg0KCSAqIEBzaW5jZSAgMy4wLjExDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXRDb21wb25lbnRPcHRpb24oJG9wdGlvbiA9IG51bGwpDQoJew0KCQkvLyBzZXQgdGhlIGxvY2FsIGNvbXBvbmVudCBvcHRpb24NCgkJaWYgKGVtcHR5KCRvcHRpb24pKQ0KCQl7DQoJCQlpZiAoZW1wdHkoSGVscGVyOjokb3B0aW9uKSAmJiBwcm9wZXJ0eV9leGlzdHMoX19DTEFTU19fLCAnQ29tcG9uZW50Q29kZU5hbWUnKSkNCgkJCXsNCgkJCQlIZWxwZXI6OiRvcHRpb24gPSAnY29tXycgLiBzZWxmOjokQ29tcG9uZW50Q29kZU5hbWU7DQoJCQl9DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlIZWxwZXI6OiRvcHRpb24gPSAkb3B0aW9uOw0KCQl9DQoJfQ0K', '{}', 'Utilities', 'VDM\\Joomla\\Utilities', '1.0.0', '{}', 'Utilities', 'trait', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"4b225c51-d293-48e4-b3f6-5136cf5c3f18\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"},\"use_selection3\":{\"use\":\"91004529-94a9-4590-b842-e7c6b624ecf5\",\"as\":\"default\"},\"use_selection4\":{\"use\":\"152c8793-8b75-4715-996a-257b9f65451c\",\"as\":\"default\"},\"use_selection5\":{\"use\":\"db87c339-5bb6-4291-a7ef-2c48ea1b06bc\",\"as\":\"default\"},\"use_selection6\":{\"use\":\"9c513baf-b279-43fd-ae29-a585c8cbc4f0\",\"as\":\"default\"},\"use_selection7\":{\"use\":\"a223b31e-ea1d-4cdf-92ae-5f9becffaff0\",\"as\":\"default\"},\"use_selection8\":{\"use\":\"9ef0eb24-aae4-4f5a-99af-d724db44808f\",\"as\":\"default\"},\"use_selection9\":{\"use\":\"a8935cbe-7701-40dc-bfd5-675f2d600954\",\"as\":\"default\"},\"use_selection10\":{\"use\":\"30c5b4c2-f75f-4d15-869a-f8bfedd87358\",\"as\":\"default\"},\"use_selection11\":{\"use\":\"ce8cf834-6bac-44fb-941c-861f7e046cc0\",\"as\":\"default\"},\"use_selection12\":{\"use\":\"3cf76fbf-fd95-4a33-878e-7aff6d36b7f6\",\"as\":\"default\"},\"use_selection13\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"}}', '', 1, '2021-11-06 13:25:19', '2022-08-20 15:18:05', 70, 1), -(2, 1, 'To extrude tables structures from lila', '', '', '050f5a27-3aab-4087-8a3d-e2302fcfd5db', 'dXNlIERpcmVjdG9yeUl0ZXJhdG9yOw0KdXNlIFNwbEZpbGVPYmplY3Q7DQp1c2Ugc3RkQ2xhc3M7DQp1c2UgZnVuY3Rpb24gYXJyYXlfcG9wOw0KdXNlIGZ1bmN0aW9uIGNvdW50Ow0KdXNlIGZ1bmN0aW9uIGV4cGxvZGU7DQp1c2UgZnVuY3Rpb24gZmlsZV9leGlzdHM7DQp1c2UgZnVuY3Rpb24gaXNfbnVsbDsNCnVzZSBmdW5jdGlvbiBhcnJheV9yZXZlcnNlOw0KdXNlIGZ1bmN0aW9uIHN0cl9yZXBsYWNlOw0KdXNlIGZ1bmN0aW9uIHN0cmxlbjsNCnVzZSBmdW5jdGlvbiBzdHJwb3M7DQp1c2UgZnVuY3Rpb24gc3RycnBvczsNCnVzZSBmdW5jdGlvbiBzdWJzdHI7DQp1c2UgZnVuY3Rpb24gdHJpbTsNCg==', '', '', '', 'CS8qKg0KCSAqIEFkZGluZyB0aGUgdXRpbGl0aWVzIHRyYWl0IHRvIHRoaXMgY2xhc3MNCgkgKiBTaW5jZSB3ZSBuZWVkIHNvbWUgb2YgaXRzIGZ1bmN0aW9ucw0KCSAqLw0KCXVzZSBVdGlsOw0KDQoJLyoqDQoJICogVGhlIG1vZHVsZSBuYW1lDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAkbW9kdWxlOw0KDQoJLyoqDQoJICogVGhlIGFjdGlvbg0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8NCglwcm90ZWN0ZWQgJGFjdGlvbjsNCg0KCS8qKg0KCSAqIFRoZSB0YWJsZXMgYXJyYXkNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJHRhYmxlcyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBUaGUgbGlua3MgYXJyYXkNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJGxpbmtzID0gYXJyYXkoKTsNCg0KCS8qKg0KCSAqIFRoZSB0bXAgYXJyYXkNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJHRtcCA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBUaGUgZmllbGQgbGlua2VyDQoJICoNCgkgKiBAdmFyIG1peGVkDQoJICovDQoJcHJvdGVjdGVkICRmaWVsZCA9IG51bGw7DQoNCgkvKioNCgkgKiBUaGUgdGFibGUgbGlua2VyDQoJICoNCgkgKiBAdmFyIG1peGVkDQoJICovDQoJcHJvdGVjdGVkICR0YWJsZSA9IG51bGw7DQoNCgkvKioNCgkgKiBUaGUgaW5kZXhlcg0KCSAqDQoJICogQHZhciBtaXhlZA0KCSAqLw0KCXByb3RlY3RlZCAkaW5kZXggPSBmYWxzZTsNCg0KCS8qKg0KCSAqIFRoZSBkaXJlY3RvcnkNCgkgKg0KCSAqIEB2YXIgRGlyZWN0b3J5SXRlcmF0b3INCgkgKi8NCglwcm90ZWN0ZWQgJGRpcmVjdG9yeTsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gICBEaXJlY3RvcnlJdGVyYXRvciAgJGRpciAgVGhlIGRpcmVjdG9yeSBvYmplY3Qgb2YgZGYgZmlsZXMNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoRGlyZWN0b3J5SXRlcmF0b3IgJGRpcikNCgl7DQoJCS8vIHNldCB0aGUgZGlyZWN0b3J5DQoJCSR0aGlzLT5kaXJlY3RvcnkgPSAkZGlyOw0KCQkvLyBsb2FkIHRoZSBsaW5rYWdlDQoJCSR0aGlzLT5zZXRMaW5rcygpOw0KCQkvLyBidWlsZCB0aGUganNvbiB0YWJsZSBzdHJ1Y3R1cmUNCgkJJHRoaXMtPnNldFRhYmxlcygpOw0KCQkvLyBsaW5lLXVwIHRoZSBpbmRleCBhbmQgbGlua3MNCgkJJHRoaXMtPnNldFJlbGF0aW9uc2hpcHMoKTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgcHJvcGVydHkNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGtleSAgVGhlIGtleSB2YWx1ZSB0byByZXR1cm4NCgkgKg0KCSAqIEByZXR1cm4gbWl4ZWQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRrZXkpDQoJew0KCQkka2V5ID0gc3RydG9sb3dlcigka2V5KTsNCgkJaWYgKCRrZXkgPT09ICd0YWJsZXMnKQ0KCQl7DQoJCQlyZXR1cm4gJHRoaXMtPnRhYmxlczsNCgkJfQ0KCQllbHNlaWYgKCRrZXkgPT09ICdsaW5rcycpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+bGlua3M7DQoJCX0NCgkJLy8ganVzdCB0d28gbGF5ZXJzICh0YWJsZS5tb2R1bGVfbmFtZS50YWJsZV9uYW1lKSBpbiBmb3Igbm93DQoJCWVsc2VpZiAoc3RycG9zKCRrZXksICcuJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkka2V5X2FycmF5ID0gZXhwbG9kZSgnLicsICRrZXkpOw0KCQkJLy8gdGFibGVzDQoJCQlpZiAoJGtleV9hcnJheVswXSA9PT0gJ3RhYmxlJyAmJiBpc3NldCgka2V5X2FycmF5WzFdKSAmJiBpc3NldCgkdGhpcy0+dGFibGVzWyRrZXlfYXJyYXlbMV1dKQ0KCQkJCSYmIGlzc2V0KCRrZXlfYXJyYXlbMl0pICYmIGlzc2V0KCR0aGlzLT50YWJsZXNbJGtleV9hcnJheVsxXV1bJGtleV9hcnJheVsyXV0pKQ0KCQkJew0KCQkJCXJldHVybiAkdGhpcy0+dGFibGVzWyRrZXlfYXJyYXlbMV1dWyRrZXlfYXJyYXlbMl1dOw0KCQkJfQ0KCQkJLy8gbGlua3MNCgkJCWVsc2VpZiAoJGtleV9hcnJheVswXSA9PT0gJ2xpbmsnICYmIGlzc2V0KCRrZXlfYXJyYXlbMV0pICYmIGlzc2V0KCR0aGlzLT5saW5rc1ska2V5X2FycmF5WzFdXSkNCgkJCQkmJiBpc3NldCgka2V5X2FycmF5WzJdKSAmJiBpc3NldCgkdGhpcy0+bGlua3NbJGtleV9hcnJheVsxXV1bJGtleV9hcnJheVsyXV0pKQ0KCQkJew0KCQkJCXJldHVybiAkdGhpcy0+bGlua3NbJGtleV9hcnJheVsxXV1bJGtleV9hcnJheVsyXV07DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogbGluLXVwIHRoZSBsaW5rcyBhbmQgaW5kZXggdmFsdWVzDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFJlbGF0aW9uc2hpcHMoKQ0KCXsNCgkJLy8gbGluZSB1cCBpbmRleCBmaWVsZHMNCgkJZm9yZWFjaCAoJHRoaXMtPnRtcFsnaW5kZXgnXSBhcyAkbW9kID0+ICR0YWJsZXMpDQoJCXsNCgkJCWZvcmVhY2ggKCR0YWJsZXMgYXMgJHRhYmxlID0+ICRpbmRleF9uYW1lcykNCgkJCXsNCgkJCQlmb3JlYWNoICgkaW5kZXhfbmFtZXMgYXMgJGluZGV4ID0+ICRmaWVsZHMpDQoJCQkJew0KCQkJCQkkdGhpcy0+dGFibGVzWyRtb2RdWyR0YWJsZV0tPmluZGV4WyRpbmRleF0tPmluZGV4X2ZpZWxkID0gJGZpZWxkczsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gY2xlYXIgdGhlIHRtcCBpbmRleA0KCQl1bnNldCgkdGhpcy0+dG1wWydpbmRleCddKTsNCgkJLy8gbGluZSB1cCBsaW5rcyB3aXRoIHRoZSBsaW5rZWQgZGF0YQ0KCQlmb3JlYWNoICgkdGhpcy0+dG1wWydsaW5rcyddIGFzICRwYXJlbnRfbW9kID0+ICRjaGlsZHJlbikNCgkJew0KCQkJLy8gdGhpc19tb2RlbChwYXJlbnRfbW9kKSA9IG90aGVyX3RhYmxlc1tjaGlsZHJlbj1jaGlsZF0gPSB0aGlzX3RhYmxlW3BhcmVudHM9cGFyZW50XSA9IGtleXNbZmllbGRzXQ0KCQkJZm9yZWFjaCAoJGNoaWxkcmVuIGFzICRjaGlsZCA9PiAkcGFyZW50cykNCgkJCXsNCgkJCQlmb3JlYWNoICgkcGFyZW50cyBhcyAkcGFyZW50ID0+ICRmaWVsZHMpDQoJCQkJew0KCQkJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgbGVnaXRpbWF0ZSBtYXRjaA0KCQkJCQlpZiAoISR0aGlzLT5sZWdpdGltYXRlSW5kZXhMaW5rKCRwYXJlbnRfbW9kLCAkcGFyZW50LCAkZmllbGRzKSkNCgkJCQkJew0KCQkJCQkJY29udGludWU7DQoJCQkJCX0NCgkJCQkJJGNoaWxkX21vZCA9ICR0aGlzLT5nZXRNb2ROYW1lKCRjaGlsZCk7DQoJCQkJCS8vIHNldCB0aGUgbGluaw0KCQkJCQlpZiAoIWlzc2V0KCR0aGlzLT50YWJsZXNbJGNoaWxkX21vZF1bJGNoaWxkXS0+bGlua3MpKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+dGFibGVzWyRjaGlsZF9tb2RdWyRjaGlsZF0tPmxpbmtzID0gYXJyYXkoKTsNCgkJCQkJfQ0KCQkJCQkvLyBub3cgc2V0IHRoZSBtb2R1bGUNCgkJCQkJaWYgKCFpc3NldCgkdGhpcy0+dGFibGVzWyRjaGlsZF9tb2RdWyRjaGlsZF0tPmxpbmtzWyRwYXJlbnRfbW9kXSkpDQoJCQkJCXsNCgkJCQkJCSR0aGlzLT50YWJsZXNbJGNoaWxkX21vZF1bJGNoaWxkXS0+bGlua3NbJHBhcmVudF9tb2RdID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkJCQkvLyBzZXQgdGhlIG5hbWUNCgkJCQkJCSR0aGlzLT50YWJsZXNbJGNoaWxkX21vZF1bJGNoaWxkXS0+bGlua3NbJHBhcmVudF9tb2RdLT5tb2R1bGUgPSAkcGFyZW50X21vZDsNCgkJCQkJfQ0KCQkJCQkvLyBub3cgc2V0IHRoZSB0YWJsZQ0KCQkJCQlpZiAoIWlzc2V0KCR0aGlzLT50YWJsZXNbJGNoaWxkX21vZF1bJGNoaWxkXS0+bGlua3NbJHBhcmVudF9tb2RdLT50YWJsZXMpKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+dGFibGVzWyRjaGlsZF9tb2RdWyRjaGlsZF0tPmxpbmtzWyRwYXJlbnRfbW9kXS0+dGFibGVzID0gYXJyYXkoKTsNCgkJCQkJfQ0KCQkJCQkvLyBzZXQgdGhlIGZpZWxkcw0KCQkJCQlmb3JlYWNoICgkZmllbGRzIGFzICRmaWVsZCkNCgkJCQkJew0KCQkJCQkJJHRoaXMtPnRhYmxlc1skY2hpbGRfbW9kXVskY2hpbGRdLT5saW5rc1skcGFyZW50X21vZF0tPnRhYmxlc1skcGFyZW50XVtdID0gJGZpZWxkOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogY2hlY2sgaWYgYSBmaWVsZCBpcyByZWFsbHkgYW4gaW5kZXggbGluaw0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkbW9kICAgICBUaGUgbW9kdWxlIHRhYmxlIHRvIGNoZWNrDQoJICogQHBhcmFtICAgc3RyaW5nICAkdGFibGUgICBUaGUgdGFibGUgaW5kZXggdG8gY2hlY2sNCgkgKiBAcGFyYW0gICBhcnJheSAgICRmaWVsZHMgIFRoZSBmaWVsZHMgdGhhdCBtdXN0IGJlIHBhcnQgb2YgdGhlIG1vZHVsZS50YWJsZS5pbmRleA0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBsZWdpdGltYXRlSW5kZXhMaW5rKHN0cmluZyAkbW9kLCBzdHJpbmcgJHRhYmxlLCBhcnJheSAkZmllbGRzKTogYm9vbA0KCXsNCgkJLy8gY2hlY2sgaWYgdGFibGUgaGFzIGtleXMNCgkJaWYgKGlzc2V0KCR0aGlzLT5saW5rc1skbW9kXVskdGFibGVdLT5rZXlzKSAmJiAkdGhpcy0+Y2hlY2tBcnJheSgkdGhpcy0+bGlua3NbJG1vZF1bJHRhYmxlXS0+a2V5cykgJiYgJHRoaXMtPmNoZWNrQXJyYXkoJGZpZWxkcykpDQoJCXsNCgkJCSRvbmUgPSAoYXJyYXkpIGFycmF5X2RpZmYoJHRoaXMtPmxpbmtzWyRtb2RdWyR0YWJsZV0tPmtleXMsICRmaWVsZHMpOw0KCQkJJHR3byA9IChhcnJheSkgYXJyYXlfZGlmZigkZmllbGRzLCAkdGhpcy0+bGlua3NbJG1vZF1bJHRhYmxlXS0+a2V5cyk7DQoJCQlpZiAoISR0aGlzLT5jaGVja0FycmF5KCRvbmUpICYmICEkdGhpcy0+Y2hlY2tBcnJheSgkdHdvKSkNCgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogYnVpbGQgdGhlIGpzb24gc3RydWN0dXJlcw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRUYWJsZXMoKQ0KCXsNCgkJLy8gc2V0IHRoZSBhY3Rpb24NCgkJJHRoaXMtPmFjdGlvbiA9ICd0YWJsZXMnOw0KCQkkdGhpcy0+ZmllbGQgID0gbnVsbDsNCgkJJHRoaXMtPnRhYmxlICA9IG51bGw7DQoJCSR0aGlzLT5pbmRleCAgPSBmYWxzZTsNCgkJLy8gbm93IGdvIG92ZXIgdGhlbQ0KCQlmb3JlYWNoICgkdGhpcy0+ZGlyZWN0b3J5IGFzICRmaWxlX2luZm8pDQoJCXsNCgkJCS8vIHdlIGRvIG5vdCBhY3Qgb24gZGlyZWN0b3J5IGRvdA0KCQkJaWYgKCEkZmlsZV9pbmZvLT5pc0RvdCgpKQ0KCQkJew0KCQkJCS8vIGdldCB0aGUgcGF0aCBuYW1lDQoJCQkJJHBhdGhfbmFtZSA9ICRmaWxlX2luZm8tPmdldFBhdGhuYW1lKCk7DQoJCQkJLy8gZ2V0IHRoZSBtb2R1bGUgbmFtZQ0KCQkJCSR0aGlzLT5tb2R1bGUgPSBzdHJfcmVwbGFjZSgnX3RhYmxlcy5kZicsICcnLCAkZmlsZV9pbmZvLT5nZXRiYXNlbmFtZSgpKTsNCgkJCQkvLyB3ZSByZXNldCB0aGUgdGFibGUgd2l0aCBlYWNoIGxvb3A7DQoJCQkJJHRoaXMtPnskdGhpcy0+YWN0aW9ufVskdGhpcy0+bW9kdWxlXSA9IGFycmF5KCk7DQoJCQkJLy8gYmFzaWMgZ2V0IGZpbGUgZnVuY3Rpb24NCgkJCQlmb3JlYWNoIChuZXcgU3BsRmlsZU9iamVjdCgkcGF0aF9uYW1lKSBhcyAkbGluZV9jb250ZW50KQ0KCQkJCXsNCgkJCQkJLy8gbGV0cyBnZXQgdGhlIGxpbmsgcGFyc2VkDQoJCQkJCWlmICghJHRoaXMtPnBhcnNlcigkbGluZV9jb250ZW50KSkNCgkJCQkJew0KCQkJCQkJYnJlYWs7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBsb2FkIHRoZSBsaW5rcw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRMaW5rcygpDQoJew0KCQkvLyBzZXQgdGhlIGFjdGlvbg0KCQkkdGhpcy0+YWN0aW9uID0gJ2xpbmtzJzsNCgkJLy8gbm93IGdvIG92ZXIgdGhlbQ0KCQlmb3JlYWNoICgkdGhpcy0+ZGlyZWN0b3J5IGFzICRmaWxlX2luZm8pDQoJCXsNCgkJCS8vIHdlIGRvIG5vdCBhY3Qgb24gZGlyZWN0b3J5IGRvdA0KCQkJaWYgKCEkZmlsZV9pbmZvLT5pc0RvdCgpKQ0KCQkJew0KCQkJCS8vIGdldCB0aGUgcGF0aCBuYW1lDQoJCQkJJHBhdGhfbmFtZSA9ICRmaWxlX2luZm8tPmdldFBhdGhuYW1lKCk7DQoJCQkJLy8gZ2V0IG1hcHBpbmcgcGF0aA0KCQkJCSRtYXBwaW5nX3BhdGhfbmFtZSA9IHN0cl9yZXBsYWNlKGFycmF5KCcvc3RydWN0dXJlLycsICcuZGYnKSwgYXJyYXkoJy9tYXBwaW5nLycsICcuZGF0YScpLCAkcGF0aF9uYW1lKTsNCgkJCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSBhIGZpbGUNCgkJCQlpZiAoZmlsZV9leGlzdHMoJG1hcHBpbmdfcGF0aF9uYW1lKSkNCgkJCQl7DQoJCQkJCS8vIGdldCB0aGUgbW9kdWxlIG5hbWUNCgkJCQkJJHRoaXMtPm1vZHVsZSA9IHN0cl9yZXBsYWNlKCdfdGFibGVzLmRmJywgJycsICRmaWxlX2luZm8tPmdldGJhc2VuYW1lKCkpOw0KCQkJCQkvLyB3ZSByZXNldCB0aGUgdGFibGUgd2l0aCBlYWNoIGxvb3A7DQoJCQkJCSR0aGlzLT57JHRoaXMtPmFjdGlvbn1bJHRoaXMtPm1vZHVsZV0gPSBhcnJheSgpOw0KCQkJCQkvLyBiYXNpYyBnZXQgZmlsZSBmdW5jdGlvbg0KCQkJCQlmb3JlYWNoIChuZXcgU3BsRmlsZU9iamVjdCgkbWFwcGluZ19wYXRoX25hbWUpIGFzICRsaW5lX2NvbnRlbnQpDQoJCQkJCXsNCgkJCQkJCS8vIGxldHMgZ2V0IHRoZSBsaW5rYWdlcw0KCQkJCQkJaWYgKCEkdGhpcy0+c2V0TGluaygkbGluZV9jb250ZW50KSkNCgkJCQkJCXsNCgkJCQkJCQlicmVhazsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEZ1bmN0aW9uIHRvIGFkZCB0aGUgbGlua3MNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGxpbmUgIFRoZSBjb250ZW50IGxpbmUgZnJvbSB0aGUgZmlsZQ0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRMaW5rKHN0cmluZyAkbGluZSk6IGJvb2wNCgl7DQoJCS8vIG5vdyBuZXcgbGluZXMNCgkJaWYgKCFlbXB0eSh0cmltKCRsaW5lKSkgJiYgc3RycG9zKCRsaW5lLCAnPScpICE9PSBmYWxzZSkNCgkJew0KCQkJLy8gZ2V0IHRoZSB0YWJsZSBuYW1lDQoJCQkkZGF0YV9hcnJheSA9IChhcnJheSkgZXhwbG9kZSgnPScsICRsaW5lKTsNCgkJCS8vIG5vdyBsb29wIHRoZSBmaWVsZHMNCgkJCSRmaWVsZHMgPSBhcnJheV9yZXZlcnNlKCRkYXRhX2FycmF5KTsNCgkJCS8vIGxvYWQgdGhlIHRhYmxlDQoJCQkkdGhpcy0+dGFibGUgPSBhcnJheV9wb3AoJGZpZWxkcyk7DQoJCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSBuYW1lIGZpeCBhcHBsaWVkDQoJCQkkdGhpcy0+Zml4TmFtZXMoKTsNCgkJCS8vIGNoYW5nZSBiYWNrIHRvIGEgc3RpbmcNCgkJCSRmaWVsZHMgPSB0cmltKGltcGxvZGUoJyAnLCAkZmllbGRzKSk7DQoJCQkvLyBjaGVjayBpZiB3ZSBoYXZlIGZpZWxkcw0KCQkJaWYgKCFlbXB0eSgkZmllbGRzKSkNCgkJCXsNCgkJCQkvLyBjaGVjayBpZiB3ZSBoYXZlIGFuIGFycmF5DQoJCQkJaWYgKHN0cnBvcygkZmllbGRzLCAnKCcpICE9PSBmYWxzZSkNCgkJCQl7DQoJCQkJCS8vIGdldCBhcnJheSBmaWVsZHMNCgkJCQkJJGZpZWxkcyA9IGV4cGxvZGUoJyAnLCB0cmltKCRmaWVsZHMsICIoKSIpKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJLy8gc2V0IGFycmF5IGZpZWxkcw0KCQkJCQkkZmllbGRzID0gYXJyYXkoJGZpZWxkcyk7DQoJCQkJfQ0KCQkJCS8vIGNoZWNrIGlmIHdlIHN0aWxsIGhhdmUgYW4gYXJyYXkgb2YgZmllbGRzDQoJCQkJaWYgKCR0aGlzLT5jaGVja0FycmF5KCRmaWVsZHMsIHRydWUpKQ0KCQkJCXsNCgkJCQkJLy8gY2hlY2sgaWYgaXQgaXMgdGhlIGxpbmtlciBsaW5lDQoJCQkJCWlmIChzdHJwb3MoJHRoaXMtPnRhYmxlLCAnX19saW5rJykgIT09IGZhbHNlKQ0KCQkJCQl7DQoJCQkJCQkvLyBmaXggdGhlIHRhYmxlDQoJCQkJCQkkdGhpcy0+dGFibGUgPSBzdHJfcmVwbGFjZSgnX19saW5rJywgJycsICR0aGlzLT50YWJsZSk7DQoJCQkJCQkvLyBjaGVjayBpZiB3ZSBoYXZlIHRoZSBjb3JyZWN0IGNvbnZlbnRpb24NCgkJCQkJCWZvcmVhY2ggKCRmaWVsZHMgYXMgJGZpZWxkKQ0KCQkJCQkJew0KCQkJCQkJCWlmIChzdHJwb3MoJGZpZWxkLCAnLicpICE9PSBmYWxzZSkNCgkJCQkJCQl7DQoJCQkJCQkJCS8vIGdldCBhcnJheSBvdGhlcl90YWJsZS5maWVsZA0KCQkJCQkJCQkkZmllbGRfYXJyYXkgPSBleHBsb2RlKCcuJywgdHJpbSgkZmllbGQpKTsNCgkJCQkJCQkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgdHdvIHZhbHVlcw0KCQkJCQkJCQlpZiAoY291bnQoJGZpZWxkX2FycmF5KSA9PSAyKQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkvLyBmaXggdGhlIG5hbWVzDQoJCQkJCQkJCQkkdGhpcy0+Zml4TmFtZSgkZmllbGRfYXJyYXlbMF0pOw0KCQkJCQkJCQkJJHRoaXMtPmZpeE5hbWUoJGZpZWxkX2FycmF5WzFdKTsNCgkJCQkJCQkJCS8vIHNldCB0aGUgdGhpc19tb2RlbCA9IG90aGVyX3RhYmxlID0gdGhpc190YWJsZSA9IGtleXMNCgkJCQkJCQkJCSR0aGlzLT50bXBbJ2xpbmtzJ11bJHRoaXMtPm1vZHVsZV1bJGZpZWxkX2FycmF5WzBdXVskdGhpcy0+dGFibGVdW10gPSAkZmllbGRfYXJyYXlbMV07DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQkvLyBzZXQgdGhlIGZpZWxkcw0KCQkJCQkJJHRoaXMtPnNldFRhYmxlVmFsdWUoJ2tleXMnLCBhcnJheV9tYXAoZnVuY3Rpb24gKCRmaWVsZCkgew0KCQkJCQkJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIG5hbWUgZml4IGFwcGxpZWQNCgkJCQkJCQkkdGhpcy0+Zml4TmFtZSgkZmllbGQpOw0KDQoJCQkJCQkJcmV0dXJuICRmaWVsZDsNCgkJCQkJCX0sICRmaWVsZHMpKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCg0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogRnVuY3Rpb24gdG8gbWFuYWdlIHBhcnNpbmcgb2YgZWFjaCBsaW5lDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRsaW5lICBUaGUgY29udGVudCBsaW5lIGZyb20gdGhlIGZpbGUNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gcGFyc2VyKHN0cmluZyAkbGluZSk6IGJvb2wNCgl7DQoJCS8vIGVuZCBvZiBibG9jaw0KCQlpZiAoZW1wdHkodHJpbSgkbGluZSkpKQ0KCQl7DQoJCQkkdGhpcy0+ZmllbGQgPSBudWxsOw0KCQkJJHRoaXMtPnRhYmxlID0gbnVsbDsNCgkJCSR0aGlzLT5pbmRleCA9IGZhbHNlOw0KCQl9DQoJCS8vIGVuZCBvZiBmaWxlDQoJCWVsc2VpZiAodHJpbSgkbGluZSkgPT0gJy4nKQ0KCQl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJLy8gbmV3IHRhYmxlDQoJCWVsc2VpZiAoc3RycG9zKCRsaW5lLCAnQUREIFRBQkxFJykgIT09IGZhbHNlKQ0KCQl7DQoJCQlyZXR1cm4gJHRoaXMtPnNldFRhYmxlKCRsaW5lKTsNCgkJfQ0KCQkvLyBuZXcgZmllbGQNCgkJZWxzZWlmIChzdHJwb3MoJGxpbmUsICdBREQgRklFTEQnKSAhPT0gZmFsc2UpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+c2V0RmllbGQoJGxpbmUpOw0KCQl9DQoJCS8vIG5ldyB0YWJsZSBpbmRleA0KCQllbHNlaWYgKHN0cnBvcygkbGluZSwgJ0FERCBJTkRFWCcpICE9PSBmYWxzZSkNCgkJew0KCQkJcmV0dXJuICR0aGlzLT5zZXRUYWJsZUluZGV4KCRsaW5lKTsNCgkJfQ0KCQkvLyBuZXcgdGFibGUgcHJvcGVydHkNCgkJZWxzZWlmICghJHRoaXMtPmluZGV4ICYmIGlzc2V0KCR0aGlzLT50YWJsZSkgJiYgc3RybGVuKCR0aGlzLT50YWJsZSkgPiAzICYmIGlzX251bGwoJHRoaXMtPmZpZWxkKQ0KCQkJJiYgaXNzZXQoJHRoaXMtPnskdGhpcy0+YWN0aW9ufVskdGhpcy0+bW9kdWxlXVskdGhpcy0+dGFibGVdLT5uYW1lKSkNCgkJew0KCQkJcmV0dXJuICR0aGlzLT5zZXRUYWJsZVByb3BlcnR5KCRsaW5lKTsNCgkJfQ0KCQkvLyBuZXcgaW5kZXggcHJvcGVydHkNCgkJZWxzZWlmICgkdGhpcy0+aW5kZXggJiYgaXNzZXQoJHRoaXMtPnRhYmxlKSAmJiBzdHJsZW4oJHRoaXMtPnRhYmxlKSA+IDMgJiYgIWlzX251bGwoJHRoaXMtPmZpZWxkKQ0KCQkJJiYgaXNzZXQoJHRoaXMtPnskdGhpcy0+YWN0aW9ufVskdGhpcy0+bW9kdWxlXVskdGhpcy0+dGFibGVdLT5pbmRleFskdGhpcy0+ZmllbGRdKSkNCgkJew0KCQkJcmV0dXJuICR0aGlzLT5zZXRUYWJsZUluZGV4UHJvcGVydHkoJGxpbmUpOw0KCQl9DQoJCS8vIG5ldyBmaWVsZCBwcm9wZXJ0eQ0KCQllbHNlaWYgKCEkdGhpcy0+aW5kZXggJiYgaXNzZXQoJHRoaXMtPnRhYmxlKSAmJiBzdHJsZW4oJHRoaXMtPnRhYmxlKSA+IDMgJiYgIWlzX251bGwoJHRoaXMtPmZpZWxkKQ0KCQkJJiYgaXNzZXQoJHRoaXMtPnskdGhpcy0+YWN0aW9ufVskdGhpcy0+bW9kdWxlXVskdGhpcy0+dGFibGVdLT5maWVsZHNbJHRoaXMtPmZpZWxkXSkpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+c2V0RmllbGRQcm9wZXJ0eSgkbGluZSk7DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCg0KCX0NCg0KCS8qKg0KCSAqIGFkZCBhIG5ldyBmaWVsZA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkbGluZSAgVGhlIGxpbmUgZnJvbSB0aGUgZmlsZQ0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldEZpZWxkKHN0cmluZyAkbGluZSk6IGJvb2wNCgl7DQoJCS8vIGdldCB0aGUgbmFtZQ0KCQlpZiAoKCR0aGlzLT50YWJsZSA9ICR0aGlzLT5nZXRCZXR3ZWVuKCRsaW5lLCAnIE9GICInLCAnIiBBUycsIG51bGwpKSAhPSBudWxsICYmDQoJCQkoJHRoaXMtPmZpZWxkID0gJHRoaXMtPmdldEJldHdlZW4oJGxpbmUsICdBREQgRklFTEQgIicsICciIE9GJywgbnVsbCkpICE9IG51bGwpDQoJCXsNCgkJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIG5hbWUgZml4IGFwcGxpZWQNCgkJCSR0aGlzLT5maXhOYW1lcygpOw0KDQoJCQkvLyBzZXQgZmllbGQgdmFsdWUNCgkJCXJldHVybiAkdGhpcy0+c2V0RmllbGRWYWx1ZSgnZmllbGRzJywgJHRoaXMtPmZpZWxkLCAnbmFtZScsICR0aGlzLT5maWVsZCkgJiYNCgkJCQkvLyBzZXQgZmllbGQgdmFsdWUNCgkJCQkkdGhpcy0+c2V0RmllbGRWYWx1ZSgnZmllbGRzJywgJHRoaXMtPmZpZWxkLCAnZGF0YV90eXBlJywNCgkJCQkJdHJpbShzdWJzdHIoJGxpbmUsIHN0cnJwb3MoJGxpbmUsICdBUycpICsgMikpKTsNCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBhZGQgYSBuZXcgZmllbGQgcHJvcGVydHkNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGxpbmUgIFRoZSBsaW5lIGZyb20gdGhlIGZpbGUNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRGaWVsZFByb3BlcnR5KHN0cmluZyAkbGluZSk6IGJvb2wNCgl7DQoJCS8vIGlmIGJvdGggdGFibGUgYW5kIGZpZWxkIGFyZSBzZXQsIHRoZW4gd2UgYXJlIGxvYWRpbmcgZmllbGQgdmFsdWVzDQoJCSRsaW5lX2FycmF5ID0gKGFycmF5KSBleHBsb2RlKCcgJywgdHJpbSgkbGluZSkpOw0KCQkvLyBnZXQgdGhlIG1haW4ga2V5DQoJCSRrZXkgPSBhcnJheV9zaGlmdCgkbGluZV9hcnJheSk7DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIG5hbWUgZml4IGFwcGxpZWQNCgkJJHRoaXMtPmZpeE5hbWUoJGtleSk7DQoJCS8vIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSB2YWx1ZQ0KCQlpZiAoJGtleSA9PSAnaGVscCcgfHwgJGtleSA9PSAnbGFiZWwnIHx8ICRrZXkgPT0gJ2NvbHVtbl9sYWJlbCcpDQoJCXsNCgkJCS8vIHNldCBmaWVsZCB2YWx1ZQ0KCQkJcmV0dXJuICR0aGlzLT5zZXRGaWVsZFZhbHVlKCdmaWVsZHMnLCAkdGhpcy0+ZmllbGQsICRrZXksIGltcGxvZGUoJyAnLCBhcnJheV9tYXAoZnVuY3Rpb24gKCR2YWwpIHsNCgkJCQlyZXR1cm4gdHJpbSgkdmFsLCAnIicpOw0KCQkJfSwgJGxpbmVfYXJyYXkpKSk7DQoJCX0NCgkJZWxzZWlmIChjb3VudCgkbGluZV9hcnJheSkgPiAxKQ0KCQl7DQoJCQkvLyBzZXQgZmllbGQgdmFsdWUNCgkJCXJldHVybiAkdGhpcy0+c2V0RmllbGRWYWx1ZSgnZmllbGRzJywgJHRoaXMtPmZpZWxkLCAka2V5LCBhcnJheV9tYXAoZnVuY3Rpb24gKCR2YWwpIHsNCgkJCQlyZXR1cm4gdHJpbSgkdmFsLCAnIicpOw0KCQkJfSwgJGxpbmVfYXJyYXkpKTsNCgkJfQ0KCQllbHNlaWYgKGNvdW50KCRsaW5lX2FycmF5KSA9PSAxKQ0KCQl7DQoJCQkvLyBzZXQgZmllbGQgdmFsdWUNCgkJCXJldHVybiAkdGhpcy0+c2V0RmllbGRWYWx1ZSgnZmllbGRzJywgJHRoaXMtPmZpZWxkLCAka2V5LCB0cmltKGFycmF5X3NoaWZ0KCRsaW5lX2FycmF5KSwgJyInKSk7DQoJCX0NCg0KCQkvLyBzZXQgZmllbGQgdmFsdWUNCgkJcmV0dXJuICR0aGlzLT5zZXRGaWVsZFZhbHVlKCdmaWVsZHMnLCAkdGhpcy0+ZmllbGQsICRrZXksIHRydWUpOw0KCX0NCg0KCS8qKg0KCSAqIHNldCBmaWVsZCB2YWx1ZQ0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkdHlwZSAgICAgVGhlIGZpZWxkIHR5cGUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRrZXkgICAgICBUaGUgdmFsdWUgb2JqZWN0IGtleQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJHBvaW50ZXIgIFRoZSB2YWx1ZSBrZXkvcG9pbnRlcg0KCSAqIEBwYXJhbSAgIG1peGVkICAgJHZhbHVlICAgIFRoZSB2YWx1ZQ0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldEZpZWxkVmFsdWUoc3RyaW5nICR0eXBlLCBzdHJpbmcgJGtleSwgc3RyaW5nICRwb2ludGVyLCAkdmFsdWUpOiBib29sDQoJew0KCQkvLyBtYWtlIHN1cmUgdGhlIHRhYmxlIGlzIHJlYWR5DQoJCWlmIChlbXB0eSgkdGhpcy0+dGFibGUpIHx8ICEkdGhpcy0+c2V0VGFibGVOYW1lKCkpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSBuYW1lIGZpeCBhcHBsaWVkDQoJCSR0aGlzLT5maXhOYW1lcygpOw0KCQkvLyBtYWtlIHN1cmUgdGhlIGZpZWxkcyB0eXBlIGFycmF5IGlzIHNldA0KCQlpZiAoIWlzc2V0KCR0aGlzLT57JHRoaXMtPmFjdGlvbn1bJHRoaXMtPm1vZHVsZV1bJHRoaXMtPnRhYmxlXS0+eyR0eXBlfSkpDQoJCXsNCgkJCS8vIHNldCB0aGUgZmllbGQgdHlwZQ0KCQkJJHRoaXMtPnskdGhpcy0+YWN0aW9ufVskdGhpcy0+bW9kdWxlXVskdGhpcy0+dGFibGVdLT57JHR5cGV9ID0gYXJyYXkoKTsNCgkJfQ0KCQkvLyBzZXQgdGhlIHZhbHVlIGlmIG5vdCBhbHJlYWR5IHNldA0KCQlpZiAoIWlzc2V0KCR0aGlzLT57JHRoaXMtPmFjdGlvbn1bJHRoaXMtPm1vZHVsZV1bJHRoaXMtPnRhYmxlXS0+eyR0eXBlfVska2V5XSkpDQoJCXsNCgkJCSR0aGlzLT57JHRoaXMtPmFjdGlvbn1bJHRoaXMtPm1vZHVsZV1bJHRoaXMtPnRhYmxlXS0+eyR0eXBlfVska2V5XSA9IG5ldyBzdGRDbGFzcygpOw0KCQl9DQoJCS8vIHNldCB0aGUgdmFsdWUgaWYgbm90IGFscmVhZHkgc2V0DQoJCWlmICghaXNzZXQoJHRoaXMtPnskdGhpcy0+YWN0aW9ufVskdGhpcy0+bW9kdWxlXVskdGhpcy0+dGFibGVdLT57JHR5cGV9WyRrZXldLT57JHBvaW50ZXJ9KSkNCgkJew0KCQkJJHRoaXMtPnskdGhpcy0+YWN0aW9ufVskdGhpcy0+bW9kdWxlXVskdGhpcy0+dGFibGVdLT57JHR5cGV9WyRrZXldLT57JHBvaW50ZXJ9ID0gJHZhbHVlOw0KCQl9DQoNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogYWRkIGEgbmV3IHRhYmxlDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRsaW5lICBUaGUgbGluZSBmcm9tIHRoZSBmaWxlDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0VGFibGUoc3RyaW5nICRsaW5lKTogYm9vbA0KCXsNCgkJLy8gZ2V0IHRoZSBuYW1lDQoJCWlmICgoJHRoaXMtPnRhYmxlID0gJHRoaXMtPmdldEJldHdlZW4oJGxpbmUsICdBREQgVEFCTEUgIicsICciJywgbnVsbCkpICE9IG51bGwpDQoJCXsNCgkJCS8vIHNldCB0YWJsZQ0KCQkJcmV0dXJuICR0aGlzLT5zZXRUYWJsZU5hbWUoKTsNCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBzZXQgdGFibGUgbmFtZQ0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFRhYmxlTmFtZSgpOiBib29sDQoJew0KCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSBuYW1lIGZpeCBhcHBsaWVkDQoJCSR0aGlzLT5maXhOYW1lcygpOw0KCQkvLyBub3cgY2hlY2sgaWYgaXRzIHNldCBhbHJlYWR5DQoJCWlmIChpc3NldCgkdGhpcy0+dGFibGUpICYmIGlzc2V0KCR0aGlzLT57JHRoaXMtPmFjdGlvbn1bJHRoaXMtPm1vZHVsZV1bJHRoaXMtPnRhYmxlXSkpDQoJCXsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoNCgkJLy8gc2V0IHRoZSB0YWJsZSBuYW1lDQoJCXJldHVybiAkdGhpcy0+c2V0VGFibGVWYWx1ZSgnbmFtZScsICR0aGlzLT50YWJsZSk7DQoJfQ0KDQoJLyoqDQoJICogc2V0IHRhYmxlIHZhbHVlDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRrZXkgICAgVGhlIHZhbHVlIG9iamVjdCBrZXkNCgkgKiBAcGFyYW0gICBtaXhlZCAgICR2YWx1ZSAgVGhlIHZhbHVlDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0VGFibGVWYWx1ZShzdHJpbmcgJGtleSwgJHZhbHVlKTogYm9vbA0KCXsNCgkJLy8gY2hlY2sgaWYgdGhlIHRhYmxlIHZhbHVlIGlzIHNldA0KCQlpZiAoZW1wdHkoJHRoaXMtPnRhYmxlKSkNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIG5hbWUgZml4IGFwcGxpZWQNCgkJJHRoaXMtPmZpeE5hbWVzKCk7DQoJCS8vIGNoZWNrIGlmIHRhYmxlIG9iamVjdCBleGlzdA0KCQlpZiAoIWlzc2V0KCR0aGlzLT57JHRoaXMtPmFjdGlvbn1bJHRoaXMtPm1vZHVsZV1bJHRoaXMtPnRhYmxlXSkpDQoJCXsNCgkJCS8vIHNldCB0aGUgdGFibGUgb2JqZWN0DQoJCQkkdGhpcy0+eyR0aGlzLT5hY3Rpb259WyR0aGlzLT5tb2R1bGVdWyR0aGlzLT50YWJsZV0gPSBuZXcgc3RkQ2xhc3MoKTsNCgkJfQ0KCQkvLyBjaGVjayBpZiB0aGUga2V5IHZhbHVlIGV4aXN0DQoJCWlmICghaXNzZXQoJHRoaXMtPnskdGhpcy0+YWN0aW9ufVskdGhpcy0+bW9kdWxlXVskdGhpcy0+dGFibGVdLT57JGtleX0pKQ0KCQl7DQoJCQkvLyBzZXQgdGhlIHRhYmxlIHZhbHVlDQoJCQkkdGhpcy0+eyR0aGlzLT5hY3Rpb259WyR0aGlzLT5tb2R1bGVdWyR0aGlzLT50YWJsZV0tPnska2V5fSA9ICR2YWx1ZTsNCgkJfQ0KDQoJCXJldHVybiB0cnVlOw0KCX0NCg0KCS8qKg0KCSAqIGFkZCBhIG5ldyB0YWJsZSBwcm9wZXJ0eQ0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkbGluZSAgVGhlIGxpbmUgZnJvbSB0aGUgZmlsZQ0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFRhYmxlUHJvcGVydHkoc3RyaW5nICRsaW5lKTogYm9vbA0KCXsNCgkJLy8gaWYgb25seSB0YWJsZSBpcyBzZXQsIHRoZW4gd2UgYXJlIGxvYWRpbmcgdGFibGUgdmFsdWVzDQoJCSRsaW5lX2FycmF5ID0gKGFycmF5KSBleHBsb2RlKCcgJywgdHJpbSgkbGluZSkpOw0KCQkvLyBnZXQgdGhlIG1haW4ga2V5DQoJCSRrZXkgPSBhcnJheV9zaGlmdCgkbGluZV9hcnJheSk7DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIG5hbWUgZml4IGFwcGxpZWQNCgkJJHRoaXMtPmZpeE5hbWUoJGtleSk7DQoJCS8vIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSB2YWx1ZQ0KCQlpZiAoJGtleSA9PSAnbGFiZWwnKQ0KCQl7DQoJCQlyZXR1cm4gJHRoaXMtPnNldFRhYmxlVmFsdWUoJGtleSwgaW1wbG9kZSgnICcsIGFycmF5X21hcChmdW5jdGlvbiAoJHZhbCkgew0KCQkJCXJldHVybiB0cmltKCR2YWwsICciJyk7DQoJCQl9LCAkbGluZV9hcnJheSkpKTsNCgkJfQ0KCQllbHNlaWYgKGNvdW50KCRsaW5lX2FycmF5KSA+IDEpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+c2V0VGFibGVWYWx1ZSgka2V5LCBhcnJheV9tYXAoZnVuY3Rpb24gKCR2YWwpIHsNCgkJCQlyZXR1cm4gdHJpbSgkdmFsLCAnIicpOw0KCQkJfSwgJGxpbmVfYXJyYXkpKTsNCgkJfQ0KCQllbHNlaWYgKGNvdW50KCRsaW5lX2FycmF5KSA9PSAxKQ0KCQl7DQoJCQlyZXR1cm4gJHRoaXMtPnNldFRhYmxlVmFsdWUoJGtleSwgdHJpbShhcnJheV9zaGlmdCgkbGluZV9hcnJheSksICciJykpOw0KCQl9DQoNCgkJcmV0dXJuICR0aGlzLT5zZXRUYWJsZVZhbHVlKCRrZXksIHRydWUpOw0KCX0NCg0KCS8qKg0KCSAqIGFkZCBhIG5ldyB0YWJsZSBpbmRleA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkbGluZSAgVGhlIGxpbmUgZnJvbSB0aGUgZmlsZQ0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFRhYmxlSW5kZXgoc3RyaW5nICRsaW5lKTogYm9vbA0KCXsNCgkJLy8gZ2V0IHRoZSBuYW1lDQoJCWlmICgoJHRoaXMtPnRhYmxlID0gJHRoaXMtPmdldEJldHdlZW4oJGxpbmUsICcgT04gIicsICciJywgbnVsbCkpICE9IG51bGwgJiYNCgkJCSgkdGhpcy0+ZmllbGQgPSAkdGhpcy0+Z2V0QmV0d2VlbigkbGluZSwgJ0FERCBJTkRFWCAiJywgJyIgT04nLCBudWxsKSkgIT0gbnVsbCkNCgkJew0KCQkJLy8gd2UgYXJlIGluIGluZGV4IGNvdW50cnkNCgkJCSR0aGlzLT5pbmRleCA9IHRydWU7DQoJCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSBuYW1lIGZpeCBhcHBsaWVkDQoJCQkkdGhpcy0+Zml4TmFtZXMoKTsNCg0KCQkJLy8gc2V0IGZpZWxkIHZhbHVlDQoJCQlyZXR1cm4gJHRoaXMtPnNldEZpZWxkVmFsdWUoJ2luZGV4JywgJHRoaXMtPmZpZWxkLCAnbmFtZScsICR0aGlzLT5maWVsZCk7DQoJCX0NCg0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogYWRkIGEgbmV3IHRhYmxlIGluZGV4IHByb3BlcnR5DQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRsaW5lICBUaGUgbGluZSBmcm9tIHRoZSBmaWxlDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0VGFibGVJbmRleFByb3BlcnR5KHN0cmluZyAkbGluZSk6IGJvb2wNCgl7DQoJCS8vIGlmIGJvdGggdGFibGUgYW5kIGZpZWxkIGFyZSBzZXQsIHRoZW4gd2UgYXJlIGxvYWRpbmcgZmllbGQgdmFsdWVzDQoJCSRsaW5lX2FycmF5ID0gKGFycmF5KSBleHBsb2RlKCcgJywgdHJpbSgkbGluZSkpOw0KCQkvLyBnZXQgdGhlIG1haW4ga2V5DQoJCSRrZXkgPSBhcnJheV9zaGlmdCgkbGluZV9hcnJheSk7DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIG5hbWUgZml4IGFwcGxpZWQNCgkJJHRoaXMtPmZpeE5hbWUoJGtleSk7DQoJCS8vIGlmIHRoaXMgaXMgYW4gaW5kZXggZmllbGQNCgkJaWYgKCRrZXkgPT0gJ2luZGV4X2ZpZWxkJykNCgkJew0KCQkJLy8gZ2V0IHRoZSBmaWVsZCBuYW1lDQoJCQkkZmllbGRfbmFtZSA9IHRyaW0oJGxpbmVfYXJyYXlbMF0sICciJyk7DQoJCQkvLyBmaXhlIHRoZSBmaWVsZA0KCQkJJHRoaXMtPmZpeE5hbWUoJGZpZWxkX25hbWUpOw0KCQkJLy8gc2V0IGluZGV4IGZpZWxkIHZhbHVlDQoJCQkkdGhpcy0+dG1wWydpbmRleCddWyR0aGlzLT5tb2R1bGVdWyR0aGlzLT50YWJsZV1bJHRoaXMtPmZpZWxkXVtdID0gJGZpZWxkX25hbWU7DQoNCgkJCS8vIHdlIGhhdmUgb3VyIGRhdGEsIHNvIHdlIHJldHVybiB0cnVlDQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQllbHNlaWYgKGNvdW50KCRsaW5lX2FycmF5KSA+IDEpDQoJCXsNCgkJCS8vIHNldCBmaWVsZCB2YWx1ZQ0KCQkJcmV0dXJuICR0aGlzLT5zZXRGaWVsZFZhbHVlKCdpbmRleCcsICR0aGlzLT5maWVsZCwgJGtleSwgYXJyYXlfbWFwKGZ1bmN0aW9uICgkdmFsKSB7DQoJCQkJcmV0dXJuIHRyaW0oJHZhbCwgJyInKTsNCgkJCX0sICRsaW5lX2FycmF5KSk7DQoJCX0NCgkJZWxzZWlmIChjb3VudCgkbGluZV9hcnJheSkgPT0gMSkNCgkJew0KCQkJLy8gc2V0IGZpZWxkIHZhbHVlDQoJCQlyZXR1cm4gJHRoaXMtPnNldEZpZWxkVmFsdWUoJ2luZGV4JywgJHRoaXMtPmZpZWxkLCAka2V5LCB0cmltKGFycmF5X3NoaWZ0KCRsaW5lX2FycmF5KSwgJyInKSk7DQoJCX0NCg0KCQkvLyBzZXQgZmllbGQgdmFsdWUNCgkJcmV0dXJuICR0aGlzLT5zZXRGaWVsZFZhbHVlKCdpbmRleCcsICR0aGlzLT5maWVsZCwgJGtleSwgdHJ1ZSk7DQoJfQ0KDQoJLyoqDQoJICogZml4IGFsbCBrZXkgbmFtZXMNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBmaXhOYW1lcygpDQoJew0KCQkvLyBmaXggdGhlIHRhYmxlIG5hbWUNCgkJaWYgKGlzc2V0KCR0aGlzLT50YWJsZSkpDQoJCXsNCgkJCS8vIGZpeCB0YWJsZSBuYW1lcw0KCQkJJHRoaXMtPmZpeE5hbWUoJHRoaXMtPnRhYmxlKTsNCgkJfQ0KCQkvLyBmaXggdGhlIHRhYmxlIG5hbWUNCgkJaWYgKGlzc2V0KCR0aGlzLT5maWVsZCkpDQoJCXsNCgkJCS8vIGZpeCB0YWJsZSBuYW1lcw0KCQkJJHRoaXMtPmZpeE5hbWUoJHRoaXMtPmZpZWxkKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIGZpeCBhbGwga2V5IG5hbWVzDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRuYW1lICBUaGUgc3RyaW5nIHRvIGZpeA0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGZpeE5hbWUoc3RyaW5nICYkbmFtZSkNCgl7DQoJCS8vIGZpeCBuYW1lDQoJCSRuYW1lID0gc3RyX3JlcGxhY2UoJy0nLCAnXycsIHN0cnRvbG93ZXIoJG5hbWUpKTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIG1vZHVsZSBrZXkgd2hlcmUgdGhpcyB0YWJsZSBpcyBmb3VuZA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkdGFibGUgIFRoZSBzdHJpbmcgdG8gZml4DQoJICoNCgkgKiBAcmV0dXJuICBtaXhlZCAgVGhlIG1vZHVsZSB3aGVyZSB0aGlzIHRhYmxlIGlzIGZvdW5kDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TW9kTmFtZShzdHJpbmcgJHRhYmxlKQ0KCXsNCgkJLy8gd2UgZmlyc3QgdHJ5IHRvIGdldCB0aGUgbW9kIG5hbWUgZnJvbSB0aGUgdGFibGUgbmFtZQ0KCQkkdGFibGVfYXJyYXkgPSBleHBsb2RlKCdfJywgJHRhYmxlKTsNCgkJLy8gY2hlY2sgaWYgdGFibGUgZXhpc3QgaW4gdGhpcyBtb2QgZ3JvdXANCgkJaWYgKGlzc2V0KCR0aGlzLT50YWJsZXNbJHRhYmxlX2FycmF5WzBdXVskdGFibGVdKSkNCgkJew0KCQkJcmV0dXJuICR0YWJsZV9hcnJheVswXTsNCgkJfQ0KCQkvLyBub3cgd2UgZG8gdGhlIGJydXRlZm9yY2Ugd2F5DQoJCWZvcmVhY2ggKCR0aGlzLT50YWJsZXMgYXMgJG1vZCA9PiAkbW9kcykNCgkJew0KCQkJaWYgKGlzc2V0KCRtb2RzWyR0YWJsZV0pKQ0KCQkJew0KCQkJCXJldHVybiAkbW9kOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg==', '{}', 'ExtrudeTables', '[[[COMPANY]]]\\[[[Component]]]\\ExtrudeTables', '1.0.0', '{}', 'Lila Extrude Tables', 'class', '{\"use_selection0\":{\"use\":\"79d765b3-7319-4988-9730-446c7f347020\"}}', '', 1, '2021-11-06 14:28:17', '2021-11-13 16:34:22', 33, 2), -(3, '', '', '', '', '7e6e7fe8-725d-411e-889a-4f1618c11840', '', '', '', '', 'Ly8gaGVscA==', '{}', 'TestingInterface', '[[[Component]]]\\Power\\TestingInterface', '1.0.0', '{}', 'Testing Interface', 'interface', '{}', '', 1, '2021-11-07 15:54:41', '2021-11-09 04:37:44', 7, 3), -(4, '', 'To store tables structures from lila', '', '', 'c4469632-3914-400e-b861-972b2d463963', '', '', '', '', 'CS8qKg0KCSAqIEFkZGluZyB0aGUgdXRpbGl0aWVzIHRyYWl0IHRvIHRoaXMgY2xhc3MNCgkgKiBTaW5jZSB3ZSBuZWVkIHNvbWUgb2YgaXRzIGZ1bmN0aW9ucw0KCSAqLw0KCXVzZSBVdGlsOw0KDQoJLyoqDQoJICogVGhlIGRhdGENCgkgKg0KCSAqIEB2YXIgRXh0cnVkZQ0KCSAqLw0KCXByb3RlY3RlZCAkZGF0YTsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gICBFeHRydWRlICAkZGF0YSAgVGhlIGV4dHJ1ZGVkIGRhdGENCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoRXh0cnVkZVRhYmxlcyAkZGF0YSkNCgl7DQoJCSR0aGlzLT5kYXRhID0gJGRhdGE7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBwYXJhbWV0ZXJzIG9mIGVhY2ggYXJlYSBpbiB0aGUgZGF0YSBzZXQNCgkgKg0KCSAqIEBwYXJhbSAgIG1peGVkICAkYXJlYSAgVGhlIGFyZWEgb2YgcGFyYW1zDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9IGFsbA0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rcw0KCSAqDQoJICogQHJldHVybiAgYXJyYXkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyYW1zKCRhcmVhID0gbnVsbCk6IGFycmF5DQoJew0KCQkvLyBsZXRzIGdldCBhbGwgdGhlIHRhYmxlIHBhcmFtcw0KCQkkcGFyYW1zWyd0YWJsZSddID0gYXJyYXkoKTsNCgkJLy8gbGV0cyBnZXQgYWxsIHRoZSBmaWVsZCBwYXJhbXMNCgkJJHBhcmFtc1snZmllbGRzJ10gPSBhcnJheSgpOw0KCQkvLyBsZXRzIGdldCBhbGwgdGhlIGluZGV4IHBhcmFtcw0KCQkkcGFyYW1zWydpbmRleCddID0gYXJyYXkoKTsNCgkJLy8gbGV0cyBnZXQgYWxsIHRoZSBsaW5rcyBwYXJhbXMNCgkJJHBhcmFtc1snbGlua3MnXSA9IGFycmF5KCk7DQoJCS8vIGxvb3Agb3ZlciB0aGUgZnVsbCBkYXRhc2V0DQoJCWZvcmVhY2ggKCR0aGlzLT5kYXRhLT50YWJsZXMgYXMgJG1vZCA9PiAkdGFibGVzKQ0KCQl7DQoJCQlmb3JlYWNoICgkdGFibGVzIGFzICR0YWJsZV92YWx1ZXMpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJHRhYmxlX3ZhbHVlcyBhcyAkdGFibGVfcGFyYW0gPT4gJHZhbHVlcykNCgkJCQl7DQoJCQkJCS8vIGxldHMgZ2V0IGFsbCB0aGUgZmllbGQgcGFyYW1zDQoJCQkJCS8vIGxldHMgZ2V0IGFsbCB0aGUgaW5kZXggcGFyYW1zDQoJCQkJCS8vIGxldHMgZ2V0IGFsbCB0aGUgbGlua3MgcGFyYW1zDQoJCQkJCWlmICgkdGFibGVfcGFyYW0gPT09ICdmaWVsZHMnIHx8ICR0YWJsZV9wYXJhbSA9PT0gJ2luZGV4JyB8fCAkdGFibGVfcGFyYW0gPT09ICdsaW5rcycpDQoJCQkJCXsNCgkJCQkJCWZvcmVhY2ggKCR2YWx1ZXMgYXMgJGZpZWxkcykNCgkJCQkJCXsNCgkJCQkJCQlmb3JlYWNoICgkZmllbGRzIGFzICRwYXJhbSA9PiAkdmFsdWUpDQoJCQkJCQkJew0KCQkJCQkJCQkkcGFyYW1zWyR0YWJsZV9wYXJhbV1bJHBhcmFtXSA9ICRwYXJhbTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJLy8gbGV0cyBnZXQgYWxsIHRoZSB0YWJsZSBwYXJhbXMNCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQkkcGFyYW1zWyd0YWJsZSddWyR0YWJsZV9wYXJhbV0gPSAkdGFibGVfcGFyYW07DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gY2hlY2sgaWYgYW4gYXJlYSBpcyBjYWxsZWQgYW5kIGZvdW5kDQoJCWlmICgkYXJlYSAmJiBpc3NldCgkcGFyYW1zWyRhcmVhXSkpDQoJCXsNCgkJCXJldHVybiAkcGFyYW1zWyRhcmVhXTsNCgkJfQ0KCQkvLyBpZiBhcmVhIGlzIGNhbGxlZCB0aGF0IGRvZXMgbm90IGV4aXN0DQoJCWVsc2VpZiAoJGFyZWEpDQoJCXsNCgkJCXJldHVybiBhcnJheSgpOw0KCQl9DQoJCS8vIHJldHVybiBhbGwgb24gbnVsbCBhcmVhDQoJCXJldHVybiAkcGFyYW1zOw0KCX0NCg==', '{}', 'StoreTables', '[[[COMPANY]]]\\[[[Component]]]\\StoreTables', '1.0.0', '{}', 'Lila Store Tables', 'class', '{\"use_selection0\":{\"use\":\"79d765b3-7319-4988-9730-446c7f347020\"}}', '', 1, '2021-11-13 17:52:23', '2021-11-13 22:21:46', 14, 2), (5, 1, '', '', '', 'db4a1e4d-be59-4e87-8b4d-c40512752232', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwIGFzIEJhc2VIdHRwOw0KdXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwRmFjdG9yeTsNCnVzZSBKb29tbGFcUmVnaXN0cnlcUmVnaXN0cnk7', '', '', '{\"load_selection0\":{\"load\":\"aa253bac-f4b4-41b4-8ace-071a73fc4d96\"},\"load_selection1\":{\"load\":\"c65aaf1f-817c-49a2-8202-282e3904f5b1\"},\"load_selection2\":{\"load\":\"51195163-1e87-4251-b755-a03c376798a6\"},\"load_selection3\":{\"load\":\"ef011ee1-64f0-4048-b013-777473b727dd\"},\"load_selection4\":{\"load\":\"c4a188de-ad78-4a6d-9d5b-01866846d701\"}}', 'CS8qKg0KCSAqIE9wdGlvbnMgZm9yIHRoZSBHaXRlYSBvYmplY3QuDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgJG9wdGlvbnM7DQoNCgkvKioNCgkgKiBUaGUgSFRUUCBjbGllbnQgb2JqZWN0IHRvIHVzZSBpbiBzZW5kaW5nIEhUVFAgcmVxdWVzdHMuDQoJICoNCgkgKiBAdmFyICAgIEJhc2VIdHRwDQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgJGNsaWVudDsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yLg0KCSAqDQoJICogQHBhcmFtICAgUmVnaXN0cnkgICRvcHRpb25zICBHaXRlYSBvcHRpb25zIG9iamVjdC4NCgkgKiBAcGFyYW0gICBIdHRwICAgICAgJGNsaWVudCAgIFRoZSBIVFRQIGNsaWVudCBvYmplY3QuDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoUmVnaXN0cnkgJG9wdGlvbnMgPSBudWxsLCBCYXNlSHR0cCAkY2xpZW50ID0gbnVsbCkNCgl7DQoJCSR0aGlzLT5vcHRpb25zID0gJG9wdGlvbnMgPzogbmV3IFJlZ2lzdHJ5Ow0KDQoJCS8vIFNldHVwIHRoZSBkZWZhdWx0IHVzZXIgYWdlbnQgaWYgbm90IGFscmVhZHkgc2V0Lg0KCQlpZiAoISR0aGlzLT5nZXRPcHRpb24oJ3VzZXJBZ2VudCcpKQ0KCQl7DQoJCQkkdGhpcy0+c2V0T3B0aW9uKCd1c2VyQWdlbnQnLCAnSkdpdGVhLzEuMCcpOw0KCQl9DQoNCgkJLy8gU2V0dXAgdGhlIGRlZmF1bHQgQVBJIHVybCBpZiBub3QgYWxyZWFkeSBzZXQuDQoJCWlmICghJHRoaXMtPmdldE9wdGlvbignYXBpLnVybCcpKQ0KCQl7DQoJCQkkdGhpcy0+c2V0T3B0aW9uKCdhcGkudXJsJywgJ1tbW2dpdGVhX2FwaV91cmxdXV0nKTsNCgkJfQ0KDQoJCSR0aGlzLT5jbGllbnQgPSAkY2xpZW50ID86IChuZXcgSHR0cEZhY3RvcnkpLT5nZXRIdHRwKCR0aGlzLT5vcHRpb25zKTsNCgl9DQoNCgkvKioNCgkgKiBNYWdpYyBtZXRob2QgdG8gbGF6aWx5IGNyZWF0ZSBBUEkgb2JqZWN0cw0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkbmFtZSAgTmFtZSBvZiBwcm9wZXJ0eSB0byByZXRyaWV2ZQ0KCSAqDQoJICogQHJldHVybiAgQWJzdHJhY3RHaXRlYU9iamVjdCAgR2l0ZWEgQVBJIG9iamVjdCAoaXNzdWVzLCBwdWxscywgZXRjKS4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqIEB0aHJvd3MgIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgJG5hbWUgaXMgbm90IGEgdmFsaWQgc3ViIGNsYXNzLg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkNCgl7DQoJCSRjbGFzcyA9ICdcXFZETVxcR2l0ZWFcXFBhY2thZ2VcXCcgLiB1Y2ZpcnN0KCRuYW1lKTsNCg0KCQlpZiAoY2xhc3NfZXhpc3RzKCRjbGFzcykpDQoJCXsNCgkJCWlmIChpc3NldCgkdGhpcy0+JG5hbWUpID09IGZhbHNlKQ0KCQkJew0KCQkJCSR0aGlzLT4kbmFtZSA9IG5ldyAkY2xhc3MoJHRoaXMtPm9wdGlvbnMsICR0aGlzLT5jbGllbnQpOw0KCQkJfQ0KDQoJCQlyZXR1cm4gJHRoaXMtPiRuYW1lOw0KCQl9DQoNCgkJdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignQXJndW1lbnQgJXMgcHJvZHVjZWQgYW4gaW52YWxpZCBjbGFzcyBuYW1lOiAlcycsICRuYW1lLCAkY2xhc3MpKTsNCgl9DQoNCgkvKioNCgkgKiBHZXQgYW4gb3B0aW9uIGZyb20gdGhlIEdpdGVhIGluc3RhbmNlLg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAka2V5ICBUaGUgbmFtZSBvZiB0aGUgb3B0aW9uIHRvIGdldC4NCgkgKg0KCSAqIEByZXR1cm4gIG1peGVkICBUaGUgb3B0aW9uIHZhbHVlLg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldE9wdGlvbigka2V5KQ0KCXsNCgkJcmV0dXJuIGlzc2V0KCR0aGlzLT5vcHRpb25zWyRrZXldKSA/ICR0aGlzLT5vcHRpb25zWyRrZXldIDogbnVsbDsNCgl9DQoNCgkvKioNCgkgKiBTZXQgYW4gb3B0aW9uIGZvciB0aGUgR2l0ZWEgaW5zdGFuY2UuDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRrZXkgICAgVGhlIG5hbWUgb2YgdGhlIG9wdGlvbiB0byBzZXQuDQoJICogQHBhcmFtICAgbWl4ZWQgICAkdmFsdWUgIFRoZSBvcHRpb24gdmFsdWUgdG8gc2V0Lg0KCSAqDQoJICogQHJldHVybiAgR2l0ZWEgIFRoaXMgb2JqZWN0IGZvciBtZXRob2QgY2hhaW5pbmcuDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9uKCRrZXksICR2YWx1ZSkNCgl7DQoJCSR0aGlzLT5vcHRpb25zWyRrZXldID0gJHZhbHVlOw0KDQoJCXJldHVybiAkdGhpczsNCgl9DQo=', '{}', 'Gitea', 'VDM\\Gitea\\Gitea', '1.0.0', '{}', 'Gitea', 'class', '{}', '', 1, '2021-12-03 14:18:38', '2022-07-09 13:56:22', 27, 4), (6, 1, '', '', '', 'aa253bac-f4b4-41b4-8ace-071a73fc4d96', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwIGFzIEJhc2VIdHRwOw0KdXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXEh0dHBcUmVzcG9uc2U7DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow0KdXNlIEpvb21sYVxVcmlcVXJpOw==', '', '', '{}', 'CS8qKg0KCSAqIE9wdGlvbnMgZm9yIHRoZSBHaXRlYSBvYmplY3QuDQoJICoNCgkgKiBAdmFyICAgIFJlZ2lzdHJ5DQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgJG9wdGlvbnM7DQoNCgkvKioNCgkgKiBUaGUgSFRUUCBjbGllbnQgb2JqZWN0IHRvIHVzZSBpbiBzZW5kaW5nIEhUVFAgcmVxdWVzdHMuDQoJICoNCgkgKiBAdmFyICAgIEJhc2VIdHRwDQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgJGNsaWVudDsNCg0KCS8qKg0KCSAqIFRoZSBwYWNrYWdlIHRoZSBvYmplY3QgcmVzaWRlcyBpbg0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAkcGFja2FnZSA9ICcnOw0KDQoJLyoqDQoJICogQ29uc3RydWN0b3IuDQoJICoNCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgJG9wdGlvbnMgIEdpdGVhIG9wdGlvbnMgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIEJhc2VIdHRwICAkY2xpZW50ICAgVGhlIEhUVFAgY2xpZW50IG9iamVjdC4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChSZWdpc3RyeSAkb3B0aW9ucyA9IG51bGwsIEJhc2VIdHRwICRjbGllbnQgPSBudWxsKQ0KCXsNCgkJJHRoaXMtPm9wdGlvbnMgPSAkb3B0aW9ucyA/OiBuZXcgUmVnaXN0cnk7DQoJCSR0aGlzLT5jbGllbnQgID0gJGNsaWVudCA/OiAobmV3IEh0dHBGYWN0b3J5KS0+Z2V0SHR0cCgkdGhpcy0+b3B0aW9ucyk7DQoNCgkJJHRoaXMtPnBhY2thZ2UgPSBcZ2V0X2NsYXNzKCR0aGlzKTsNCgkJJHRoaXMtPnBhY2thZ2UgPSBzdWJzdHIoJHRoaXMtPnBhY2thZ2UsIHN0cnJwb3MoJHRoaXMtPnBhY2thZ2UsICdcXCcpICsgMSk7DQoJfQ0KDQoJLyoqDQoJICogTWV0aG9kIHRvIGJ1aWxkIGFuZCByZXR1cm4gYSBmdWxsIHJlcXVlc3QgVVJMIGZvciB0aGUgcmVxdWVzdC4gIFRoaXMgbWV0aG9kIHdpbGwNCgkgKiBhZGQgYXBwcm9wcmlhdGUgcGFnaW5hdGlvbiBkZXRhaWxzIGlmIG5lY2Vzc2FyeSBhbmQgYWxzbyBwcmVwZW5kIHRoZSBBUEkgdXJsDQoJICogdG8gaGF2ZSBhIGNvbXBsZXRlIFVSTCBmb3IgdGhlIHJlcXVlc3QuDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkcGF0aCAgIFVSTCB0byBpbmZsZWN0DQoJICogQHBhcmFtICAgaW50ZWdlciAgJHBhZ2UgICBQYWdlIHRvIHJlcXVlc3QNCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkbGltaXQgIE51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybiBwZXIgcGFnZQ0KCSAqDQoJICogQHJldHVybiAgVXJpDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZmV0Y2hVcmwoJHBhdGgsICRwYWdlID0gMCwgJGxpbWl0ID0gMCkNCgl7DQoJCS8vIEdldCBhIG5ldyBVcmkgb2JqZWN0IGZvY3VzaW5nIHRoZSBhcGkgdXJsIGFuZCBnaXZlbiBwYXRoLg0KCQkkdXJpID0gbmV3IFVyaSgkdGhpcy0+b3B0aW9ucy0+Z2V0KCdhcGkudXJsJykgLiAkcGF0aCk7DQoNCgkJaWYgKCR0aGlzLT5vcHRpb25zLT5nZXQoJ2FjY2Vzcy50b2tlbicsIGZhbHNlKSkNCgkJew0KCQkJLy8gVXNlIG9BdXRoIGF1dGhlbnRpY2F0aW9uDQoJCQkkaGVhZGVycyA9ICR0aGlzLT5jbGllbnQtPmdldE9wdGlvbignaGVhZGVycycsIGFycmF5KCkpOw0KDQoJCQlpZiAoIWlzc2V0KCRoZWFkZXJzWydBdXRob3JpemF0aW9uJ10pKQ0KCQkJew0KCQkJCSRoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSAndG9rZW4gJyAuICR0aGlzLT5vcHRpb25zLT5nZXQoJ2FjY2Vzcy50b2tlbicpOw0KCQkJCSR0aGlzLT5jbGllbnQtPnNldE9wdGlvbignaGVhZGVycycsICRoZWFkZXJzKTsNCgkJCX0NCgkJfQ0KCQllbHNlDQoJCXsNCgkJCS8vIFVzZSBiYXNpYyBhdXRoZW50aWNhdGlvbg0KCQkJaWYgKCR0aGlzLT5vcHRpb25zLT5nZXQoJ2FwaS51c2VybmFtZScsIGZhbHNlKSkNCgkJCXsNCgkJCQkkdXJpLT5zZXRVc2VyKCR0aGlzLT5vcHRpb25zLT5nZXQoJ2FwaS51c2VybmFtZScpKTsNCgkJCX0NCg0KCQkJaWYgKCR0aGlzLT5vcHRpb25zLT5nZXQoJ2FwaS5wYXNzd29yZCcsIGZhbHNlKSkNCgkJCXsNCgkJCQkkdXJpLT5zZXRQYXNzKCR0aGlzLT5vcHRpb25zLT5nZXQoJ2FwaS5wYXNzd29yZCcpKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIElmIHdlIGhhdmUgYSBkZWZpbmVkIHBhZ2UgbnVtYmVyIGFkZCBpdCB0byB0aGUgSlVyaSBvYmplY3QuDQoJCWlmICgkcGFnZSA+IDApDQoJCXsNCgkJCSR1cmktPnNldFZhcigncGFnZScsIChpbnQpICRwYWdlKTsNCgkJfQ0KDQoJCS8vIElmIHdlIGhhdmUgYSBkZWZpbmVkIGl0ZW1zIHBlciBwYWdlIGFkZCBpdCB0byB0aGUgSlVyaSBvYmplY3QuDQoJCWlmICgkbGltaXQgPiAwKQ0KCQl7DQoJCQkkdXJpLT5zZXRWYXIoJ2xpbWl0JywgKGludCkgJGxpbWl0KTsNCgkJfQ0KDQoJCXJldHVybiAkdXJpOw0KCX0NCg0KCS8qKg0KCSAqIFByb2Nlc3MgdGhlIHJlc3BvbnNlIGFuZCBkZWNvZGUgaXQuDQoJICoNCgkgKiBAcGFyYW0gICBSZXNwb25zZSAgJHJlc3BvbnNlICAgICAgVGhlIHJlc3BvbnNlLg0KCSAqIEBwYXJhbSAgIGludGVnZXIgICAkZXhwZWN0ZWRDb2RlICBUaGUgZXhwZWN0ZWQgImdvb2QiIGNvZGUuDQoJICoNCgkgKiBAcmV0dXJuICBtaXhlZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICogQHRocm93cyAgUnVudGltZUV4Y2VwdGlvbg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBwcm9jZXNzUmVzcG9uc2UoUmVzcG9uc2UgJHJlc3BvbnNlLCAkZXhwZWN0ZWRDb2RlID0gMjAwKQ0KCXsNCgkJLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGNvZGUuDQoJCWlmICgkcmVzcG9uc2UtPmNvZGUgIT0gJGV4cGVjdGVkQ29kZSkNCgkJew0KCQkJLy8gRGVjb2RlIHRoZSBlcnJvciByZXNwb25zZSBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uLg0KCQkJJGVycm9yICAgPSBqc29uX2RlY29kZSgkcmVzcG9uc2UtPmJvZHkpOw0KCQkJJG1lc3NhZ2UgPSBpc3NldCgkZXJyb3ItPm1lc3NhZ2UpID8gJGVycm9yLT5tZXNzYWdlIDogJ0ludmFsaWQgcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSBHaXRlYS4nOw0KDQoJCQl0aHJvdyBuZXcgXERvbWFpbkV4Y2VwdGlvbigkbWVzc2FnZSwgJHJlc3BvbnNlLT5jb2RlKTsNCgkJfQ0KDQoJCWlmIChKc29uSGVscGVyOjpjaGVjaygkcmVzcG9uc2UtPmJvZHkpKQ0KCQl7DQoJCQkkYm9keSA9IGpzb25fZGVjb2RlKCRyZXNwb25zZS0+Ym9keSk7DQoNCgkJCWlmIChpc3NldCgkYm9keS0+Y29udGVudF9iYXNlNjQpKQ0KCQkJew0KCQkJCSRib2R5LT5jb250ZW50ID0gYmFzZTY0X2RlY29kZSgkYm9keS0+Y29udGVudF9iYXNlNjQpOw0KCQkJfQ0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJGJvZHkgPSAkcmVzcG9uc2UtPmJvZHk7DQoJCX0NCg0KCQlyZXR1cm4gJGJvZHk7DQoJfQ0K', '{}', 'AbstractGiteaObject', 'VDM\\Gitea\\AbstractGiteaObject', '1.0.0', '{}', 'Abstract Gitea Object', 'abstract class', '{\"use_selection0\":{\"use\":\"4b225c51-d293-48e4-b3f6-5136cf5c3f18\",\"as\":\"default\"}}', '', 1, '2021-12-03 16:00:26', '2022-07-09 12:15:49', 20, 4), (7, 1, '', 'aa253bac-f4b4-41b4-8ace-071a73fc4d96', '', 'c65aaf1f-817c-49a2-8202-282e3904f5b1', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwIGFzIEJhc2VIdHRwOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', '', '', '{}', 'CS8qKg0KCSAqIENvbnN0cnVjdG9yLg0KCSAqDQoJICogQHBhcmFtICAgUmVnaXN0cnkgICRvcHRpb25zICBHaXRlYSBvcHRpb25zIG9iamVjdC4NCgkgKiBAcGFyYW0gICBIdHRwICAgICAgJGNsaWVudCAgIFRoZSBIVFRQIGNsaWVudCBvYmplY3QuDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoUmVnaXN0cnkgJG9wdGlvbnMgPSBudWxsLCBCYXNlSHR0cCAkY2xpZW50ID0gbnVsbCkNCgl7DQoJCXBhcmVudDo6X19jb25zdHJ1Y3QoJG9wdGlvbnMsICRjbGllbnQpOw0KDQoJCSR0aGlzLT5wYWNrYWdlID0gXGdldF9jbGFzcygkdGhpcyk7DQoJCSR0aGlzLT5wYWNrYWdlID0gc3Vic3RyKCR0aGlzLT5wYWNrYWdlLCBzdHJycG9zKCR0aGlzLT5wYWNrYWdlLCAnXFwnKSArIDEpOw0KCX0NCg0KCS8qKg0KCSAqIE1hZ2ljIG1ldGhvZCB0byBsYXppbHkgY3JlYXRlIEFQSSBvYmplY3RzDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRuYW1lICBOYW1lIG9mIHByb3BlcnR5IHRvIHJldHJpZXZlDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24NCgkgKg0KCSAqIEByZXR1cm4gIEFic3RyYWN0UGFja2FnZSAgR2l0ZWEgQVBJIHBhY2thZ2Ugb2JqZWN0Lg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkNCgl7DQoJCSRjbGFzcyA9ICdcXFZETVxcR2l0ZWFcXFBhY2thZ2VcXCcgLiAkdGhpcy0+cGFja2FnZSAuICdcXCcgLiB1Y2ZpcnN0KCRuYW1lKTsNCg0KCQlpZiAoY2xhc3NfZXhpc3RzKCRjbGFzcykgPT0gZmFsc2UpDQoJCXsNCgkJCXRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKA0KCQkJCXNwcmludGYoDQoJCQkJCSdBcmd1bWVudCAlMSRzIHByb2R1Y2VkIGFuIGludmFsaWQgY2xhc3MgbmFtZTogJTIkcyBpbiBwYWNrYWdlICUzJHMnLA0KCQkJCQkkbmFtZSwgJGNsYXNzLCAkdGhpcy0+cGFja2FnZQ0KCQkJCSkNCgkJCSk7DQoJCX0NCg0KCQlpZiAoaXNzZXQoJHRoaXMtPiRuYW1lKSA9PSBmYWxzZSkNCgkJew0KCQkJJHRoaXMtPiRuYW1lID0gbmV3ICRjbGFzcygkdGhpcy0+b3B0aW9ucywgJHRoaXMtPmNsaWVudCk7DQoJCX0NCg0KCQlyZXR1cm4gJHRoaXMtPiRuYW1lOw0KCX0NCg==', '{}', 'AbstractPackage', 'VDM\\Gitea\\AbstractPackage', '1.0.0', '{}', 'Abstract Gitea Package', 'abstract class', '{}', '', 1, '2021-12-03 16:03:06', '2022-05-27 08:31:35', 15, 4), @@ -1995,11 +1992,7 @@ INSERT INTO `#__componentbuilder_power` (`id`, `add_head`, `description`, `exten (26, '', 'Mime Helper\r\n\r\n@since 3.0.11', '', '', 'f11dc790-713e-4706-9a85-a318ed3ad56e', '', '', '', '{}', 'W0VYVEVSTkFMQ09ERT1odHRwczovL2dpc3QuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0xsZXdlbGx5bnZkbS83NGJlMzczMzU3ZTEzMWI4Nzc1YTc1ODJjM2RlNTA4Yi9yYXcvbWltZV90eXBlcy5waHBdDQoNCltFWFRFUk5BTENPREU9aHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS9MbGV3ZWxseW52ZG0vNzRiZTM3MzM1N2UxMzFiODc3NWE3NTgyYzNkZTUwOGIvcmF3L2dldC5waHBdDQoNCltFWFRFUk5BTENPREU9aHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS9MbGV3ZWxseW52ZG0vNzRiZTM3MzM1N2UxMzFiODc3NWE3NTgyYzNkZTUwOGIvcmF3L2V4dGVuc2lvbnMucGhwXQ==', '{}', 'MimeHelper', 'VDM\\Joomla\\Utilities.MimeHelper', '1.0.0', '{}', 'Utilities MimeHelper', 'abstract class', '{}', '', 1, '2022-05-16 14:27:38', '2022-05-21 13:27:39', 3, 9), (27, '', 'Just to link powers to the power updater component', '', '', '8025e71c-8e21-44cb-b23e-dce2fb5a1ab5', '', '', '', '{\"load_selection0\":{\"load\":\"db4a1e4d-be59-4e87-8b4d-c40512752232\"},\"load_selection1\":{\"load\":\"79d765b3-7319-4988-9730-446c7f347020\"},\"load_selection2\":{\"load\":\"d7600b43-771a-4747-9f5d-952765721799\"},\"load_selection3\":{\"load\":\"962b15d8-915f-4cd7-aea6-7cf82afdc20b\"},\"load_selection4\":{\"load\":\"f11dc790-713e-4706-9a85-a318ed3ad56e\"}}', '', '{}', 'Updater', 'VDM\\Powe\\Updater', '1.0.0', '{}', 'Power Updater', 'class', '{}', '', 1, '2022-05-21 13:15:55', '2022-06-11 16:54:51', 3, 13), (28, 1, 'Start looking here:\r\nhttps://git.vdm.dev/api/swagger#/repository/repoGetContents', 'c65aaf1f-817c-49a2-8202-282e3904f5b1', '', 'ef011ee1-64f0-4048-b013-777473b727dd', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', '', '', '{}', 'CS8qKg0KCSAqIEdldHMgdGhlIG1ldGFkYXRhIGFuZCBjb250ZW50cyAoaWYgYSBmaWxlKSBvZiBhbiBlbnRyeSBpbiBhIHJlcG9zaXRvcnksIG9yIGEgbGlzdCBvZiBlbnRyaWVzIGlmIGEgZGlyDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRvd25lciAgICAgICBSZXBvc2l0b3J5IG93bmVyLg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJHJlcG8gICAgICAgICBSZXBvc2l0b3J5IG5hbWUuDQoJICogQHBhcmFtICAgc3RyaW5nICAkZmlsZXBhdGggICAgUmVwb3NpdG9yeSBmaWxlIHBhdGguDQoJICoNCgkgKiBAcmV0dXJuICBvYmplY3QNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXQoJG93bmVyLCAkcmVwbywgJGZpbGVwYXRoKQ0KCXsNCgkJLy8gQnVpbGQgdGhlIHJlcXVlc3QgcGF0aC4NCgkJJHBhdGggPSAnL3JlcG9zLycgLiAkb3duZXIgLiAnLycgLiAkcmVwbyAuICcvY29udGVudHMvJyAuICRmaWxlcGF0aDsNCg0KCQkvLyBTZW5kIHRoZSByZXF1ZXN0Lg0KCQlyZXR1cm4gJHRoaXMtPnByb2Nlc3NSZXNwb25zZSgNCgkJCSR0aGlzLT5jbGllbnQtPmdldCgkdGhpcy0+ZmV0Y2hVcmwoJHBhdGgpKQ0KCQkpOw0KCX0NCg==', '{}', 'File', 'VDM\\Gitea\\Package.Repo.File', '1.0.0', '{}', 'Gitea Repo File', 'class', '{}', '', 1, '2022-05-21 13:40:09', '2022-07-09 10:28:20', 10, 4), -(29, 1, 'Start looking here:\r\nhttps://git.vdm.dev/api/swagger#/repository/repoCreateWikiPage', 'c65aaf1f-817c-49a2-8202-282e3904f5b1', '', 'c4a188de-ad78-4a6d-9d5b-01866846d701', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', '', '', '{}', 'CS8qKg0KCSAqIEdldCBhIHJlcG9zaXRvcnkgd2lraSBwYWdlDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRvd25lciAgICAgICAgICAgICAgIFRoZSByZXBvc2l0b3J5IG93bmVyDQoJICogQHBhcmFtICAgc3RyaW5nICAkcmVwbyAgICAgICAgICAgICAgICAgVGhlIHJlcG9zaXRvcnkgbmFtZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJHBhZ2VOYW1lICAgICAgIFRoZSBwYWdlIG5hbWUNCgkgKg0KCSAqIEByZXR1cm4gIG9iamVjdA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldChzdHJpbmcgJG93bmVyLCBzdHJpbmcgJHJlcG8sIHN0cmluZyAkcGFnZU5hbWUpDQoJew0KCQkvLyBCdWlsZCB0aGUgcmVxdWVzdCBwYXRoLg0KCQkkcGF0aCA9ICcvcmVwb3MvJyAuICRvd25lciAuICcvJyAuICRyZXBvIC4gJy93aWtpL3BhZ2UvJyAuICRwYWdlTmFtZTsNCg0KCQkvLyBTZW5kIHRoZSByZXF1ZXN0Lg0KCQlyZXR1cm4gJHRoaXMtPnByb2Nlc3NSZXNwb25zZSgNCgkJCSR0aGlzLT5jbGllbnQtPmdldCgkdGhpcy0+ZmV0Y2hVcmwoJHBhdGgpKQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBhIHJlcG9zaXRvcnkgd2lraSBodG1sIHBhZ2UNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJG93bmVyICAgICAgICAgICAgICAgVGhlIHJlcG9zaXRvcnkgb3duZXINCgkgKiBAcGFyYW0gICBzdHJpbmcgICRyZXBvICAgICAgICAgICAgICAgICBUaGUgcmVwb3NpdG9yeSBuYW1lDQoJICogQHBhcmFtICAgc3RyaW5nICAkcGFnZU5hbWUgICAgICAgVGhlIHBhZ2UgbmFtZQ0KCSAqDQoJICogQHJldHVybiAgb2JqZWN0DQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0SHRtbChzdHJpbmcgJG93bmVyLCBzdHJpbmcgJHJlcG8sIHN0cmluZyAkcGFnZU5hbWUpDQoJew0KCQkvLyBnZXQgdGhlIGdpdGVhIHdpa2kgcGFnZQ0KCQkkcGFnZSA9ICR0aGlzLT5nZXQoJG93bmVyLCAkcmVwbywgJHBhZ2VOYW1lKTsNCg0KCQlpZiAoZW1wdHkoJHBhZ2UtPmNvbnRlbnQpKQ0KCQl7DQoJCQl0aHJvdyBuZXcgXEV4Y2VwdGlvbignV2lraSBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC4nKTsNCgkJfQ0KDQoJCS8vIEJ1aWxkIHRoZSByZXF1ZXN0IHBhdGguDQoJCSRwYXRoID0gJy9tYXJrZG93bic7DQoNCgkJLy8gR2V0IGhlYWRlcnMNCgkJJGhlYWRlcnMgPSAkdGhpcy0+Y2xpZW50LT5nZXRPcHRpb24oJ2hlYWRlcnMnLCBhcnJheSgpKTsNCg0KCQkkaGVhZGVyc1snYWNjZXB0J10gPSAndGV4dC9odG1sJzsNCgkJJGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nOw0KDQoJCS8vIGJ1aWxkIHRoZSBwb3N0IGJvZHkNCgkJJGRhdGEgPSBbDQoJCQknQ29udGV4dCcgPT4gJ3N0cmluZycsDQoJCQknTW9kZScgPT4gJ3N0cmluZycsDQoJCQknVGV4dCcgPT4gJHBhZ2UtPmNvbnRlbnQsDQoJCQknV2lraScgPT4gdHJ1ZQ0KCQldOw0KDQoJCS8vIFBvc3QgdGhlIHJlcXVlc3QuDQoJCXJldHVybiAkdGhpcy0+cHJvY2Vzc1Jlc3BvbnNlKA0KCQkJJHRoaXMtPmNsaWVudC0+cG9zdCgkdGhpcy0+ZmV0Y2hVcmwoJHBhdGgpLCBqc29uX2VuY29kZSgkZGF0YSksICRoZWFkZXJzKQ0KCQkpOw0KCX0NCg==', '{}', 'Wiki', 'VDM\\Gitea\\Package.Repo.Wiki', '1.0.0', '{}', 'Gitea Repo Wiki', 'class', '{}', '', 1, '2022-07-09 10:21:53', '2022-07-09 12:18:07', 9, 4), -(30, 1, 'Start looking here:\r\nhttps://git.vdm.dev/api/swagger#/repository/repoGetContents', 'c65aaf1f-817c-49a2-8202-282e3904f5b1', '', '6ad3beb1-a769-4a6c-b300-5cda7adc6c0d', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', '', '', '{}', 'CS8qKg0KCSAqIEdldHMgdGhlIG1ldGFkYXRhIGFuZCBjb250ZW50cyAoaWYgYSBmaWxlKSBvZiBhbiBlbnRyeSBpbiBhIHJlcG9zaXRvcnksIG9yIGEgbGlzdCBvZiBlbnRyaWVzIGlmIGEgZGlyDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRvd25lciAgICAgICBSZXBvc2l0b3J5IG93bmVyLg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJHJlcG8gICAgICAgICBSZXBvc2l0b3J5IG5hbWUuDQoJICogQHBhcmFtICAgc3RyaW5nICAkZmlsZXBhdGggICAgUmVwb3NpdG9yeSBmaWxlIHBhdGguDQoJICoNCgkgKiBAcmV0dXJuICBvYmplY3QNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXQoJG93bmVyLCAkcmVwbywgJGZpbGVwYXRoKQ0KCXsNCgkJLy8gQnVpbGQgdGhlIHJlcXVlc3QgcGF0aC4NCgkJJHBhdGggPSAnL3JlcG9zLycgLiAkb3duZXIgLiAnLycgLiAkcmVwbyAuICcvY29udGVudHMvJyAuICRmaWxlcGF0aDsNCg0KCQkvLyBTZW5kIHRoZSByZXF1ZXN0Lg0KCQlyZXR1cm4gJHRoaXMtPnByb2Nlc3NSZXNwb25zZSgNCgkJCSR0aGlzLT5jbGllbnQtPmdldCgkdGhpcy0+ZmV0Y2hVcmwoJHBhdGgpKQ0KCQkpOw0KCX0NCg==', '{}', 'File', 'VDM\\Gitea\\Package.Repo.File', '1.0.1', '{}', 'Gitea Repo File', 'class', '{}', '', -2, '2022-07-11 18:35:50', '2022-07-09 10:28:20', 1, 4), -(31, '', 'Loading the Extension Installation Script Class\r\n\r\n@since 3.1.5', '', '', '1d929017-a5de-4e0f-9b5a-838934857e26', '', '', '', '{}', 'CS8qKg0KCSAqIFRoZSBMaW5lIG51bWJlcmluZyBNZXRob2RzDQoJICoNCgkgKiBAc2luY2UgMy4xLjUNCgkgKi8NCgl1c2UgTGluZTsNCg0KCS8qKg0KCSAqIFRoZSBUYWIgQWRkaW5nIE1ldGhvZA0KCSAqDQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJdXNlIFRhYjsNCg0KCS8qKg0KCSAqIFRoZSBleHRlbnNpb24NCgkgKg0KCSAqIEB2YXIgICAgIG9iamVjdA0KCSAqIEBzaW5jZSAzLjEuNQ0KCSAqLw0KCXByb3RlY3RlZCBvYmplY3QgJGV4dGVuc2lvbjsNCg0KCS8qKg0KCSAqIFRoZSBtZXRob2RzDQoJICoNCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAzLjEuNQ0KCSAqLw0KCXByb3RlY3RlZCBhcnJheSAkbWV0aG9kcyA9IFsncGhwX3NjcmlwdCcsICdwaHBfcHJlZmxpZ2h0JywgJ3BocF9wb3N0ZmxpZ2h0JywgJ3BocF9tZXRob2QnXTsNCg0KCS8qKg0KCSAqIFRoZSB0eXBlcw0KCSAqDQoJICogQHZhciAgICAgYXJyYXkNCgkgKiBAc2luY2UgMy4xLjUNCgkgKi8NCglwcm90ZWN0ZWQgYXJyYXkgJHR5cGVzID0gWydjb25zdHJ1Y3QnLCAnaW5zdGFsbCcsICd1cGRhdGUnLCAndW5pbnN0YWxsJywgJ2Rpc2NvdmVyX2luc3RhbGwnXTsNCg0KCS8qKg0KCSAqIFRoZSBjb25zdHJ1Y3QgYnVja2V0DQoJICoNCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAzLjEuNQ0KCSAqLw0KCXByb3RlY3RlZCBhcnJheSAkY29uc3RydWN0ID0gW107DQoNCgkvKioNCgkgKiBUaGUgaW5zdGFsbCBidWNrZXQNCgkgKg0KCSAqIEB2YXIgICAgIGFycmF5DQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHJvdGVjdGVkIGFycmF5ICRpbnN0YWxsID0gW107DQoNCgkvKioNCgkgKiBUaGUgdXBkYXRlIGJ1Y2tldA0KCSAqDQoJICogQHZhciAgICAgYXJyYXkNCgkgKiBAc2luY2UgMy4xLjUNCgkgKi8NCglwcm90ZWN0ZWQgYXJyYXkgJHVwZGF0ZSA9IFtdOw0KDQoJLyoqDQoJICogVGhlIHVuaW5zdGFsbCBidWNrZXQNCgkgKg0KCSAqIEB2YXIgICAgIGFycmF5DQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHJvdGVjdGVkIGFycmF5ICR1bmluc3RhbGwgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBwcmVmbGlnaHQgc3dpdGNoDQoJICoNCgkgKiBAdmFyICAgICBib29sDQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHJvdGVjdGVkIGJvb2wgJHByZWZsaWdodEFjdGl2ZSA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhlIHByZWZsaWdodCBidWNrZXQNCgkgKg0KCSAqIEB2YXIgICAgIGFycmF5DQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHJvdGVjdGVkIGFycmF5ICRwcmVmbGlnaHRCdWNrZXQgPSBbJ2luc3RhbGwnID0+IFtdLCAndW5pbnN0YWxsJyA9PiBbXSwgJ2Rpc2NvdmVyX2luc3RhbGwnID0+IFtdLCAndXBkYXRlJyA9PiBbXV07DQoNCgkvKioNCgkgKiBUaGUgcG9zdGZsaWdodCBzd2l0Y2gNCgkgKg0KCSAqIEB2YXIgICAgIGJvb2wNCgkgKiBAc2luY2UgMy4xLjUNCgkgKi8NCglwcm90ZWN0ZWQgYm9vbCAkcG9zdGZsaWdodEFjdGl2ZSA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhlIHBvc3RmbGlnaHQgYnVja2V0DQoJICoNCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAzLjEuNQ0KCSAqLw0KCXByb3RlY3RlZCBhcnJheSAkcG9zdGZsaWdodEJ1Y2tldCA9IFsnaW5zdGFsbCcgPT4gW10sICd1bmluc3RhbGwnID0+IFtdLCAnZGlzY292ZXJfaW5zdGFsbCcgPT4gW10sICd1cGRhdGUnID0+IFtdXTsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KG9iamVjdCAkZXh0ZW5zaW9uKQ0KCXsNCgkJLy8gbG9vcCBvdmVyIG1ldGhvZHMgYW5kIHR5cGVzDQoJCWZvcmVhY2ggKCR0aGlzLT5tZXRob2RzIGFzICRtZXRob2QpDQoJCXsNCgkJCWZvcmVhY2ggKCR0aGlzLT50eXBlcyBhcyAkdHlwZSkNCgkJCXsNCgkJCQlpZiAoaXNzZXQoJGV4dGVuc2lvbi0+eydhZGRfJyAuICRtZXRob2QgLiAnXycgLiAkdHlwZX0pDQoJCQkJCSYmICRleHRlbnNpb24tPnsnYWRkXycgLiAkbWV0aG9kIC4gJ18nIC4gJHR5cGV9ID09IDENCgkJCQkJJiYgU3RyaW5nSGVscGVyOjpjaGVjaygNCgkJCQkJCSRleHRlbnNpb24tPnskbWV0aG9kIC4gJ18nIC4gJHR5cGV9DQoJCQkJCSkpDQoJCQkJew0KCQkJCQkvLyBhZGQgdG8gdGhlIG1haW4gbWV0aG9kcw0KCQkJCQlpZiAoJ3BocF9tZXRob2QnID09PSAkbWV0aG9kIHx8ICdwaHBfc2NyaXB0JyA9PT0gJG1ldGhvZCkNCgkJCQkJew0KCQkJCQkJJHRoaXMtPnskdHlwZX1bXSA9ICRleHRlbnNpb24tPnskbWV0aG9kIC4gJ18nIC4gJHR5cGV9Ow0KCQkJCQl9DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJLy8gZ2V0IHRoZSBmbGlnaHQga2V5DQoJCQkJCQkkZmxpZ2h0ID0gc3RyX3JlcGxhY2UoJ3BocF8nLCAnJywgJG1ldGhvZCk7DQoJCQkJCQkvLyBsb2FkIHRoZSBzY3JpcHQgdG8gb3VyIGJ1Y2tldA0KCQkJCQkJJHRoaXMtPnskZmxpZ2h0IC4gJ0J1Y2tldCd9WyR0eXBlXVtdICA9ICRleHRlbnNpb24tPnskbWV0aG9kIC4gJ18nIC4gJHR5cGV9Ow0KCQkJCQkJLy8gc2hvdyB0aGF0IHRoZSBtZXRob2QgaXMgYWN0aXZlDQoJCQkJCQkkdGhpcy0+eyRmbGlnaHQgLiAnQWN0aXZlJ30gPSB0cnVlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJHRoaXMtPmV4dGVuc2lvbiA9ICRleHRlbnNpb247DQoJfQ0KDQoJLyoqDQoJICogZ2V0IGluc3RhbGwgc2NyaXB0DQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiBAc2luY2UgMy4xLjUNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0KCk6IHN0cmluZw0KCXsNCgkJLy8gcmV0dXJuIHRoZSBjbGFzcw0KCQlyZXR1cm4gJHRoaXMtPmJ1aWxkKCk7DQoJfQ0KDQoJLyoqDQoJICogYnVpbGQgdGhlIGluc3RhbGwgY2xhc3MNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIEBzaW5jZSAzLjEuNQ0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBidWlsZCgpOiBzdHJpbmcNCgl7DQoJCS8vIHN0YXJ0IGJ1aWxkDQoJCSRzY3JpcHQgPSAkdGhpcy0+aGVhZCgpOw0KDQoJCS8vIGxvYWQgY29uc3RydWN0b3IgaWYgc2V0DQoJCSRzY3JpcHQgLj0gJHRoaXMtPmNvbnN0cnVjdCgpOw0KDQoJCS8vIGxvYWQgaW5zdGFsbCBtZXRob2QgaWYgc2V0DQoJCSRzY3JpcHQgLj0gJHRoaXMtPm1haW4oJ2luc3RhbGwnKTsNCg0KCQkvLyBsb2FkIHVwZGF0ZSBtZXRob2QgaWYgc2V0DQoJCSRzY3JpcHQgLj0gJHRoaXMtPm1haW4oJ3VwZGF0ZScpOw0KDQoJCS8vIGxvYWQgdW5pbnN0YWxsIG1ldGhvZCBpZiBzZXQNCgkJJHNjcmlwdCAuPSAkdGhpcy0+bWFpbigndW5pbnN0YWxsJyk7DQoNCgkJLy8gbG9hZCBwcmVmbGlnaHQgbWV0aG9kIGlmIHNldA0KCQkkc2NyaXB0IC49ICR0aGlzLT5mbGlnaHQoJ3ByZWZsaWdodCcpOw0KDQoJCS8vIGxvYWQgcG9zdGZsaWdodCBtZXRob2QgaWYgc2V0DQoJCSRzY3JpcHQgLj0gJHRoaXMtPmZsaWdodCgncG9zdGZsaWdodCcpOw0KDQoJCS8vIGNsb3NlIHRoZSBjbGFzcw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAnfScgLiBQSFBfRU9MOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCBpbnN0YWxsIHNjcmlwdCBoZWFkDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiBAc2luY2UgMy4xLjUNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gaGVhZCgpOiBzdHJpbmcNCgl7DQoJCS8vIGdldCB0aGUgZXh0ZW5zaW9uDQoJCSRleHRlbnNpb24gPSAkdGhpcy0+ZXh0ZW5zaW9uOw0KCQkvLyBzdGFydCBidWlsZA0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuICcvKionOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAnICogJyAuICRleHRlbnNpb24tPm9mZmljaWFsX25hbWUNCgkJCS4gJyBzY3JpcHQgZmlsZS4nOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAnIConOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAnICogQHBhY2thZ2UgJyAuICRleHRlbnNpb24tPmNsYXNzX25hbWU7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICcgKi8nOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAnY2xhc3MgJyAuICRleHRlbnNpb24tPmluc3RhbGxlcl9jbGFzc19uYW1lOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAneyc7DQoNCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IGNvbnN0cnVjdG9yDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiBAc2luY2UgMy4xLjUNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gY29uc3RydWN0KCk6IHN0cmluZw0KCXsNCgkJLy8gcmV0dXJuIGVtcHR5IHN0cmluZyBpZiBub3Qgc2V0DQoJCWlmICghQXJyYXlIZWxwZXI6OmNoZWNrKCR0aGlzLT5jb25zdHJ1Y3QpKQ0KCQl7DQoJCQlyZXR1cm4gJyc7DQoJCX0NCg0KCQkvLyB0aGUgX19jb25zdHJ1Y3Qgc2NyaXB0DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuICR0aGlzLT5fdCgxKSAuICcvKionOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkgLiAnICogQ29uc3RydWN0b3InOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkgLiAnIConOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkNCgkJCS4gJyAqIEBwYXJhbSAgIEpvb21sYVxDTVNcSW5zdGFsbGVyXEluc3RhbGxlckFkYXB0ZXIgICRhZGFwdGVyICBUaGUgb2JqZWN0IHJlc3BvbnNpYmxlIGZvciBydW5uaW5nIHRoaXMgc2NyaXB0JzsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gJHRoaXMtPl90KDEpIC4gJyAqLyc7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKQ0KCQkJLiAncHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhZGFwdGVyKSc7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKSAuICd7JzsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gaW1wbG9kZShQSFBfRU9MIC4gUEhQX0VPTCwgJHRoaXMtPmNvbnN0cnVjdCk7DQoJCS8vIGNsb3NlIHRoZSBmdW5jdGlvbg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkgLiAnfSc7DQoNCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogYnVpbGQgbWFpbiBtZXRob2RzDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRuYW1lICAgdGhlIG1ldGhvZCBiZWluZyBjYWxsZWQNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIEBzaW5jZSAzLjEuNQ0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBtYWluKHN0cmluZyAkbmFtZSk6IHN0cmluZw0KCXsNCgkJLy8gcmV0dXJuIGVtcHR5IHN0cmluZyBpZiBub3Qgc2V0DQoJCWlmICghQXJyYXlIZWxwZXI6OmNoZWNrKCR0aGlzLT57JG5hbWV9KSkNCgkJew0KCQkJcmV0dXJuICcnOw0KCQl9DQoJCS8vIGxvYWQgdGhlIGluc3RhbGwgbWV0aG9kDQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuICR0aGlzLT5fdCgxKSAuICcvKionOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkgLiAiICogQ2FsbGVkIG9uICRuYW1lIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gJHRoaXMtPl90KDEpIC4gJyAqJzsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gJHRoaXMtPl90KDEpDQoJCQkuICcgKiBAcGFyYW0gICBKb29tbGFcQ01TXEluc3RhbGxlclxJbnN0YWxsZXJBZGFwdGVyICAkYWRhcHRlciAgVGhlIG9iamVjdCByZXNwb25zaWJsZSBmb3IgcnVubmluZyB0aGlzIHNjcmlwdCc7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKSAuICcgKic7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKQ0KCQkJLiAnICogQHJldHVybiAgYm9vbGVhbiAgVHJ1ZSBvbiBzdWNjZXNzJzsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gJHRoaXMtPl90KDEpIC4gJyAqLyc7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKSAuICdwdWJsaWMgZnVuY3Rpb24gJw0KCQkJLiAkbmFtZSAuICcoJGFkYXB0ZXIpJzsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gJHRoaXMtPl90KDEpIC4gJ3snOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBpbXBsb2RlKFBIUF9FT0wgLiBQSFBfRU9MLCAkdGhpcy0+eyRuYW1lfSk7DQoJCS8vIHJldHVybiB0cnVlDQoJCWlmICgndW5pbnN0YWxsJyAhPT0gJG5hbWUpDQoJCXsNCgkJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgyKSAuICdyZXR1cm4gdHJ1ZTsnOw0KCQl9DQoJCS8vIGNsb3NlIHRoZSBmdW5jdGlvbg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkgLiAnfSc7DQoNCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogYnVpbGQgZmxpZ2h0IG1ldGhvZHMNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJG5hbWUgICB0aGUgbWV0aG9kIGJlaW5nIGNhbGxlZA0KCSAqDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGZsaWdodChzdHJpbmcgJG5hbWUpOiBzdHJpbmcNCgl7DQoJCS8vIHJldHVybiBlbXB0eSBzdHJpbmcgaWYgbm90IHNldA0KCQlpZiAoZW1wdHkoJHRoaXMtPnskbmFtZSAuICdBY3RpdmUnfSkpDQoJCXsNCgkJCXJldHVybiAnJzsNCgkJfQ0KDQoJCS8vIHRoZSBwcmUvcG9zdCBmdW5jdGlvbiB0eXBlcw0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkgLiAnLyoqJzsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gJHRoaXMtPl90KDEpDQoJCQkuICcgKiBDYWxsZWQgYmVmb3JlIGFueSB0eXBlIG9mIGFjdGlvbic7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKSAuICcgKic7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKQ0KCQkJLiAnICogQHBhcmFtICAgc3RyaW5nICAkcm91dGUgIFdoaWNoIGFjdGlvbiBpcyBoYXBwZW5pbmcgKGluc3RhbGx8dW5pbnN0YWxsfGRpc2NvdmVyX2luc3RhbGx8dXBkYXRlKSc7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKQ0KCQkJLiAnICogQHBhcmFtICAgSm9vbWxhXENNU1xJbnN0YWxsZXJcSW5zdGFsbGVyQWRhcHRlciAgJGFkYXB0ZXIgIFRoZSBvYmplY3QgcmVzcG9uc2libGUgZm9yIHJ1bm5pbmcgdGhpcyBzY3JpcHQnOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkgLiAnIConOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkNCgkJCS4gJyAqIEByZXR1cm4gIGJvb2xlYW4gIFRydWUgb24gc3VjY2Vzcyc7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKSAuICcgKi8nOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMSkgLiAncHVibGljIGZ1bmN0aW9uICcNCgkJCS4gJG5hbWUgLiAnKCRyb3V0ZSwgJGFkYXB0ZXIpJzsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gJHRoaXMtPl90KDEpIC4gJ3snOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMikgLiAnLy8nIC4gJHRoaXMtPnNldExpbmUoDQoJCQkJX19MSU5FX18NCgkJCSkgLiAnIGdldCBhcHBsaWNhdGlvbic7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgyKQ0KCQkJLiAnJGFwcCA9IEpGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOycgLiBQSFBfRU9MOw0KDQoJCS8vIGFkZCB0aGUgZGVmYXVsdCB2ZXJzaW9uIGNoZWNrIChUT0RPKSBtdXN0IG1ha2UgdGhpcyBkeW5hbWljDQoJCWlmICgncHJlZmxpZ2h0JyA9PT0gJG5hbWUpDQoJCXsNCgkJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgyKSAuICcvLycgLiAkdGhpcy0+c2V0TGluZSgNCgkJCQkJX19MSU5FX18NCgkJCQkpIC4gJyB0aGUgZGVmYXVsdCBmb3IgYm90aCBpbnN0YWxsIGFuZCB1cGRhdGUnOw0KCQkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gJHRoaXMtPl90KDIpDQoJCQkJLiAnJGp2ZXJzaW9uID0gbmV3IEpWZXJzaW9uKCk7JzsNCgkJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgyKQ0KCQkJCS4gImlmICghXCRqdmVyc2lvbi0+aXNDb21wYXRpYmxlKCczLjguMCcpKSI7DQoJCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMikgLiAneyc7DQoJCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMykNCgkJCQkuICJcJGFwcC0+ZW5xdWV1ZU1lc3NhZ2UoJ1BsZWFzZSB1cGdyYWRlIHRvIGF0IGxlYXN0IEpvb21sYSEgMy44LjAgYmVmb3JlIGNvbnRpbnVpbmchJywgJ2Vycm9yJyk7IjsNCgkJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgzKSAuICdyZXR1cm4gZmFsc2U7JzsNCgkJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgyKSAuICd9JyAuIFBIUF9FT0w7DQoJCX0NCg0KCQkvLyBub3cgYWRkIHRoZSBzY3JpcHRzDQoJCWZvcmVhY2ggKCR0aGlzLT57JG5hbWUgLiAnQnVja2V0J30gYXMgJHJvdXRlID0+ICRfc2NyaXB0KQ0KCQl7DQoJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCRfc2NyaXB0KSkNCgkJCXsNCgkJCQkvLyBzZXQgdGhlIGlmIGFuZCBzY3JpcHQNCgkJCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMikgLiAiaWYgKCciIC4gJHJvdXRlDQoJCQkJCS4gIicgPT09IFwkcm91dGUpIjsNCgkJCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMikgLiAneyc7DQoJCQkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gaW1wbG9kZSgNCgkJCQkJCVBIUF9FT0wgLiBQSFBfRU9MLCAkX3NjcmlwdA0KCQkJCQkpOw0KCQkJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgyKSAuICd9JyAuIFBIUF9FT0w7DQoJCQl9DQoJCX0NCg0KCQkvLyByZXR1cm4gdHJ1ZQ0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiAkdGhpcy0+X3QoMikgLiAncmV0dXJuIHRydWU7JzsNCgkJLy8gY2xvc2UgdGhlIGZ1bmN0aW9uDQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuICR0aGlzLT5fdCgxKSAuICd9JzsNCg0KCQlyZXR1cm4gJHNjcmlwdDsNCgl9', '{}', 'InstallScript', 'VDM\\Joomla\\Componentbuilder.Extension.InstallScript', '1.0.0', '{}', 'Componentbuilder.Extension.Install', 'class', '{\"use_selection0\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"4e6ff11d-bebf-42f5-8fd7-b2f882857222\",\"as\":\"default\"},\"use_selection3\":{\"use\":\"a68c010b-e92e-47d5-8a44-d23cfddeb6c6\",\"as\":\"default\"}}', '', 1, '2022-08-20 13:45:05', '2022-08-20 15:47:55', 10, 14), -(32, '', 'Adds Tabs\r\n\r\n@since 3.1.5', '', '', 'a68c010b-e92e-47d5-8a44-d23cfddeb6c6', '', '', '', '{}', 'CS8qKg0KCSAqIFRhYi9zcGFjZXIgYnVja2V0ICh0byBzcGVlZC11cCB0aGUgYnVpbGQpDQoJICogDQoJICogQHZhciAgIGFycmF5DQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHJvdGVjdGVkICR0YWJTcGFjZXJCdWNrZXQgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogU2V0IHRhYi9zcGFjZXINCgkgKiANCgkgKiBAdmFyICAgc3RyaW5nDQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHJvdGVjdGVkICR0YWJTcGFjZXIgPSAiXHQiOw0KDQoJLyoqDQoJICogU2V0IHRoZSB0YWIvc3BhY2UNCgkgKiANCgkgKiBAcGFyYW0gICBpbnQgICAkbnIgIFRoZSBudW1iZXIgb2YgdGFnL3NwYWNlDQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogQHNpbmNlIDMuMS41DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF90KGludCAkbnIpIDogc3RyaW5nDQoJew0KCQkvLyBjaGVjayBpZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHN0cmluZw0KCQlpZiAoIWlzc2V0KCR0aGlzLT50YWJTcGFjZXJCdWNrZXRbJG5yXSkpDQoJCXsNCgkJCS8vIGdldCB0aGUgc3RyaW5nDQoJCQkkdGhpcy0+dGFiU3BhY2VyQnVja2V0WyRucl0gPSBzdHJfcmVwZWF0KCR0aGlzLT50YWJTcGFjZXIsIChpbnQpICRucik7DQoJCX0NCgkJLy8gcmV0dXJuIHN0b3JlZCBzdHJpbmcNCgkJcmV0dXJuICR0aGlzLT50YWJTcGFjZXJCdWNrZXRbJG5yXTsNCgl9', '{}', 'Tab', 'VDM\\Joomla\\Componentbuilder.Tab', '1.0.0', '{}', 'Componentbuilder.Tab', 'trait', '{}', '', 1, '2022-08-20 13:55:50', '2022-08-20 15:26:46', 5, 15), -(33, '', 'Add line comment\r\n\r\n@since 3.1.5', '', '', '4e6ff11d-bebf-42f5-8fd7-b2f882857222', '', '', '', '{}', 'CS8qKg0KCSAqIFNldCB0aGUgbGluZSBudW1iZXIgaW4gY29tbWVudHMNCgkgKg0KCSAqIEBwYXJhbSAgIGludCAgJG5yICBUaGUgbGluZSBudW1iZXINCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIEBzaW5jZSAzLjEuNQ0KCSAqLw0KCXByaXZhdGUgZnVuY3Rpb24gc2V0TGluZShpbnQgJG5yKTogc3RyaW5nDQoJew0KCQlpZiAoJHRoaXMtPmRlYnVnKQ0KCQl7DQoJCQlyZXR1cm4gJyBbJyAuIGdldF9jYWxsZWRfY2xhc3MoKSAuICcgJyAuICRuciAuICddJzsNCgkJfQ0KDQoJCXJldHVybiAnJzsNCgl9', '{}', 'Line', 'VDM\\Joomla\\Componentbuilder.Line', '1.0.0', '{}', 'Componentbuilder.Line', 'trait', '{}', '', 1, '2022-08-20 14:02:09', '2022-08-20 15:26:56', 4, 15); +(29, 1, 'Start looking here:\r\nhttps://git.vdm.dev/api/swagger#/repository/repoCreateWikiPage', 'c65aaf1f-817c-49a2-8202-282e3904f5b1', '', 'c4a188de-ad78-4a6d-9d5b-01866846d701', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', '', '', '{}', 'CS8qKg0KCSAqIEdldCBhIHJlcG9zaXRvcnkgd2lraSBwYWdlDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRvd25lciAgICAgICAgICAgICAgIFRoZSByZXBvc2l0b3J5IG93bmVyDQoJICogQHBhcmFtICAgc3RyaW5nICAkcmVwbyAgICAgICAgICAgICAgICAgVGhlIHJlcG9zaXRvcnkgbmFtZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJHBhZ2VOYW1lICAgICAgIFRoZSBwYWdlIG5hbWUNCgkgKg0KCSAqIEByZXR1cm4gIG9iamVjdA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldChzdHJpbmcgJG93bmVyLCBzdHJpbmcgJHJlcG8sIHN0cmluZyAkcGFnZU5hbWUpDQoJew0KCQkvLyBCdWlsZCB0aGUgcmVxdWVzdCBwYXRoLg0KCQkkcGF0aCA9ICcvcmVwb3MvJyAuICRvd25lciAuICcvJyAuICRyZXBvIC4gJy93aWtpL3BhZ2UvJyAuICRwYWdlTmFtZTsNCg0KCQkvLyBTZW5kIHRoZSByZXF1ZXN0Lg0KCQlyZXR1cm4gJHRoaXMtPnByb2Nlc3NSZXNwb25zZSgNCgkJCSR0aGlzLT5jbGllbnQtPmdldCgkdGhpcy0+ZmV0Y2hVcmwoJHBhdGgpKQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBhIHJlcG9zaXRvcnkgd2lraSBodG1sIHBhZ2UNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJG93bmVyICAgICAgICAgICAgICAgVGhlIHJlcG9zaXRvcnkgb3duZXINCgkgKiBAcGFyYW0gICBzdHJpbmcgICRyZXBvICAgICAgICAgICAgICAgICBUaGUgcmVwb3NpdG9yeSBuYW1lDQoJICogQHBhcmFtICAgc3RyaW5nICAkcGFnZU5hbWUgICAgICAgVGhlIHBhZ2UgbmFtZQ0KCSAqDQoJICogQHJldHVybiAgb2JqZWN0DQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0SHRtbChzdHJpbmcgJG93bmVyLCBzdHJpbmcgJHJlcG8sIHN0cmluZyAkcGFnZU5hbWUpDQoJew0KCQkvLyBnZXQgdGhlIGdpdGVhIHdpa2kgcGFnZQ0KCQkkcGFnZSA9ICR0aGlzLT5nZXQoJG93bmVyLCAkcmVwbywgJHBhZ2VOYW1lKTsNCg0KCQlpZiAoZW1wdHkoJHBhZ2UtPmNvbnRlbnQpKQ0KCQl7DQoJCQl0aHJvdyBuZXcgXEV4Y2VwdGlvbignV2lraSBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC4nKTsNCgkJfQ0KDQoJCS8vIEJ1aWxkIHRoZSByZXF1ZXN0IHBhdGguDQoJCSRwYXRoID0gJy9tYXJrZG93bic7DQoNCgkJLy8gR2V0IGhlYWRlcnMNCgkJJGhlYWRlcnMgPSAkdGhpcy0+Y2xpZW50LT5nZXRPcHRpb24oJ2hlYWRlcnMnLCBhcnJheSgpKTsNCg0KCQkkaGVhZGVyc1snYWNjZXB0J10gPSAndGV4dC9odG1sJzsNCgkJJGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nOw0KDQoJCS8vIGJ1aWxkIHRoZSBwb3N0IGJvZHkNCgkJJGRhdGEgPSBbDQoJCQknQ29udGV4dCcgPT4gJ3N0cmluZycsDQoJCQknTW9kZScgPT4gJ3N0cmluZycsDQoJCQknVGV4dCcgPT4gJHBhZ2UtPmNvbnRlbnQsDQoJCQknV2lraScgPT4gdHJ1ZQ0KCQldOw0KDQoJCS8vIFBvc3QgdGhlIHJlcXVlc3QuDQoJCXJldHVybiAkdGhpcy0+cHJvY2Vzc1Jlc3BvbnNlKA0KCQkJJHRoaXMtPmNsaWVudC0+cG9zdCgkdGhpcy0+ZmV0Y2hVcmwoJHBhdGgpLCBqc29uX2VuY29kZSgkZGF0YSksICRoZWFkZXJzKQ0KCQkpOw0KCX0NCg==', '{}', 'Wiki', 'VDM\\Gitea\\Package.Repo.Wiki', '1.0.0', '{}', 'Gitea Repo Wiki', 'class', '{}', '', 1, '2022-07-09 10:21:53', '2022-07-09 12:18:07', 9, 4); -- -- Dumping data for table `#__componentbuilder_admin_view` diff --git a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Extension/InstallScript.php b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Extension/InstallScript.php index 0c72523fd..b4287f1c3 100644 --- a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Extension/InstallScript.php +++ b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Extension/InstallScript.php @@ -131,8 +131,14 @@ class InstallScript * Constructor * @since 3.1.5 */ - public function __construct(object $extension) + public function __construct(object $extension, ?array $config = null) { + // check if we have the debug switch TODO - move to global registry - singleton + if (isset($config['debug'])) + { + $this->debug = $config['debug']; + } + // loop over methods and types foreach ($this->methods as $method) { diff --git a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Line.php b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Line.php index 97b53b5e7..ee26fabef 100644 --- a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Line.php +++ b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Line.php @@ -19,6 +19,14 @@ namespace VDM\Joomla\Componentbuilder; */ trait Line { + /** + * The debug switch + * + * @var bool + * @since 3.1.5 + */ + protected bool $debug = false; + /** * Set the line number in comments *