Update RAN model to include SMO and transport links 63/14063/4
authorJvD_Ericsson <jeff.van.dam@est.tech>
Fri, 15 Nov 2024 09:23:17 +0000 (09:23 +0000)
committerJeff van Dam <jeff.van.dam@est.tech>
Fri, 25 Apr 2025 14:14:54 +0000 (14:14 +0000)
Update affected tests
Update related SVGs in docs

Issue-ID: SMO-167
Change-Id: Ia2005a1b5731cca80fd4f02ef54cac1b43b009e0
Signed-off-by: JvD_Ericsson <jeff.van.dam@est.tech>
15 files changed:
docker-compose/sql_scripts/00_init-teiv-exposure-model.sql
docker-compose/sql_scripts/01_init-teiv-exposure-data.sql
docs/_static/data-model/o-ran-smo-teiv-ran-rel.svg
docs/_static/data-model/o-ran-smo-teiv-ran.svg
docs/_static/data-model/overall-rel.svg
teiv/src/main/resources/models/o-ran-smo-teiv-ran.yang
teiv/src/test/java/org/oran/smo/teiv/db/TestPostgresqlContainer.java
teiv/src/test/java/org/oran/smo/teiv/schema/SchemaRegistryTest.java
teiv/src/test/resources/contracts/exposure/data/01_getTopologyEntityTypes.groovy
teiv/src/test/resources/contracts/exposure/data/02_getTopologyByEntityTypeName.groovy
teiv/src/test/resources/contracts/exposure/data/05_getRelationshipTypes.groovy
teiv/src/test/resources/contracts/exposure/schemas/00_getAllSchemas.groovy
teiv/src/test/resources/contracts/groups/05_getMembers.groovy
teiv/src/test/resources/pgsqlschema/00_init-oran-smo-teiv-data.sql
teiv/src/test/resources/pgsqlschema/01_init-oran-smo-teiv-model.sql

index e69d5e3..cf4ed15 100644 (file)
@@ -98,10 +98,25 @@ FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_provided-by-oduFunction        FK_9B73B9E2
 FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-antennaCapability    FK_65D538D54EB33081C808540235FEB28823428E64     CONSTRAINT
 FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-by-nrCellDu  FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-by-nrCellDu   CONSTRAINT
 FK_o-ran-smo-teiv-ran_NearRTRICFunction_REL_FK_managed-by-managedElement       FK_32BDE0334EA6AD74ABB3958A2B163F63A3F05203     CONSTRAINT
+FK_o-ran-smo-teiv-ran_NearRTRICFunction_REL_FK_nearRTRICFunction-o1-linked-smo FK_38EF935E0C374C18F1865F231A3EA230FD743A91     CONSTRAINT
 FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_managed-by-managedElement   FK_122DD9709032528D161177B3624AD7AAF6589005     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_ocucpFunction-o1-linked-smo FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_FK_ocucpFunction-e2-linked-nearRTRICFunction  FK_C51E9052970F82631E1BF28C495852340A9858F9     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_FK_ocucpFunction-e2-linked-ocuupFunction      FK_C4055161A630A4BEA3C222DE6F04A8FF722351F4     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUUPFUNCTION_REL_FK_ocuupFunction-e2-linked-nearRTRICFunction   FK_8452075F28AAA821F6FC74E6BFED35C1FBFC64C7     CONSTRAINT
 FK_o-ran-smo-teiv-ran_OCUUPFunction_REL_FK_managed-by-managedElement   FK_8062AF50E5EE5543FBCC68D66FDFF673E31E081D     CONSTRAINT
 FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_managed-by-managedElement     FK_B6F0A4F9024FB47DA39C9A4F1DFFF78330222A80     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-e2-linked-nearRTRICFunction       FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-f1-c-linked-ocucpFunction FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-f1-u-linked-ocuupFunction FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-o1-linked-smo     FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F     CONSTRAINT
 FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_managed-by-managedElement     FK_B497A8C3DC2D647938E6DB4C7E691509DD8C90DE     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-o1-linked-smo     FK_DBE4275001B5740ED355F64F62F181489A4E398A     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhc-linked-oduFunction   FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhm-linked-oduFunction   FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhm-linked-smo   FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhs-linked-oduFunction   FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhu-linked-oduFunction   FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_aSide_NFDeployment       FK_BE847E738902EA979AC709D5A3D0CCD3FD8911CA     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_bSide_NearRTRICFunction  FK_CCC0DEA6E4ABAB8614332070E83D953254D5A3A5     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_aSide_NFDeployment   FK_2B4B09AF7CC9C877B1140BB127B4CB4DA438195D     CONSTRAINT
@@ -187,11 +202,21 @@ IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_sour
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_CD_classifiers  IDX_8BCCF388DFC8652AD5CD0675C64F49D2D2EDC7A1    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_CD_sourceIds    IDX_E4E40B26C322AF63A662706AF8B0B36E1043B793    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION     IDX_0ECC814A408874C9F8E73EEE3968984A6345A606    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO IDX_F2F838B3DBDF4E0EFC3FC2096F7549740976B346    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION       IDX_B608D8F6B8A79097EA61A1B4777A96CD3D2D1E98    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO   IDX_6B3AF742DAE59FE0E798E67C7E2417783464FD8D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_CD_classifiers      IDX_8D9862DBF6A721FABAEA4204E04B374692C1C5B8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_CD_sourceIds        IDX_84A29F8571860AC5A7BD1A99923485ECB6A3939D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION     IDX_21F2560C8330A795E8AFB54C6D31CDCF6CCD3070    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO IDX_D9ADFBBC5360F5D511E0E67A0D13622A4BBD78E1    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION       IDX_4C6B5CB5CF018656DC8191CE6FE3B9DA2CD0C819    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO   IDX_2F4FCB18A717B38224F5BAA484D2EFE26A458CC7    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_CD_classifiers_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION    IDX_1B7127FBB6523636F1D81D9235301D1410A10240    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_CD_classifiers_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION IDX_826BB0F20D5BFEAB9BD1B5106046276A6FF7CE5D    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_CD_sourceIds_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION      IDX_8EADD4E436B442260444BBD678577B36B384627A    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_CD_sourceIds_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION   IDX_24BDE57AED3B1259709D84A10FC7C5580B8D4AAC    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFUNCTION_REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION   IDX_E21209AD4691E3A76CC6E58EAC507B59C565F801    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFUNCTION_REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION     IDX_EF1B4A1F55350A7F49B75FBFBB28BD1B5B4FB9E2    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_CD_classifiers      IDX_25E4BCFBF8F5344DFC60BCB159FA873FFC8109E9    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_CD_sourceIds        IDX_6C81B2BBFCFE94C87598869A2099E04571202BA7    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION     IDX_3346DFB8C2B7D6EEA12B7C1DE4A84B058C24A657    INDEX
@@ -200,11 +225,33 @@ IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_pLMNIdList     ID
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_CD_classifiers        IDX_5CE9EDE1F25AB2D880A41BC5D297FDBE668182E8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_CD_sourceIds  IDX_73790DA8FF6365B752DC8B399893AC6DE8CF26C4    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION IDX_5DD192861541E0EB2776C6BFE34B327FF27F93C3    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION       IDX_AFD9E48ECC8E81DCD5F3A10199B7936A894D75F1    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION  IDX_F784968DE38F941EB1D9E2845576B5F93ED1E18B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION  IDX_91CC0F89EAA44A400D822FCFDC9AB8AE0285499C    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO     IDX_166E643CA7B58B57DC9CA292E233C033DA771649    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION   IDX_0E5C91A3252FBAFA72DB644D4E949A379F0CB910    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION IDX_5F2DC68F0CE9A176F79C9DEF6752556C38C7A8DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    IDX_4C7915C1CD9395FE91ED0474B1235393063920BA    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    IDX_0C48537C4C2C125C6B188375EC62CBA0984B3D8B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO       IDX_F8F72994228550E6DA79A2E336AFF745CF5B13A8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_CD_classifiers        IDX_2A5AAAD13FDCFF7F2958005C22937366F6604A0D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_CD_sourceIds  IDX_D0D11CFAA917F4FA12748A041A34D2B39A3AD707    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION IDX_DA79A3F946C1F4E8D05B4D6ADEF5E4C65E47635E    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO     IDX_583EAFCC8FB5174AB69184076C2EC75E85F44402    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION   IDX_913D348FC7569F1B3054A7F11583A8E826C44C4D    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION   IDX_10F981F841A1BEAC998725703500D2AAFF92C615    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO   IDX_C5EF805B2EF19761349A03D3CD3CF6C12818C98B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION   IDX_2E9527C8D166D7A31FE2F2B26EEED8202FC33B14    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION   IDX_7B224280C4E1CD6248628CAF23CB06FE50AA838D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION   IDX_AF235FB2C9CCA99D94CC4038669EDD1BB6C7B2DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO       IDX_C650BB0BAF5EF02FB2A7CBF9D89379DB446443F3    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION     IDX_DEC190D478DCFE7B4974DFE067136180DC4F98D2    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION     IDX_70B09AD99FFFEC82C50E21709F65D759CD306CC2    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO     IDX_8D607F7CBEE96E7D2F0D0E2399E1DF2D4A4D2DE1    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION     IDX_1EF8E086BAB9488EA6AD191B6082977A76CD2BD9    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION     IDX_544CBFFD146034E3AA9C2EAF6B8770C8CF8740DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_SMO_CD_classifiers        IDX_E528335C63DF74D690BADBF0ED2134E2BE5EC147    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_SMO_CD_sourceIds  IDX_F34E4B2CD5D3DEC7271D5FA89AFC34BCF424D636    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_Sector_CD_classifiers     IDX_19C19556F9714850389595E0A16218FA229205FE    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_Sector_CD_sourceIds       IDX_E234B43A7CD7843672F08F2197AB46A2A50BECB0    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_CD_classifiers    IDX_F52FEEDBAF1B04D2D22EBAE051BB5125DF6A6968    INDEX
@@ -246,6 +293,7 @@ IDX_GIN_o-ran-smo-teiv-oam_ManagedElement_REL_CD_decorators_MANAGEDELEMENT_DEPLO
 IDX_GIN_o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE_CD_decorators       IDX_4CFE6D1BF80F10055EEF778827B1B769EB9FBFE7    INDEX
 IDX_GIN_o-ran-smo-teiv-physical_PhysicalAppliance_CD_decorators        IDX_GIN_o-ran-smo-teiv-physical_PhysicalAppliance_CD_decorators INDEX
 IDX_GIN_o-ran-smo-teiv-physical_Site_CD_decorators     IDX_GIN_o-ran-smo-teiv-physical_Site_CD_decorators      INDEX
+IDX_GIN_o-ran-smo-teiv-physical_Site_siteLocation      IDX_GIN_o-ran-smo-teiv-physical_Site_siteLocation       INDEX
 IDX_GIN_o-ran-smo-teiv-ran_AntennaCapability_CD_decorators     IDX_GIN_o-ran-smo-teiv-ran_AntennaCapability_CD_decorators      INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NRCellCU_CD_decorators      IDX_GIN_o-ran-smo-teiv-ran_NRCellCU_CD_decorators       INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NRCellCU_REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU  IDX_5D761303176D3B9338784DFBEE0CEC51046ADC30    INDEX
@@ -259,17 +307,33 @@ IDX_GIN_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_decorators_NRSECTORCARRIER_USE
 IDX_GIN_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER      IDX_5AB1D780E57D940C42BAD29772E9E2B6C63498A0    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_CD_decorators     IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_CD_decorators      INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION        IDX_B10FD045A6C3E169953CCC38CC2D801FCE15A75F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO    IDX_218EB3FA277F4E7F72EC345841246A5BB3402E28    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_pLMNId    IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_pLMNId     INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_CD_decorators  INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION        IDX_D856E84F300B6711E81931AE1CBC8AD905FA384F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO    IDX_FC018070572BA39A4683CBDDCAAA16D3A9129DB8    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId        IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_CD_decorators_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION       IDX_306486F1958CB0682AAD7DBBF83E6EBBE8159313    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_CD_decorators_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION    IDX_7B3604DB1DE3AD5D0CC8A6425BC75E31F9FE3973    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUUPFUNCTION_REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION      IDX_E21F84EB03AE1F94DD674A63E89BE81662FB3B93    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_CD_decorators  INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION        IDX_ADD3393C27589066C4993A3491436C6FB57A539F    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION    IDX_0B9AC962B1E07740CE43D912B5FBC54E0B39DD24    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  IDX_714284D19884BC9E2A594B6B5010D429E12F5AE7    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     IDX_9A1D505BA4542318211ECF2569A0CEA390AAB52D    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     IDX_090DF573B5D8AFDA2478C3B4BA551FEC2CD48585    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_O1LINK_SMO        IDX_0A7B8671FF4C6943209D81A0351DE1CAEFB55629    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId        IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION    IDX_7B916E1753D2860DF434831CF1E9697ED9973C8F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_O1LINK_SMO        IDX_DE327F0FC00996B5856EE87C424E2E70C39475CA    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION      IDX_2C350ECD1561367CFE3C6ECE240110B0CFBE691E    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION      IDX_091099E01E22A69CF5FBD13F6BE31A590A12DFEB    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO      IDX_0F1592A3DE78629D65D3FED257905832BF2C42EA    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION      IDX_21586E874FC18901720393534E189FB50B0825AC    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION      IDX_F3DE945424D3435D889B06D0080CFC8C26F76CF2    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators        IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators INDEX
 IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_CD_decorators       IDX_D333FA5882890B7CD3599712FFFB2641B9E04C80    INDEX
 IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_CD_decorators   IDX_0867A1E865A904F4BB513948DAEB60412BE67DF3    INDEX
@@ -303,6 +367,7 @@ PK_o-ran-smo-teiv-ran_OCUCPFunction_id      PK_o-ran-smo-teiv-ran_OCUCPFunction_id  CO
 PK_o-ran-smo-teiv-ran_OCUUPFunction_id PK_o-ran-smo-teiv-ran_OCUUPFunction_id  CONSTRAINT
 PK_o-ran-smo-teiv-ran_ODUFunction_id   PK_o-ran-smo-teiv-ran_ODUFunction_id    CONSTRAINT
 PK_o-ran-smo-teiv-ran_ORUFunction_id   PK_o-ran-smo-teiv-ran_ORUFunction_id    CONSTRAINT
+PK_o-ran-smo-teiv-ran_SMO_id   PK_o-ran-smo-teiv-ran_SMO_id    CONSTRAINT
 PK_o-ran-smo-teiv-ran_Sector_id        PK_o-ran-smo-teiv-ran_Sector_id CONSTRAINT
 PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_id       PK_82A1C5618438FF6DF7CDD48FD71E0A584E6D052A     CONSTRAINT
 PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_id   PK_2D854968CB74C42C534D8E7C2A53E93F6B7F001F     CONSTRAINT
@@ -322,13 +387,28 @@ REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION   REL_CD_classifiers_MANAG
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION        REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION  REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION   COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION  REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION   COLUMN
+REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO        REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO COLUMN
 REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT  REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT   COLUMN
 REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER       REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER        COLUMN
 REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY      REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY       COLUMN
 REL_CD_classifiers_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER     REL_CD_classifiers_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER      COLUMN
+REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO    REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO     COLUMN
 REL_CD_classifiers_OCUCPFUNCTION_PROVIDES_NRCELLCU     REL_CD_classifiers_OCUCPFUNCTION_PROVIDES_NRCELLCU      COLUMN
+REL_CD_classifiers_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION        REL_CD_classifiers_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION COLUMN
+REL_CD_classifiers_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION     REL_CD_classifiers_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION      COLUMN
+REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION        REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION COLUMN
+REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION   REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    COLUMN
+REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION   REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    COLUMN
+REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO      REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO       COLUMN
 REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRCELLDU       REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRCELLDU        COLUMN
 REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRSECTORCARRIER        REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRSECTORCARRIER COLUMN
+REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO      REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO       COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO    REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION     COLUMN
 REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE  COLUMN
 REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU      REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU       COLUMN
 REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE      REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE       COLUMN
@@ -339,13 +419,28 @@ REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION    REL_CD_decorators_MANAGED
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION  COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION   REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION    COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION   REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION    COLUMN
+REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO  COLUMN
 REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT   REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT    COLUMN
 REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER        REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER COLUMN
 REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY       REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY        COLUMN
 REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER      REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER       COLUMN
+REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO     REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO      COLUMN
 REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU      REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU       COLUMN
+REL_CD_decorators_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION REL_CD_decorators_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION  COLUMN
+REL_CD_decorators_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_CD_decorators_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION       REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION        COLUMN
+REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  COLUMN
+REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     COLUMN
+REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     COLUMN
+REL_CD_decorators_ODUFUNCTION_O1LINK_SMO       REL_CD_decorators_ODUFUNCTION_O1LINK_SMO        COLUMN
 REL_CD_decorators_ODUFUNCTION_PROVIDES_NRCELLDU        REL_CD_decorators_ODUFUNCTION_PROVIDES_NRCELLDU COLUMN
 REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  COLUMN
+REL_CD_decorators_ORUFUNCTION_O1LINK_SMO       REL_CD_decorators_ORUFUNCTION_O1LINK_SMO        COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO     REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION      COLUMN
 REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE  REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE   COLUMN
 REL_CD_decorators_SECTOR_GROUPS_NRCELLDU       REL_CD_decorators_SECTOR_GROUPS_NRCELLDU        COLUMN
 REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE       REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE        COLUMN
@@ -356,13 +451,28 @@ REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION     REL_CD_sourceIds_MANAGEDEL
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION  REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION   COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION    REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION     COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION    REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION     COLUMN
+REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO  REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO   COLUMN
 REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT    REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT     COLUMN
 REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER  COLUMN
 REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY        REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY COLUMN
 REL_CD_sourceIds_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER       REL_CD_sourceIds_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER        COLUMN
+REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO      REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO       COLUMN
 REL_CD_sourceIds_OCUCPFUNCTION_PROVIDES_NRCELLCU       REL_CD_sourceIds_OCUCPFUNCTION_PROVIDES_NRCELLCU        COLUMN
+REL_CD_sourceIds_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION  REL_CD_sourceIds_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION   COLUMN
+REL_CD_sourceIds_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION       REL_CD_sourceIds_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION        COLUMN
+REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION        REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION COLUMN
+REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION   COLUMN
+REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION      COLUMN
+REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION      COLUMN
+REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO        REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO COLUMN
 REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRCELLDU REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRCELLDU  COLUMN
 REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRSECTORCARRIER   COLUMN
+REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO        REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO      REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION       COLUMN
 REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE   REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE    COLUMN
 REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU        REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU COLUMN
 REL_FK_comprised-by-cloudifiedNF       REL_FK_comprised-by-cloudifiedNF        COLUMN
@@ -371,6 +481,21 @@ REL_FK_deployed-on-nodeCluster     REL_FK_deployed-on-nodeCluster  COLUMN
 REL_FK_grouped-by-sector       REL_FK_grouped-by-sector        COLUMN
 REL_FK_installed-at-site       REL_FK_installed-at-site        COLUMN
 REL_FK_managed-by-managedElement       REL_FK_managed-by-managedElement        COLUMN
+REL_FK_nearRTRICFunction-o1-linked-smo REL_FK_nearRTRICFunction-o1-linked-smo  COLUMN
+REL_FK_ocucpFunction-e2-linked-nearRTRICFunction       REL_FK_ocucpFunction-e2-linked-nearRTRICFunction        COLUMN
+REL_FK_ocucpFunction-e2-linked-ocuupFunction   REL_FK_ocucpFunction-e2-linked-ocuupFunction    COLUMN
+REL_FK_ocucpFunction-o1-linked-smo     REL_FK_ocucpFunction-o1-linked-smo      COLUMN
+REL_FK_ocuupFunction-e2-linked-nearRTRICFunction       REL_FK_ocuupFunction-e2-linked-nearRTRICFunction        COLUMN
+REL_FK_oduFunction-e2-linked-nearRTRICFunction REL_FK_oduFunction-e2-linked-nearRTRICFunction  COLUMN
+REL_FK_oduFunction-f1-c-linked-ocucpFunction   REL_FK_oduFunction-f1-c-linked-ocucpFunction    COLUMN
+REL_FK_oduFunction-f1-u-linked-ocuupFunction   REL_FK_oduFunction-f1-u-linked-ocuupFunction    COLUMN
+REL_FK_oduFunction-o1-linked-smo       REL_FK_oduFunction-o1-linked-smo        COLUMN
+REL_FK_oruFunction-o1-linked-smo       REL_FK_oruFunction-o1-linked-smo        COLUMN
+REL_FK_oruFunction-ofhc-linked-oduFunction     REL_FK_oruFunction-ofhc-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhm-linked-oduFunction     REL_FK_oruFunction-ofhm-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhm-linked-smo     REL_FK_oruFunction-ofhm-linked-smo      COLUMN
+REL_FK_oruFunction-ofhs-linked-oduFunction     REL_FK_oruFunction-ofhs-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhu-linked-oduFunction     REL_FK_oruFunction-ofhu-linked-oduFunction      COLUMN
 REL_FK_provided-by-ocucpFunction       REL_FK_provided-by-ocucpFunction        COLUMN
 REL_FK_provided-by-oduFunction REL_FK_provided-by-oduFunction  COLUMN
 REL_FK_serviced-managedElement REL_FK_serviced-managedElement  COLUMN
@@ -384,13 +509,28 @@ REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION       REL_ID_MANAGEDELEMENT_MANAGES_OCUCPF
 REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION    REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION     COLUMN
 REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION      REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION       COLUMN
 REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION      REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION       COLUMN
+REL_ID_NEARRTRICFUNCTION_O1LINK_SMO    REL_ID_NEARRTRICFUNCTION_O1LINK_SMO     COLUMN
 REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT      REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT       COLUMN
 REL_ID_NRCELLDU_USES_NRSECTORCARRIER   REL_ID_NRCELLDU_USES_NRSECTORCARRIER    COLUMN
 REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY  REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY   COLUMN
 REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER  COLUMN
+REL_ID_OCUCPFUNCTION_O1LINK_SMO        REL_ID_OCUCPFUNCTION_O1LINK_SMO COLUMN
 REL_ID_OCUCPFUNCTION_PROVIDES_NRCELLCU REL_ID_OCUCPFUNCTION_PROVIDES_NRCELLCU  COLUMN
+REL_ID_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION    REL_ID_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION     COLUMN
+REL_ID_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION REL_ID_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION  COLUMN
+REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION  REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION   COLUMN
+REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION    REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION     COLUMN
+REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION       REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION        COLUMN
+REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION       REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION        COLUMN
+REL_ID_ODUFUNCTION_O1LINK_SMO  REL_ID_ODUFUNCTION_O1LINK_SMO   COLUMN
 REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU   REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU    COLUMN
 REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER    REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER     COLUMN
+REL_ID_ORUFUNCTION_O1LINK_SMO  REL_ID_ORUFUNCTION_O1LINK_SMO   COLUMN
+REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHMLINK_SMO        REL_ID_ORUFUNCTION_OFHMLINK_SMO COLUMN
+REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION COLUMN
 REL_ID_SECTOR_GROUPS_ANTENNAMODULE     REL_ID_SECTOR_GROUPS_ANTENNAMODULE      COLUMN
 REL_ID_SECTOR_GROUPS_NRCELLDU  REL_ID_SECTOR_GROUPS_NRCELLDU   COLUMN
 REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE   REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE    COLUMN
@@ -401,13 +541,28 @@ REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION REL_metadata_MANAGEDELEMENT_MA
 REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION      REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION       COLUMN
 REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION        REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION COLUMN
 REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION        REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION COLUMN
+REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO      REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO       COLUMN
 REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT        REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT COLUMN
 REL_metadata_NRCELLDU_USES_NRSECTORCARRIER     REL_metadata_NRCELLDU_USES_NRSECTORCARRIER      COLUMN
 REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY    REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY     COLUMN
 REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER   REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER    COLUMN
+REL_metadata_OCUCPFUNCTION_O1LINK_SMO  REL_metadata_OCUCPFUNCTION_O1LINK_SMO   COLUMN
 REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU   REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU    COLUMN
+REL_metadata_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION      REL_metadata_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION       COLUMN
+REL_metadata_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION   REL_metadata_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION    COLUMN
+REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION    REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION     COLUMN
+REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION  COLUMN
+REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION  COLUMN
+REL_metadata_ODUFUNCTION_O1LINK_SMO    REL_metadata_ODUFUNCTION_O1LINK_SMO     COLUMN
 REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU     REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU      COLUMN
 REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER      REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER       COLUMN
+REL_metadata_ORUFUNCTION_O1LINK_SMO    REL_metadata_ORUFUNCTION_O1LINK_SMO     COLUMN
+REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHMLINK_SMO  REL_metadata_ORUFUNCTION_OFHMLINK_SMO   COLUMN
+REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION   COLUMN
 REL_metadata_SECTOR_GROUPS_ANTENNAMODULE       REL_metadata_SECTOR_GROUPS_ANTENNAMODULE        COLUMN
 REL_metadata_SECTOR_GROUPS_NRCELLDU    REL_metadata_SECTOR_GROUPS_NRCELLDU     COLUMN
 UNIQUE_o-ran-smo-teiv-cloud_NFDeployment_REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT    UNIQUE_A5A8418B6BE911F281E6E2AA640D7D9F777471DC CONSTRAINT
@@ -423,10 +578,25 @@ UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER    U
 UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY        UNIQUE_A799EC9DA6624651081E1DA21B5F0C2D38F6A192 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  UNIQUE_D5D35955594A6EB48640425529F7DE44BED00B62 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_NearRTRICFunction_REL_ID_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION    UNIQUE_E020461673334EB824643649B6B31670FB064EC8 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_NearRTRICFunction_REL_ID_NEARRTRICFUNCTION_O1LINK_SMO        UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION    UNIQUE_2B7D3D49C1072E660047DE56843413CE628BF94A CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_OCUCPFUNCTION_O1LINK_SMO        UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_ID_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION   UNIQUE_7CAC79DC2584327FB2FE54F7D4E28B6FD7130AAD CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPUFUNCTION_REL_ID_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION        UNIQUE_F018C4A0E671663AF48B7ED051E9CBD4A5CFB4FE CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUUPFUNCTION_REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION  UNIQUE_DAA54343AD0BC202A93C9EFD22989A1F2F6D21ED CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_OCUUPFunction_REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION    UNIQUE_DF85FE7809B5527CB4A6028DD1A599DBBD5AF214 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION        UNIQUE_D570291C9E28A2AF73387B7A8B0F4C70130EEDB4 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION      UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_O1LINK_SMO    UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION        UNIQUE_4E6F008B82605A806EED04B2315A1FEE095A9241 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_O1LINK_SMO    UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION  UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION  UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHMLINK_SMO  UNIQUE_9967840981340189977B88AA138C3773F21122C7 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION  UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION  UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D CONSTRAINT
 aSide_AntennaModule    aSide_AntennaModule     COLUMN
 aSide_NFDeployment     aSide_NFDeployment      COLUMN
 aSide_NodeCluster      aSide_NodeCluster       COLUMN
@@ -489,9 +659,13 @@ o-ran-smo-teiv-ran_NRCellDU        o-ran-smo-teiv-ran_NRCellDU     TABLE
 o-ran-smo-teiv-ran_NRSectorCarrier     o-ran-smo-teiv-ran_NRSectorCarrier      TABLE
 o-ran-smo-teiv-ran_NearRTRICFunction   o-ran-smo-teiv-ran_NearRTRICFunction    TABLE
 o-ran-smo-teiv-ran_OCUCPFunction       o-ran-smo-teiv-ran_OCUCPFunction        TABLE
+o-ran-smo-teiv-ran_OCUCPUFUNCTION      o-ran-smo-teiv-ran_OCUCPUFUNCTION       TABLE
+o-ran-smo-teiv-ran_OCUUPFUNCTION       o-ran-smo-teiv-ran_OCUUPFUNCTION        TABLE
 o-ran-smo-teiv-ran_OCUUPFunction       o-ran-smo-teiv-ran_OCUUPFunction        TABLE
+o-ran-smo-teiv-ran_OCUUPUFUNCTION      o-ran-smo-teiv-ran_OCUUPUFUNCTION       TABLE
 o-ran-smo-teiv-ran_ODUFunction o-ran-smo-teiv-ran_ODUFunction  TABLE
 o-ran-smo-teiv-ran_ORUFunction o-ran-smo-teiv-ran_ORUFunction  TABLE
+o-ran-smo-teiv-ran_SMO o-ran-smo-teiv-ran_SMO  TABLE
 o-ran-smo-teiv-ran_Sector      o-ran-smo-teiv-ran_Sector       TABLE
 o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION     3C2E2CE7BDF8321BC824B6318B190690F58DBB82        TABLE
 o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION  TABLE
@@ -509,6 +683,9 @@ pLMNIdList  pLMNIdList      COLUMN
 plmnId plmnId  COLUMN
 positionWithinSector   positionWithinSector    COLUMN
 sectorId       sectorId        COLUMN
+siteLocation   siteLocation    COLUMN
+siteName       siteName        COLUMN
+smoName        smoName COLUMN
 totalTilt      totalTilt       COLUMN
 vendorName     vendorName      COLUMN
 verticalBeamWidth      verticalBeamWidth       COLUMN
@@ -525,13 +702,13 @@ o-ran-smo-teiv-common-yang-extensions     urn:o-ran:smo-teiv-common-yang-extensions
 o-ran-smo-teiv-common-yang-types       urn:o-ran:smo-teiv-common-yang-types    \N      []      2025-03-20      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgICBwcmVmaXggb3ItdGVpdi10eXBlczsKCiAgICBpbXBvcnQgaWV0Zi15YW5nLXR5cGVzIHsgcHJlZml4IHlhbmc7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiVG9wb2xvZ3kgYW5kIEludmVudG9yeSBjb21tb24gdHlwZXMgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyByZS11c2FibGUgZGF0YSB0eXBlcyB0aGF0IHRvcG9sb2d5IGFuZCBpbnZlbnRvcnkgbW9kZWxzCiAgICB3aWxsIGZyZXF1ZW50bHkgdXNlIGFzIHBhcnQgb2YgdHlwZXMgYW5kIHJlbGF0aW9uc2hpcHMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNC0yMDI1IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNS0wMy0yMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJQcm9wb3NlZCBtZXRhZGF0YSwgZGVjb3JhdG9ycyBhbmQgY2xhc3NpZmllcnMiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAxLjEuMTsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNS0wMi0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJSZW5hbWVkIEFkYXB0ZXIgRW50aXR5IHRvIE9yaWdpbiBFbnRpdHkuIEFkZGVkIEdlby1JbmZvcm1hdGlvbiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAyLjAwIjsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0xMC0xMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAxLjAwLjAwIjsKICAgIH0KCiAgICBncm91cGluZyBUb3BfR3JwX1R5cGUgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyBjb250YWluaW5nIHRoZSBrZXkgYXR0cmlidXRlIGNvbW1vbiB0byBhbGwgdHlwZXMuIEFsbCB0eXBlcyBNVVNUIHVzZSB0aGlzIGdyb3VwaW5nLiI7CgogICAgICAgIGxlYWYgaWQgewogICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRvcG9sb2d5IGVudGl0aWVzLiBSZXByZXNlbnRzIHRoZSBFbnRpdHkgSW5zdGFuY2UgSWRlbnRpZmllci4iOwogICAgICAgIH0KICAgIH0KCiAgICBncm91cGluZyBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIHsKICAgICAgICBkZXNjcmlwdGlvbiAiR3JvdXBpbmcgdG8gaWRlbnRpZnkgc291cmNlSWRzIG9uIGEgdG9wb2xvZ3kgZW50aXR5LiI7CgogICAgICAgIGxlYWYtbGlzdCBzb3VyY2VJZHMgewogICAgICAgICAgICB0eXBlIHNvdXJjZUlkOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICAgICAgb3JkZXJlZC1ieSB1c2VyOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMuCgogICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIGF0dGFjaGVkIHRvIFRvcG9sb2d5IEVudGl0eSBpbnN0YW5jZSwgb3V0c2lkZSBvZiB0aGUKICAgICAgICAgICAgICAgIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eSdzIGF0dHJpYnV0ZXMuIFRoaXMgaXMgZXhwb3NlZCB0byB0aGUKICAgICAgICAgICAgICAgIGNvbnN1bWVycyBhbmQgY2FuIG9ubHkgYmUgc2V0IGJ5IHRoZSByZXNwb25zaWJsZSBhZGFwdGVyLiBUaGlzCiAgICAgICAgICAgICAgICBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLCBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkCiAgICAgICAgICAgICAgICBpbiBhbnkgd2F5LCB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZS4iOwogICAgICAgIH0KICAgIH0KCiAgICBncm91cGluZyBPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwIHsKICAgICAgICBkZXNjcmlwdGlvbiAiR3JvdXBpbmcgdG8gaWRlbnRpZnkgc291cmNlSWRzIG9uIGEgdG9wb2xvZ3kgcmVsYXRpb25zaGlwLiI7CgogICAgICAgIGxlYWYtbGlzdCBzb3VyY2VJZHMgewogICAgICAgICAgICB0eXBlIHNvdXJjZUlkOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMjsKICAgICAgICAgICAgb3JkZXJlZC1ieSB1c2VyOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMgaW4gdGhlIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZQogICAgICAgICAgICAgICAgZGVjbGFyZWQgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBpcyBleHBvc2VkIHRvIHRoZQogICAgICAgICAgICAgICAgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkgdGhlIHJlc3BvbnNpYmxlIGFkYXB0ZXIuIFRoaXMKICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4KICAgICAgICAgICAgICAgIGFueSB3YXksIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLiI7CiAgICAgICAgfQogICAgfQoKICAgIHR5cGVkZWYgc291cmNlSWQgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJBbiBpZGVudGl0eSB0aGF0IHJlcHJlc2VudHMgYSBuYXRpdmUgaWRlbnRpZmllciBvZiBhIHRvcG9sb2d5IGVudGl0eS4iOwogICAgfQoKICAgIGdyb3VwaW5nIEdlb0luZm9ybWF0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBwaHlzaWNhbCBsb2NhdGlvbiB3aXRoIGFkZHJlc3MgYW5kIGNvb3JkaW5hdGVzLiI7CgogICAgICAgIGxlYWYgYWRkcmVzcyB7CiAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQWRkcmVzcyBvZiB0aGUgcGh5c2ljYWwgbG9jYXRpb24uIjsKICAgICAgICB9CgogICAgICAgIGNvbnRhaW5lciBjb29yZGluYXRlIHsKICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6R2VvQ29vcmRpbmF0ZUdycDsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkdlb2dyYXBoaWNhbCBjb29yZGluYXRlIGNvbnRhaW5pbmcgTGF0aXR1ZGUsIExvbmdpdHVkZSBhbmQgQWx0aXR1ZGUuIFJlZmVyZW5jZTogM0dQUCBUUyAyOC42MjIiOwogICAgICAgIH0KICAgIH0KCiAgICBjb250YWluZXIgbWV0YWRhdGEgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgYW4gZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpcnMuCgogICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IEVudGl0eSBvciBUb3BvbG9neSBSZWxhdGlvbiBpbnN0YW5jZSwKICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgZGVjbGFyZWQgVG9wb2xvZ3kgRW50aXR5IG9yIFRvcG9sb2d5IFJlbGF0aW9uc2hpcCdzCiAgICAgICAgICAgIGF0dHJpYnV0ZXMuIFRoaXMgaXMgZXhwb3NlZCB0byB0aGUgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkKICAgICAgICAgICAgVG9wb2xvZ3kgYW5kIEludmVudG9yeSBFeHBvc3VyZSBIYW5kbGluZyBhbmQgRGlzY292ZXJ5IGFuZCBSZWNvbmNpbGlhdGlvbiBBZGFwdGVyLgogICAgICAgICAgICBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwKICAgICAgICAgICAgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UuIjsKCiAgICAgICAgbGVhZiByZWxpYWJpbGl0eUluZGljYXRvciB7CiAgICAgICAgICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICAgICAgICAgICAgZW51bSBPSyB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkYXRhIGlzIGluIGFsaWdubWVudCB3aXRoIHRoZSBzb3VyY2Ugb2YgdHJ1dGgsCiAgICAgICAgICAgICAgICAgICAgYXMgZmFyIGFzIFRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgRXhwb3N1cmUgSGFuZGxpbmcgaXMgYXdhcmUuIjsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZW51bSBSRVNUT1JFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkYXRhIHdhcyByZXN0b3JlZCBmcm9tIGJhY2t1cCBhbmQgdGhlIHJlc3BvbnNpYmxlCiAgICAgICAgICAgICAgICAgICAgYWRhcHRlcnMgYXJlIGNoZWNraW5nIHRvIGVuc3VyZSB0aGUgZGF0YSBpcyBjdXJyZW50LiI7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVudW0gQURWSVNFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVudGl0eSBpbXBsaWNpdGx5IGNyZWF0ZWQgYnkgVG9wb2xvZ3kgYW5kIEludmVudG9yeSBFeHBvc3VyZQogICAgICAgICAgICAgICAgICAgIEhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSBub3QgYWxpZ25lZCB3aXRoIHRoZSBzb3VyY2Ugb2YgdHJ1dGguIjsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBsZWFmIGZpcnN0RGlzY292ZXJlZCB7CiAgICAgICAgICAgIHR5cGUgeWFuZzpkYXRlLWFuZC10aW1lOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGltZXN0YW1wIGluZGljYXRpbmcgd2hlbiBhbiBpbnN0YW5jZSBvZiBUb3BvbG9neSBFbnRpdHkgb3IgUmVsYXRpb24KICAgICAgICAgICAgd2FzIGZpcnN0IHJlcHJlc2VudGVkIGluIFRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgRXhwb3N1cmUgSGFuZGxpbmcgdmlhIGRpc2NvdmVyeS4iOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBsYXN0TW9kaWZpZWQgewogICAgICAgICAgICB0eXBlIHlhbmc6ZGF0ZS1hbmQtdGltZTsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRpbWVzdGFtcCBpbmRpY2F0aW5nIHdoZW4gYW4gaW5zdGFuY2Ugb2YgVG9wb2xvZ3kgRW50aXR5IG9yIFJlbGF0aW9uCiAgICAgICAgICAgIHdhcyBsYXN0IHVwZGF0ZWQgKGV4Y2x1ZGluZyBjbGFzc2lmaWVycyBhbmQgZGVjb3JhdG9ycykuIjsKICAgICAgICB9CiAgICB9CgogICAgY29udGFpbmVyIGRlY29yYXRvcnMgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IGZvciBhcHBsaWNhdGlvbnMgd2lzaGluZwogICAgICAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGRlY29yYXRvcnMuIFRoaXMgaXMgZG9uZSB2aWEgYXVnbWVudGF0aW9ucy4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpci4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CiAgICB9CgogICAgbGVhZi1saXN0IGNsYXNzaWZpZXJzIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiQ29uc3VtZXIgZGVmaW5lZCB0YWdzIHRvIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnNoaXBzLgoKICAgICAgICAgICAgVGhpcyBpcyBhIGNvbnN1bWVyIGRhdGEgYW5kIGNhbiBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgVG9wb2xvZ3kgUmVsYXRpb24gaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eQogICAgICAgICAgICBvciBUb3BvbG9neSBSZWxhdGlvbnNoaXAncyBhdHRyaWJ1dGVzLiBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsCiAgICAgICAgICAgIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICBvdGhlcndpc2UuIjsKCiAgICAgICAgdHlwZSBpZGVudGl0eXJlZiB7IGJhc2UgY2xhc3NpZmllcjsgfQogICAgfQoKICAgIGlkZW50aXR5IGNsYXNzaWZpZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY2xhc3NpZmllciBpcyB1c2VkIGFzIGEgYmFzZSB0byBwcm92aWRlIGFsbCBjbGFzc2lmaWVycwogICAgICAgIHdpdGggaWRlbnRpdHkuICI7CiAgICB9Cn0=
 o-ran-smo-teiv-equipment       urn:o-ran:smo-teiv-equipment    EQUIPMENT       []      2024-10-21      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gRXF1aXBtZW50IGRvbWFpbiwgd2hpY2ggaXMgbW9kZWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwKICAgIGxvY2F0aW9uIG9mIGVxdWlwbWVudCBzdWNoIGFzIGFudGVubmFzIGFzc29jaWF0ZWQgd2l0aCBhIGNlbGwvY2FycmllcgogICAgYW5kIHRoZWlyIHJlbGV2YW50IHByb3BlcnRpZXMgZS5nLiB0aWx0LCBtYXggcG93ZXIgZXRjLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMjEiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiRGVwcmVjYXRlIEFudGVubmFNb2R1bGUgYXR0cmlidXRlIGFudGVubmFCZWFtV2lkdGguCiAgICAgICAgVG8gYmUgcmVwbGFjZWQgYnkgaG9yaXpvbnRhbEJlYW1XaWR0aCBhbmQgdmVydGljYWxCZWFtV2lkdGguIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC42LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDgiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgYXppbXV0aCBhdHRyaWJ1dGUgZm9yIEFudGVubmFNb2R1bGUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmdzLCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIG9yIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAKICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB0b3BvbG9neSBvYmplY3RzLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBFUVVJUE1FTlQ7CgogICAgbGlzdCBBbnRlbm5hTW9kdWxlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQW4gQW50ZW5uYSBNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYXNwZWN0IG9mIGFuCiAgICAgICAgYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwgaWRlbnRpZmllci4gVGhpcwogICAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubwogICAgICAgICAgICAgICAgb3BlcmF0aW9uYWwgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBtZWNoYW5pY2FsQW50ZW5uYUJlYXJpbmcgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgYmVhcmluZyBvbiBhbnRlbm5hIHN1YnVuaXQgd2hlcmUgYW50ZW5uYQogICAgICAgICAgICAgICAgdW5pdCBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZml4ZWQgYW50ZW5uYSB0aWx0IG9mIHRoZSBpbnN0YWxsYXRpb24sIGRlZmluZWQKICAgICAgICAgICAgICAgIGFzIHRoZSBpbmNsaW5hdGlvbiBvZiB0aGUgYW50ZW5uYSBlbGVtZW50IHJlc3BlY3QgdG8gdGhlCiAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBwbGFuZS4gSXQgaXMgYSBzaWduZWQgdmFsdWUuIFBvc2l0aXZlIGluZGljYXRlcwogICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHBvc2l0aW9uV2l0aGluU2VjdG9yIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIHVuaXQgcG9zaXRpb24gd2l0aGluIHNlY3Rvci4gVGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubyBvcGVyYXRpb25hbAogICAgICAgICAgICAgICAgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiB0b3RhbFRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRvdGFsIGFudGVubmEgZWxldmF0aW9uIGluY2x1ZGluZyB0aGUgaW5zdGFsbGVkCiAgICAgICAgICAgICAgICB0aWx0IGFuZCB0aGUgdGlsdCBhcHBsaWVkIGJ5IHRoZSBSZW1vdGUgRWxlY3RyaWNhbAogICAgICAgICAgICAgICAgVGlsdCAoUkVUKS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlbGVjdHJpY2FsQW50ZW5uYVRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVsZWN0cmljYWxseS1jb250cm9sbGVkIHRpbHQgb2YgbWFpbiBiZWFtIG1heGltdW0KICAgICAgICAgICAgICAgIHdpdGggcmVzcGVjdCB0byBkaXJlY3Rpb24gb3J0aG9nb25hbCB0byBhbnRlbm5hIGVsZW1lbnQKICAgICAgICAgICAgICAgIGF4aXMgKHNlZSAzR1BQIFRTIDI1LjQ2NikuIFZhbHVlIGlzIHNpZ25lZDsgdGlsdCBkb3duIGlzCiAgICAgICAgICAgICAgICBwb3NpdGl2ZSwgdGlsdCB1cCBpcyBuZWdhdGl2ZS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGFudGVubmFCZWFtV2lkdGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIE1lYXN1cmVkIGluCiAgICAgICAgICAgICAgICBkZWdyZWVzLgoKICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6IFNpbmNlIDI0LlE0LiBSZXBsYWNlZCBieSBBbnRlbm5hTW9kdWxlOjpob3Jpem9udGFsQmVhbVdpZHRoCiAgICAgICAgICAgICAgICBhbmQgQW50ZW5uYU1vZHVsZTo6dmVydGljYWxCZWFtV2lkdGguIFBsYW5uZWQgdG8gYmUgcmVtb3ZlZC4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgaG9yaXpvbnRhbEJlYW1XaWR0aCAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHZlcnRpY2FsQmVhbVdpZHRoICAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIHZlcnRpY2FsIHBsYW5lLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhemltdXRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgdmFsdWUgb2YgdGhlIGF6aW11dGggb2YgdGhlIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBlcXVpcG1lbnQgY2FuIGJlCiAgICAgICAgaW5zdGFsbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9JTlNUQUxMRURfQVRfU0lURSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2l0ZSB0eXBlLgogICAgICAgICAgICBUaGUgU2l0ZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSB0aGUgQW50ZW5uYU1vZHVsZSBpcyBpbnN0YWxsZWQuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGF0IG9uZSBTaXRlLgogICAgICAgICAgICBBIFNpdGUgaW5zdGFuY2UgY2FuIGhhdmUgbWFueSBpbnN0YWxsZWQgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGluc3RhbGxlZC1hdC1zaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSB3aGVyZSBBbnRlbm5hIE1vZHVsZSBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
 o-ran-smo-teiv-oam     urn:o-ran:smo-teiv-oam  OAM     []      2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHsgcHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTyZNIGRvbWFpbiwgd2hpY2ggYXJlIGludGVuZGVkIHRvIHJlcHJlc2VudCBtYW5hZ2VtZW50IHN5c3RlbXMKICAgIGFuZCBtYW5hZ2VtZW50IGludGVyZmFjZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gT0FNOwoKICAgIGxpc3QgTWFuYWdlZEVsZW1lbnQgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE1hbmFnZWQgRWxlbWVudCAoTUUpIGlzIGEgbm9kZSBpbnRvIGEgdGVsZWNvbW11bmljYXRpb24KICAgICAgICBuZXR3b3JrIHByb3ZpZGluZyBzdXBwb3J0IGFuZC9vciBzZXJ2aWNlIHRvIHN1YnNjcmliZXJzLiBBbiBNRQogICAgICAgIGNvbW11bmljYXRlcyB3aXRoIGEgbWFuYWdlciBhcHBsaWNhdGlvbiAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKICAgICAgICBvdmVyIG9uZSBvciBtb3JlIGludGVyZmFjZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGJlaW5nIG1vbml0b3JlZAogICAgICAgIGFuZC9vciBjb250cm9sbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgfQp9
-o-ran-smo-teiv-physical        urn:o-ran:smo-teiv-physical     PHYSICAL        []      2025-02-10      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXBoeXNpY2FsIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXBoeXNpY2FsIjsKICBwcmVmaXggb3ItdGVpdi1waHlzaWNhbDsKCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHtwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICBvcmdhbml6YXRpb24gIk8tUkFOIEFsbGlhbmNlIjsKCiAgY29udGFjdAogICAgInd3dy5vLXJhbi5vcmciOwoKICBkZXNjcmlwdGlvbgogICAgIlBoeXNpY2FsIGRvbWFpbiB0b3BvbG9neSBtb2RlbC4KICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBQaHlzaWNhbCBkb21haW4uCgogICAgQ29weXJpZ2h0IDIwMjUgdGhlIE8tUkFOIEFsbGlhbmNlLgoKICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgJ0FTIElTJwogICAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICAgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKICAgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKICAgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCiAgICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKICAgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCiAgICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQogICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoKICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGFib3ZlIGRpc2NsYWltZXIuCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgYWJvdmUgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICAqIE5laXRoZXIgdGhlIE1lbWJlcnMgb2YgdGhlIE8tUkFOIEFsbGlhbmNlIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4iOwoKICByZXZpc2lvbiAiMjAyNS0wMi0xMCIgewogICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMi4wMCI7CiAgfQoKICBvci10ZWl2LXlleHQ6ZG9tYWluIFBIWVNJQ0FMOwoKICBsaXN0IFBoeXNpY2FsQXBwbGlhbmNlIHsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKCiAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgUGh5c2ljYWwgQXBwbGlhbmNlIGluIHRoZSBQaHlzaWNhbCBkb21haW4iOwoKICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgUGh5c2ljYWwgQXBwbGlhbmNlIGF0dHJpYnV0ZXMiOwogICAgICBsZWFmIHZlbmRvck5hbWUgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIHRoZSBwaHlzaWNhbCBhcHBsaWFuY2UgdmVuZG9yIjsKICAgICAgfQoKICAgICAgbGVhZiBtb2RlbE5hbWUgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIHRoZSBwaHlzaWNhbCBhcHBsaWFuY2UgbW9kZWwiOwogICAgICB9CiAgICB9CiAgfQoKICBsaXN0IFNpdGUgewogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAga2V5IGlkOwogICAgCiAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgU2l0ZSBpbiB0aGUgUGh5c2ljYWwgZG9tYWluIjsKICAgIGNvbnRhaW5lciBzaXRlTG9jYXRpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRhdGlvbiBvZiBwaHlzaWNhbCBzaXRlIGxvY2F0aW9uIjsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6R2VvSW5mb3JtYXRpb247CiAgICB9CiAgICBsZWFmIHNpdGVOYW1lIHsKICAgICAgdHlwZSBzdHJpbmc7CiAgICAgIGRlc2NyaXB0aW9uICJIdW1hbiByZWFkYWJsZSBuYW1lIG9mIHRoZSBwaHlzaWNhbCBzaXRlIGFzIGlkZW50aWZpZWQgYnkgdGhlIG1vYmlsZSBuZXR3b3JrIG9wZXJhdG9yIjsKICAgIH0KICB9CgogIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgUEhZU0lDQUxBUFBMSUFOQ0VfSU5TVEFMTEVEQVRfU0lURSB7IC8vIDEuLm4gdG8gMS4ubQogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAga2V5IGlkOwogICAgZGVzY3JpcHRpb24gIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgUGh5c2ljYWxBcHBsaWFuY2UgdHlwZS4KICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2l0ZSB0eXBlLiI7CgogICAgbGVhZi1saXN0IGluc3RhbGxpbmctc2l0ZSB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJTaXRlIGluc3RhbGxpbmcgUGh5c2ljYWxBcHBsaWFuY2UuIjsKICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgUGh5c2ljYWxBcHBsaWFuY2U7IAogICAgfQoKICAgIGxlYWYtbGlzdCBpbnN0YWxsZWQtcGh5c2ljYWxBcHBsaWFuY2UgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWxBcHBsaWFuY2UgaW5zdGFsbGVkIGF0IFNpdGUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgU2l0ZTsgIAogICAgfQogIH0KfQo=
-o-ran-smo-teiv-ran     urn:o-ran:smo-teiv-ran  RAN     []      2025-03-20      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAiUkFOIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICAgICAgUkFOIExvZ2ljYWwgZG9tYWluLCB3aGljaCByZXByZXNlbnRzIHRoZSBmdW5jdGlvbmFsIGNhcGFiaWxpdHkKICAgICAgICBvZiB0aGUgZGVwbG95ZWQgUkFOIHRoYXQgYXJlIHJlbGV2YW50IHRvIHJBcHBzIHVzZSBjYXNlcy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNSBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI1LTAzLTIwIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlByb3Bvc2VkIGVudGl0aWVzLCByZWxhdGlvbnNoaXBzIGFuZCBhdHRyaWJ1dGVzIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4xLjE7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjUtMDItMTQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmV2aXNpb24gdG8gcmVuYW1lIGFkYXB0ZXIgZ3JvdXAgdG8gb3JpZ2luIGdyb3VwLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAyLjAwIjsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0xMC0xMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAxLjAwIjsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJBTjsKCiAgICBsaXN0IE9EVUZ1bmN0aW9uIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgTy1EVSBpcyBhbiBPLVJBTiBORiBpbiB0aGUgTy1SQU4gQXJjaGl0ZWN0dXJlLiBBbiBPLURVLCBjb21iaW5lZCB3aXRoCiAgICAgICAgb25lIG9yIG1vcmUgTy1SVShzKSBjb25uZWN0ZWQgdG8gaXQsIHN1cHBvcnRzIGFuZCBpcyBmdWxseSBjb21wYXRpYmxlCiAgICAgICAgd2l0aCB0aGUgZnVuY3Rpb25zIG9mIGEgZ05CLURVIGFzIGRlZmluZWQgYnkgM0dQUCBUUyAzOC40MDEuCgogICAgICAgIFRoZSBPLURVIHRlcm1pbmF0ZXMgdGhlIEUyIGFuZCB0aGUgRjEgaW50ZXJmYWNlLCBhbmQgdGhlIE9wZW4gRnJvbnRoYXVsCiAgICAgICAgaW50ZXJmYWNlIChhbHNvIGtub3duIGFzIExMUyBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgdGhlIFJMQywgTUFDLCBhbmQKICAgICAgICBIaWdoLVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIHRoZSBVRS4KCiAgICAgICAgTm90ZTogTy1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLURVIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLURVIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5IHRoZQogICAgICAgIElPQyBHTkJEVUZ1bmN0aW9uIGFzIHNwZWNpZmllZCBpbiAzR1BQIE5SIE5STSBtb2RlbCwgYXMgcGVyIDNHUFAgVFMgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKSBhdHRyaWJ1dGVzIjsKCiAgICAgICAgICAgIGxlYWYgZ05CRFVJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRFUgd2l0aGluIGEgZ05vZGVCIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGRVcExNTklkIHsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdXNlZCBhcyBwYXJ0IG9mIFBNIEV2ZW50cyBkYXRhIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVUNQRnVuY3Rpb24gewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIENlbnRyYWwgVW5pdCDigJMgQ29udHJvbCBQbGFuZSAoTy1DVS1DUCkKCiAgICAgICAgVGhlIE8tQ1UtQ1AgdGVybWluYXRlcyB0aGUgTkctYywgWDItYywgWG4tYywgRjEtYywgYW5kIEUxIGludGVyZmFjZXMgYXMKICAgICAgICB3ZWxsIGFzIHRoZSBSUkMgYW5kIFBEQ1AgKGZvciBTUkIpIHByb3RvY29scyB0b3dhcmRzIHRoZSBVRSBhcyBkZWZpbmVkIGJ5CiAgICAgICAgM0dQUCBUUyAzOC40MDEuIFRoZSBPLUNVLUNQIHRlcm1pbmF0ZXMgRTIgaW50ZXJmYWNlIHRvIE5lYXItUlQgUklDIGFuZCBpcwogICAgICAgIG1hbmFnZWQgdmlhIE8xIGludGVyZmFjZSBieSB0aGUgU01PLgoKICAgICAgICBOb3RlOiBPLUNVLUNQIGlzIGEgY29uY3JldGUgY2xhc3MgdGhhdCBleHRlbmRzIHRoZSBPUkFOTmV0d29ya0Z1bmN0aW9uCiAgICAgICAgYWJzdHJhY3QgY2xhc3MuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHRoZQogICAgICAgIE8tQ1UtQ1Agb2JqZWN0LgogICAgICAgICAgICAKICAgICAgICBUaGUgbWFuYWdlbWVudCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIE8tQ1UtQ1AgTy1SQU4gTkYgaXMgcmVwcmVzZW50ZWQgYnkKICAgICAgICB0aGUgSU9DIEdOQkNVQ1BGdW5jdGlvbiBhcyBzcGVjaWZpZWQgaW4gM0dQUCBOUiBOUk0gbW9kZWwsIGFzIHBlciAzR1BQIFRTCiAgICAgICAgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBDZW50cmFsIFVuaXQg4oCTIENvbnRyb2wgUGxhbmUgKE8tQ1UtQ1ApIGF0dHJpYnV0ZXMiOwogICAgICAgICAgICBsZWFmIGdOQkNVTmFtZSB7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwTE1OSWQgewogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB0byBiZSB1c2VkIGFzIHBhcnQgb2YgZ2xvYmFsIFJBTiBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVVVQRnVuY3Rpb24geyAgICAgICAgCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IFVzZXIgUGxhbmUgKE8tQ1UtVVApCgogICAgICAgIFRoZSBPLUNVLVVQIHRlcm1pbmF0ZXMgdGhlIE5HLXUsIFgyLXUsIFhuLXUsIEYxLXUsIGFuZCBFMSBpbnRlcmZhY2VzIGFzCiAgICAgICAgd2VsbCBhcyB0aGUgUERDUCBhbmQgU0RBUCBwcm90b2NvbHMgdG93YXJkcyB0aGUgVUUgYXMgZGVmaW5lZCBieSAzR1BQIFRTCiAgICAgICAgMzguNDAxLiBUaGUgTy1DVS1VUCB0ZXJtaW5hdGVzIEUyIGludGVyZmFjZSB0byBOZWFyLVJUIFJJQyBhbmQgaXMgbWFuYWdlZAogICAgICAgIHZpYSBPMSBpbnRlcmZhY2UgYnkgdGhlIFNNTy4KCiAgICAgICAgTm90ZTogTy1DVS1VUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLUNVLVVQIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLUNVLVVQIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5CiAgICAgICAgdGhlIElPQyBHTkJDVVVQRnVuY3Rpb24gYXMgc3BlY2lmaWVkIGluIDNHUFAgTlIgTlJNIG1vZGVsLCBhcyBwZXIgM0dQUCBUUwogICAgICAgIDI4LjU0MSI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gQ2VudHJhbCBVbml0IOKAkyBVc2VyIFBsYW5lIChPLUNVLVVQKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGlzdCBwTE1OSWRMaXN0IHsKICAgICAgICAgICAgICAgIGtleSAibWNjIG1uYyI7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiB1bmlxdWUgaWRlbnRpdGllcyBmb3IgUExNTiI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJOZWFyLVJlYWwtVGltZSBSQU4gSW50ZWxsaWdlbnQgQ29udHJvbGxlciAoTmVhci1SVCBSSUMpLgoKICAgICAgICBOZWFyLVJUIFJJQyBpcyBhbiBPLVJBTiBORiB0aGF0IGVuYWJsZXMgbmVhciByZWFsLXRpbWUgY29udHJvbCBhbmQKICAgICAgICBvcHRpbWl6YXRpb24gb2Ygc2VydmljZXMgYW5kIHJlc291cmNlcyBvZiBFMiBOb2RlcyB2aWEgZmluZS1ncmFpbmVkIGRhdGEKICAgICAgICBjb2xsZWN0aW9uIGFuZCBhY3Rpb25zIG92ZXIgdGhlIEUyIGludGVyZmFjZSB3aXRoIGNvbnRyb2wgbG9vcHMgaW4gdGhlCiAgICAgICAgb3JkZXIgb2YgMTAgbXMtMXMuIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTmVhci1SZWFsLVRpbWUgUkFOIEludGVsbGlnZW50IENvbnRyb2xsZXIgKE5lYXItUlQgUklDKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5lYXJSdFJpY0lkIHsKICAgICAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGlmaWVyIG9mIE5lYXItUlQgUklDIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT1JVRnVuY3Rpb24gewoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIFJhZGlvIFVuaXQgKE8tUlUpCgogICAgICAgIFRoZSBPLVJVIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIGludGVyZmFjZSAoYWxzbyBrbm93biBhcyBMTFMKICAgICAgICBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgTG93LVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIAogICAgICAgIHRoZSBVRS4gVGhpcyBpcyBkZXBsb3llZCBhcyBhIFBORi4KCiAgICAgICAgVGhlIE8tUlUgdGVybWluYXRlcyB0aGUgT3BlbiBGcm9udGhhdWwgTS1QbGFuZSBpbnRlcmZhY2UgdG93YXJkcyB0aGUgTy1EVQogICAgICAgIGFuZCBTTU8uIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gUmFkaW8gVW5pdCAoTy1SVSkgYXR0cmlidXRlcyI7CiAgICAgICAgICAgIGxlYWYgb3J1SWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiB0aGUgTy1SVSBhcyBkaXNjb3ZlcmVkIGZyb20gdGhlIHNvdXJjZSBkb21haW4gYmFzZWQgb24gTS1QbGFuZSBhcmNoaXRlY3R1cmUgbW9kZWwiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsQ1UgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1DVS4KCiAgICAgICAgNUcgTlIgaXMgYSBuZXcgcmFkaW8gYWNjZXNzIHRlY2hub2xvZ3kgKFJBVCkgZGV2ZWxvcGVkIGJ5IDNHUFAgZm9yCiAgICAgICAgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKSBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlCiAgICAgICAgZ2xvYmFsIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgNUcgTlIgaGFzIHN5bmNocm9uaXphdGlvbiBzaWduYWwgdGhhdCBpcyBrbm93biBhcyBQcmltYXJ5CiAgICAgICAgU3luY2hyb25pemF0aW9uIFNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5IFN5bmNocm9uaXphdGlvbgogICAgICAgIFNpZ25hbCAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUgc3BlY2lmaWMgdG8gTlIgcGh5c2ljYWwgbGF5ZXIgYW5kCiAgICAgICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5IFVFIGZvciBkb3dubGluawogICAgICAgIHN5bmNocm9uaXphdGlvbjogUFNTIHByb3ZpZGVzIFJhZGlvIEZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QKICAgICAgICBTeW1ib2wgaW4gYSBSYWRpbyBmcmFtZSkgU1NTIHByb3ZpZGVzIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZgogICAgICAgIDFzdCBTeW1ib2wgaW4gYSBTdWJmcmFtZSkgUGh5c2ljYWwgTGF5ZXIgQ2VsbCBJRCAoUENJKSBpbmZvcm1hdGlvbgogICAgICAgIHVzaW5nIGJvdGggUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcGxtbklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIElEIGZvciBOUiBDR0kuIElmIGVtcHR5LAogICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uOjpwTE1OSWQgaXMgdXNlZCBmb3IgUExNTiBJRCBpbiBOUiBDR0kiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItRFUuCgogICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikgbW9iaWxlIG5ldHdvcmsuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHRoZQogICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgIFN5bmNocm9uaXphdGlvbiBzaWduYWwgKFBTUykgYW5kIFNlY29uZGFyeSBTeW5jaHJvbml6YXRpb24gc2lnbmFsCiAgICAgICAgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZCBwcm92aWRlCiAgICAgICAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0CiAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICB1c2luZyBib3RoIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICBjZWxsIGluIFBMTU4uIFVzZWQgdG9nZXRoZXIgd2l0aCBnTkJJZCB0byBmb3JtIE5DSS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUlNlY3RvckNhcnJpZXIgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIE5SIFNlY3RvciBDYXJyaWVyIG9iamVjdCBwcm92aWRlcyB0aGUgYXR0cmlidXRlcyBmb3IKICAgICAgICBkZWZpbmluZyB0aGUgbG9naWNhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBjYXJyaWVyIChjZWxsKSBpbiBhCiAgICAgICAgc2VjdG9yLiBBIHNlY3RvciBpcyBhIGNvdmVyYWdlIGFyZWEgYXNzb2NpYXRlZCB3aXRoIGEgYmFzZSBzdGF0aW9uCiAgICAgICAgaGF2aW5nIGl0cyBvd24gYW50ZW5uYXMsIHJhZGlvIHBvcnRzLCBhbmQgY29udHJvbCBjaGFubmVscy4gVGhlCiAgICAgICAgY29uY2VwdCBvZiBzZWN0b3JzIHdhcyBkZXZlbG9wZWQgdG8gaW1wcm92ZSBjby1jaGFubmVsIGludGVyZmVyZW5jZQogICAgICAgIGluIGNlbGx1bGFyIHN5c3RlbXMsIGFuZCBtb3N0IHdpcmVsZXNzIHN5c3RlbXMgdXNlIHRocmVlIHNlY3RvcgogICAgICAgIGNlbGxzLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBhcmZjbkRMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBGcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIGRvd25saW5rIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYXJmY25VTCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gZnJlcXVlbmN5IENoYW5uZWwgTnVtYmVyCiAgICAgICAgICAgICAgICAoTlItQVJGQ04pIGZvciB1cGxpbmsuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGZyZXF1ZW5jeVVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSRiBSZWZlcmVuY2UgRnJlcXVlbmN5IG9mIHVwbGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYlNDaGFubmVsQndETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQlMgQ2hhbm5lbCBiYW5kd2lkdGggaW4gTUh6IGZvciBkb3dubGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgTU8gc2VydmVzIGFzIGEgbWFwcGluZyBiZXR3ZWVuIHRoZSBjZWxsIGFuZCB0aGUgUkJTCiAgICAgICAgZXF1aXBtZW50IHVzZWQgdG8gcHJvdmlkZSBjb3ZlcmFnZSBpbiBhIGNlcnRhaW4gZ2VvZ3JhcGhpY2FsIGFyZWEuCiAgICAgICAgVGhlIE1PIGFsc28gY29udHJvbHMgdGhlIG1heGltdW0gb3V0cHV0IHBvd2VyIG9mIHRoZSBzZWN0b3IuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmLWxpc3QgZVV0cmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBMVEUgZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBnZXJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgR0VSQU4gZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBuUkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgTlIgZnJlcXVlbmN5IGJhbmRzIGFzc29jaWF0ZWQgaGFyZHdhcmUKICAgICAgICAgICAgICAgIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgU2VjdG9yIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIkEgZ3JvdXAgb2YgY28tbG9jYXRlZCBDZWxscyB0aGF0IGhhdmUgYSBzaGFyZWQKICAgICAgICBjb3ZlcmFnZSBhcmVhLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUgc2VjdG9yJ3MKICAgICAgICAgICAgICAgIGRpc2NvdmVyeSBtZWNoYW5pc20uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CgogICAgICAgICAgICBsZWFmIGF6aW11dGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkF2ZXJhZ2UgdmFsdWUgb2YgdGhlIGF6aW11dGhzIG9mIHRoZSBjZWxscwogICAgICAgICAgICAgICAgY29tcHJpc2luZyB0aGUgc2VjdG9yLCBkZXRlcm1pbmVkIGR1cmluZyBzZWN0b3IgZGlzY292ZXJ5LiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9EVUZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTERVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJDZWxsRFUgdHlwZS4KICAgICAgICAgICAgVGhlIE9EVUZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIERVIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQSBPRFVGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBieSBhbiBPRFVGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fUFJPVklERVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIHR5cGUuCiAgICAgICAgICAgIFRoZSBPRFVGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBEVSBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJTZWN0b3JDYXJyaWVyLgogICAgICAgICAgICBBIE9EVUZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgYnkgYW4gT0RVRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHByb3ZpZGVkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ1VDUEZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTENVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxDVSB0eXBlLgogICAgICAgICAgICBUaGUgT0NVQ1BGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBDVS1DUCBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJDZWxsQ1UuCiAgICAgICAgICAgIEEgT0NVQ1BGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbENVLgogICAgICAgICAgICBBbiBOUkNlbGxDVSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFuIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJDZWxsQ3UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBwcm92aWRlcyBOUiBDZWxsLUNVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9jdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1DVSBwcm92aWRlZCBieSBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxDVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUkNFTExEVV9VU0VTX05SU0VDVE9SQ0FSUklFUiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SU2VjdG9yQ2FycmllciB0eXBlLgogICAgICAgICAgICBUaGUgTlJDZWxsRFUgcmVwcmVzZW50cyB0aGUgY2VsbCB0aGF0IHVzZXMgdGhlIE5SU2VjdG9yQ2Fycmllci4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIHVzZSBtYW55IE5SU2VjdG9yQ2FycmllcnMuCiAgICAgICAgICAgIEFuIE5SU2VjdG9yQ2FycmllciBpbnN0YW5jZSBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBOUkNlbGxEVS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLW5yU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHVzZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5SQ2VsbERVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHVzZWQtYnktbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgdXNlZCBieSBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUlNFQ1RPUkNBUlJJRVJfVVNFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUlNlY3RvckNhcnJpZXIgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eSB0eXBlLgogICAgICAgICAgICBUaGUgTlJTZWN0b3JDYXJyaWVyIHJlcHJlc2VudHMgdGhlIGNhcnJpZXIgdGhhdCB1c2VzIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eS4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIGNhbiB1c2Ugb25seSBvbmUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFDYXBhYmlsaXR5IGluc3RhbmNlIGNhbiBiZSB1c2VkIGJ5IG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19OUkNFTExEVSB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBTZWN0b3IgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEEgU2VjdG9yIGluc3RhbmNlIGNhbiBncm91cCBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
+o-ran-smo-teiv-physical        urn:o-ran:smo-teiv-physical     PHYSICAL        []      2025-04-14      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXBoeXNpY2FsIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXBoeXNpY2FsIjsKICBwcmVmaXggb3ItdGVpdi1waHlzaWNhbDsKCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHtwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICBvcmdhbml6YXRpb24gIk8tUkFOIEFsbGlhbmNlIjsKCiAgY29udGFjdAogICAgInd3dy5vLXJhbi5vcmciOwoKICBkZXNjcmlwdGlvbgogICAgIlBoeXNpY2FsIGRvbWFpbiB0b3BvbG9neSBtb2RlbC4KICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBQaHlzaWNhbCBkb21haW4uCgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjUgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCiAgICBDb3B5cmlnaHQgMjAyNSB0aGUgTy1SQU4gQWxsaWFuY2UuCgogICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAnQVMgSVMnCiAgICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAgICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogICAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQogICAgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgogICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKICAgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwogICAgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KICAgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCiAgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQogICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgYWJvdmUgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBhYm92ZSBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgICogTmVpdGhlciB0aGUgTWVtYmVycyBvZiB0aGUgTy1SQU4gQWxsaWFuY2Ugbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiI7CgogIHJldmlzaW9uICIyMDI1LTA0LTE0IiB7CiAgICBkZXNjcmlwdGlvbiAiQWRkZWQgYXR0cmlidXRlcyBjb250YWluZXIgdG8gU2l0ZSI7CiAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4xLjA7CiAgfQoKICByZXZpc2lvbiAiMjAyNS0wMi0xMCIgewogICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMi4wMCI7CiAgfQoKICBvci10ZWl2LXlleHQ6ZG9tYWluIFBIWVNJQ0FMOwoKICBsaXN0IFBoeXNpY2FsQXBwbGlhbmNlIHsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKCiAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgUGh5c2ljYWwgQXBwbGlhbmNlIGluIHRoZSBQaHlzaWNhbCBkb21haW4iOwoKICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgUGh5c2ljYWwgQXBwbGlhbmNlIGF0dHJpYnV0ZXMiOwogICAgICBsZWFmIHZlbmRvck5hbWUgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIHRoZSBwaHlzaWNhbCBhcHBsaWFuY2UgdmVuZG9yIjsKICAgICAgfQoKICAgICAgbGVhZiBtb2RlbE5hbWUgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIHRoZSBwaHlzaWNhbCBhcHBsaWFuY2UgbW9kZWwiOwogICAgICB9CiAgICB9CiAgfQoKICBsaXN0IFNpdGUgewogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAga2V5IGlkOwoKICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIHRoZSBTaXRlIGluIHRoZSBQaHlzaWNhbCBkb21haW4iOwoKICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgY29udGFpbmVyIHNpdGVMb2NhdGlvbiB7CiAgICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50YXRpb24gb2YgcGh5c2ljYWwgc2l0ZSBsb2NhdGlvbiI7CiAgICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6R2VvSW5mb3JtYXRpb247CiAgICAgIH0KICAgICAgbGVhZiBzaXRlTmFtZSB7CiAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgZGVzY3JpcHRpb24gIkh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgdGhlIHBoeXNpY2FsIHNpdGUgYXMgaWRlbnRpZmllZCBieSB0aGUgbW9iaWxlIG5ldHdvcmsgb3BlcmF0b3IiOwogICAgICB9CiAgICB9CiAgfQoKICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMQVBQTElBTkNFX0lOU1RBTExFREFUX1NJVEUgeyAvLyAxLi5uIHRvIDEuLm0KICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKICAgIGRlc2NyaXB0aW9uICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFBoeXNpY2FsQXBwbGlhbmNlIHR5cGUuCiAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNpdGUgdHlwZS4iOwoKICAgIGxlYWYtbGlzdCBpbnN0YWxsaW5nLXNpdGUgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSBpbnN0YWxsaW5nIFBoeXNpY2FsQXBwbGlhbmNlLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIFBoeXNpY2FsQXBwbGlhbmNlOyAKICAgIH0KCiAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLXBoeXNpY2FsQXBwbGlhbmNlIHsKICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgZGVzY3JpcHRpb24gIlBoeXNpY2FsQXBwbGlhbmNlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7ICAKICAgIH0KICB9Cn0K
+o-ran-smo-teiv-ran     urn:o-ran:smo-teiv-ran  RAN     []      2025-04-01      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAiUkFOIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICAgICAgUkFOIExvZ2ljYWwgZG9tYWluLCB3aGljaCByZXByZXNlbnRzIHRoZSBmdW5jdGlvbmFsIGNhcGFiaWxpdHkKICAgICAgICBvZiB0aGUgZGVwbG95ZWQgUkFOIHRoYXQgYXJlIHJlbGV2YW50IHRvIHJBcHBzIHVzZSBjYXNlcy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNSBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI1LTA0LTAxIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gaW50cm9kdWNlcyBTTU8gYW5kIE8xIGludGVyZmFjZSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4zOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI1LTAzLTI4IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gaW50cm9kdWNlcyBFMiBhbmQgT3BlbiBGcm9udGhhdWwgaW50ZXJmYWNlcyI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4yOwogICAgfQogICAgCiAgICByZXZpc2lvbiAiMjAyNS0wMy0yMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJQcm9wb3NlZCBlbnRpdGllcywgcmVsYXRpb25zaGlwcyBhbmQgYXR0cmlidXRlcyI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4xOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI1LTAyLTE0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJldmlzaW9uIHRvIHJlbmFtZSBhZGFwdGVyIGdyb3VwIHRvIG9yaWdpbiBncm91cC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAxLjEuMDsKICAgICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMi4wMCI7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMTAiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAxLjAuMDsKICAgICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMS4wMCI7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSQU47CgogICAgbGlzdCBTTU8gewogICAgICAgIGRlc2NyaXB0aW9uICJTZXJ2aWNlIE1hbmFnZW1lbnQgYW5kIE9yY2hlc3RyYXRpb24gKFNNTykuCgogICAgICAgIEEgY2VudHJhbGl6ZWQgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciB0aGUgbWFuYWdlbWVudCwgb3JjaGVzdHJhdGlvbiwKICAgICAgICBhbmQgYXV0b21hdGlvbiBvZiB0aGUgZW50aXJlIFJBTiBpbmZyYXN0cnVjdHVyZS4gU01PIGVuYWJsZXMgZmxleGlibGUsCiAgICAgICAgc29mdHdhcmUtZHJpdmVuIG5ldHdvcmsgY29udHJvbCBhbmQgaXMgY3JpdGljYWwgZm9yIGVuYWJsaW5nIHRoZSBvcGVuLAogICAgICAgIGludGVyb3BlcmFibGUsIGFuZCBkaXNhZ2dyZWdhdGVkIGFwcHJvYWNoIHRoYXQgZGVmaW5lcyBPLVJBTi4KCiAgICAgICAgSW4gdGhlIE8tUkFOIGFyY2hpdGVjdHVyZSwgdGhlIFNNTyBpcyBwYXJ0IG9mIHRoZSBtYW5hZ2VtZW50IGFuZAogICAgICAgIG9yY2hlc3RyYXRpb24gbGF5ZXIsIHNpdHRpbmcgYWJvdmUgdGhlIFJBTiBlbGVtZW50cyBsaWtlIHRoZSBSVSwgRFUsCiAgICAgICAgYW5kIENVLiBJdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgUkFOIHVzaW5nIG9wZW4gaW50ZXJmYWNlcywKICAgICAgICBwYXJ0aWN1bGFybHkgTzEgYW5kIEExIGludGVyZmFjZXMiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIHNtb05hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgdGhlIFNNTyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9EVUZ1bmN0aW9uIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgTy1EVSBpcyBhbiBPLVJBTiBORiBpbiB0aGUgTy1SQU4gQXJjaGl0ZWN0dXJlLiBBbiBPLURVLCBjb21iaW5lZCB3aXRoCiAgICAgICAgb25lIG9yIG1vcmUgTy1SVShzKSBjb25uZWN0ZWQgdG8gaXQsIHN1cHBvcnRzIGFuZCBpcyBmdWxseSBjb21wYXRpYmxlCiAgICAgICAgd2l0aCB0aGUgZnVuY3Rpb25zIG9mIGEgZ05CLURVIGFzIGRlZmluZWQgYnkgM0dQUCBUUyAzOC40MDEuCgogICAgICAgIFRoZSBPLURVIHRlcm1pbmF0ZXMgdGhlIEUyIGFuZCB0aGUgRjEgaW50ZXJmYWNlLCBhbmQgdGhlIE9wZW4gRnJvbnRoYXVsCiAgICAgICAgaW50ZXJmYWNlIChhbHNvIGtub3duIGFzIExMUyBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgdGhlIFJMQywgTUFDLCBhbmQKICAgICAgICBIaWdoLVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIHRoZSBVRS4KCiAgICAgICAgTm90ZTogTy1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLURVIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLURVIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5IHRoZQogICAgICAgIElPQyBHTkJEVUZ1bmN0aW9uIGFzIHNwZWNpZmllZCBpbiAzR1BQIE5SIE5STSBtb2RlbCwgYXMgcGVyIDNHUFAgVFMgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKSBhdHRyaWJ1dGVzIjsKCiAgICAgICAgICAgIGxlYWYgZ05CRFVJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRFUgd2l0aGluIGEgZ05vZGVCIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGRVcExNTklkIHsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdXNlZCBhcyBwYXJ0IG9mIFBNIEV2ZW50cyBkYXRhIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVUNQRnVuY3Rpb24gewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIENlbnRyYWwgVW5pdCDigJMgQ29udHJvbCBQbGFuZSAoTy1DVS1DUCkKCiAgICAgICAgVGhlIE8tQ1UtQ1AgdGVybWluYXRlcyB0aGUgTkctYywgWDItYywgWG4tYywgRjEtYywgYW5kIEUxIGludGVyZmFjZXMgYXMKICAgICAgICB3ZWxsIGFzIHRoZSBSUkMgYW5kIFBEQ1AgKGZvciBTUkIpIHByb3RvY29scyB0b3dhcmRzIHRoZSBVRSBhcyBkZWZpbmVkIGJ5CiAgICAgICAgM0dQUCBUUyAzOC40MDEuIFRoZSBPLUNVLUNQIHRlcm1pbmF0ZXMgRTIgaW50ZXJmYWNlIHRvIE5lYXItUlQgUklDIGFuZCBpcwogICAgICAgIG1hbmFnZWQgdmlhIE8xIGludGVyZmFjZSBieSB0aGUgU01PLgoKICAgICAgICBOb3RlOiBPLUNVLUNQIGlzIGEgY29uY3JldGUgY2xhc3MgdGhhdCBleHRlbmRzIHRoZSBPUkFOTmV0d29ya0Z1bmN0aW9uCiAgICAgICAgYWJzdHJhY3QgY2xhc3MuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHRoZQogICAgICAgIE8tQ1UtQ1Agb2JqZWN0LgogICAgICAgICAgICAKICAgICAgICBUaGUgbWFuYWdlbWVudCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIE8tQ1UtQ1AgTy1SQU4gTkYgaXMgcmVwcmVzZW50ZWQgYnkKICAgICAgICB0aGUgSU9DIEdOQkNVQ1BGdW5jdGlvbiBhcyBzcGVjaWZpZWQgaW4gM0dQUCBOUiBOUk0gbW9kZWwsIGFzIHBlciAzR1BQIFRTCiAgICAgICAgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBDZW50cmFsIFVuaXQg4oCTIENvbnRyb2wgUGxhbmUgKE8tQ1UtQ1ApIGF0dHJpYnV0ZXMiOwogICAgICAgICAgICBsZWFmIGdOQkNVTmFtZSB7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwTE1OSWQgewogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB0byBiZSB1c2VkIGFzIHBhcnQgb2YgZ2xvYmFsIFJBTiBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVVVQRnVuY3Rpb24geyAgICAgICAgCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IFVzZXIgUGxhbmUgKE8tQ1UtVVApCgogICAgICAgIFRoZSBPLUNVLVVQIHRlcm1pbmF0ZXMgdGhlIE5HLXUsIFgyLXUsIFhuLXUsIEYxLXUsIGFuZCBFMSBpbnRlcmZhY2VzIGFzCiAgICAgICAgd2VsbCBhcyB0aGUgUERDUCBhbmQgU0RBUCBwcm90b2NvbHMgdG93YXJkcyB0aGUgVUUgYXMgZGVmaW5lZCBieSAzR1BQIFRTCiAgICAgICAgMzguNDAxLiBUaGUgTy1DVS1VUCB0ZXJtaW5hdGVzIEUyIGludGVyZmFjZSB0byBOZWFyLVJUIFJJQyBhbmQgaXMgbWFuYWdlZAogICAgICAgIHZpYSBPMSBpbnRlcmZhY2UgYnkgdGhlIFNNTy4KCiAgICAgICAgTm90ZTogTy1DVS1VUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLUNVLVVQIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLUNVLVVQIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5CiAgICAgICAgdGhlIElPQyBHTkJDVVVQRnVuY3Rpb24gYXMgc3BlY2lmaWVkIGluIDNHUFAgTlIgTlJNIG1vZGVsLCBhcyBwZXIgM0dQUCBUUwogICAgICAgIDI4LjU0MSI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gQ2VudHJhbCBVbml0IOKAkyBVc2VyIFBsYW5lIChPLUNVLVVQKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGlzdCBwTE1OSWRMaXN0IHsKICAgICAgICAgICAgICAgIGtleSAibWNjIG1uYyI7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiB1bmlxdWUgaWRlbnRpdGllcyBmb3IgUExNTiI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJOZWFyLVJlYWwtVGltZSBSQU4gSW50ZWxsaWdlbnQgQ29udHJvbGxlciAoTmVhci1SVCBSSUMpLgoKICAgICAgICBOZWFyLVJUIFJJQyBpcyBhbiBPLVJBTiBORiB0aGF0IGVuYWJsZXMgbmVhciByZWFsLXRpbWUgY29udHJvbCBhbmQKICAgICAgICBvcHRpbWl6YXRpb24gb2Ygc2VydmljZXMgYW5kIHJlc291cmNlcyBvZiBFMiBOb2RlcyB2aWEgZmluZS1ncmFpbmVkIGRhdGEKICAgICAgICBjb2xsZWN0aW9uIGFuZCBhY3Rpb25zIG92ZXIgdGhlIEUyIGludGVyZmFjZSB3aXRoIGNvbnRyb2wgbG9vcHMgaW4gdGhlCiAgICAgICAgb3JkZXIgb2YgMTAgbXMtMXMuIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTmVhci1SZWFsLVRpbWUgUkFOIEludGVsbGlnZW50IENvbnRyb2xsZXIgKE5lYXItUlQgUklDKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5lYXJSdFJpY0lkIHsKICAgICAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGlmaWVyIG9mIE5lYXItUlQgUklDIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT1JVRnVuY3Rpb24gewoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIFJhZGlvIFVuaXQgKE8tUlUpCgogICAgICAgIFRoZSBPLVJVIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIGludGVyZmFjZSAoYWxzbyBrbm93biBhcyBMTFMKICAgICAgICBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgTG93LVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIAogICAgICAgIHRoZSBVRS4gVGhpcyBpcyBkZXBsb3llZCBhcyBhIFBORi4KCiAgICAgICAgVGhlIE8tUlUgdGVybWluYXRlcyB0aGUgT3BlbiBGcm9udGhhdWwgTS1QbGFuZSBpbnRlcmZhY2UgdG93YXJkcyB0aGUgTy1EVQogICAgICAgIGFuZCBTTU8uIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gUmFkaW8gVW5pdCAoTy1SVSkgYXR0cmlidXRlcyI7CiAgICAgICAgICAgIGxlYWYgb3J1SWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiB0aGUgTy1SVSBhcyBkaXNjb3ZlcmVkIGZyb20gdGhlIHNvdXJjZSBkb21haW4gYmFzZWQgb24gTS1QbGFuZSBhcmNoaXRlY3R1cmUgbW9kZWwiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsQ1UgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1DVS4KCiAgICAgICAgNUcgTlIgaXMgYSBuZXcgcmFkaW8gYWNjZXNzIHRlY2hub2xvZ3kgKFJBVCkgZGV2ZWxvcGVkIGJ5IDNHUFAgZm9yCiAgICAgICAgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKSBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlCiAgICAgICAgZ2xvYmFsIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgNUcgTlIgaGFzIHN5bmNocm9uaXphdGlvbiBzaWduYWwgdGhhdCBpcyBrbm93biBhcyBQcmltYXJ5CiAgICAgICAgU3luY2hyb25pemF0aW9uIFNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5IFN5bmNocm9uaXphdGlvbgogICAgICAgIFNpZ25hbCAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUgc3BlY2lmaWMgdG8gTlIgcGh5c2ljYWwgbGF5ZXIgYW5kCiAgICAgICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5IFVFIGZvciBkb3dubGluawogICAgICAgIHN5bmNocm9uaXphdGlvbjogUFNTIHByb3ZpZGVzIFJhZGlvIEZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QKICAgICAgICBTeW1ib2wgaW4gYSBSYWRpbyBmcmFtZSkgU1NTIHByb3ZpZGVzIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZgogICAgICAgIDFzdCBTeW1ib2wgaW4gYSBTdWJmcmFtZSkgUGh5c2ljYWwgTGF5ZXIgQ2VsbCBJRCAoUENJKSBpbmZvcm1hdGlvbgogICAgICAgIHVzaW5nIGJvdGggUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcGxtbklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIElEIGZvciBOUiBDR0kuIElmIGVtcHR5LAogICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uOjpwTE1OSWQgaXMgdXNlZCBmb3IgUExNTiBJRCBpbiBOUiBDR0kiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItRFUuCgogICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikgbW9iaWxlIG5ldHdvcmsuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHRoZQogICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgIFN5bmNocm9uaXphdGlvbiBzaWduYWwgKFBTUykgYW5kIFNlY29uZGFyeSBTeW5jaHJvbml6YXRpb24gc2lnbmFsCiAgICAgICAgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZCBwcm92aWRlCiAgICAgICAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0CiAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICB1c2luZyBib3RoIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICBjZWxsIGluIFBMTU4uIFVzZWQgdG9nZXRoZXIgd2l0aCBnTkJJZCB0byBmb3JtIE5DSS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUlNlY3RvckNhcnJpZXIgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIE5SIFNlY3RvciBDYXJyaWVyIG9iamVjdCBwcm92aWRlcyB0aGUgYXR0cmlidXRlcyBmb3IKICAgICAgICBkZWZpbmluZyB0aGUgbG9naWNhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBjYXJyaWVyIChjZWxsKSBpbiBhCiAgICAgICAgc2VjdG9yLiBBIHNlY3RvciBpcyBhIGNvdmVyYWdlIGFyZWEgYXNzb2NpYXRlZCB3aXRoIGEgYmFzZSBzdGF0aW9uCiAgICAgICAgaGF2aW5nIGl0cyBvd24gYW50ZW5uYXMsIHJhZGlvIHBvcnRzLCBhbmQgY29udHJvbCBjaGFubmVscy4gVGhlCiAgICAgICAgY29uY2VwdCBvZiBzZWN0b3JzIHdhcyBkZXZlbG9wZWQgdG8gaW1wcm92ZSBjby1jaGFubmVsIGludGVyZmVyZW5jZQogICAgICAgIGluIGNlbGx1bGFyIHN5c3RlbXMsIGFuZCBtb3N0IHdpcmVsZXNzIHN5c3RlbXMgdXNlIHRocmVlIHNlY3RvcgogICAgICAgIGNlbGxzLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBhcmZjbkRMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBGcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIGRvd25saW5rIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYXJmY25VTCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gZnJlcXVlbmN5IENoYW5uZWwgTnVtYmVyCiAgICAgICAgICAgICAgICAoTlItQVJGQ04pIGZvciB1cGxpbmsuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGZyZXF1ZW5jeVVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSRiBSZWZlcmVuY2UgRnJlcXVlbmN5IG9mIHVwbGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYlNDaGFubmVsQndETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQlMgQ2hhbm5lbCBiYW5kd2lkdGggaW4gTUh6IGZvciBkb3dubGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgTU8gc2VydmVzIGFzIGEgbWFwcGluZyBiZXR3ZWVuIHRoZSBjZWxsIGFuZCB0aGUgUkJTCiAgICAgICAgZXF1aXBtZW50IHVzZWQgdG8gcHJvdmlkZSBjb3ZlcmFnZSBpbiBhIGNlcnRhaW4gZ2VvZ3JhcGhpY2FsIGFyZWEuCiAgICAgICAgVGhlIE1PIGFsc28gY29udHJvbHMgdGhlIG1heGltdW0gb3V0cHV0IHBvd2VyIG9mIHRoZSBzZWN0b3IuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmLWxpc3QgZVV0cmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBMVEUgZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBnZXJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgR0VSQU4gZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBuUkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgTlIgZnJlcXVlbmN5IGJhbmRzIGFzc29jaWF0ZWQgaGFyZHdhcmUKICAgICAgICAgICAgICAgIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgU2VjdG9yIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIkEgZ3JvdXAgb2YgY28tbG9jYXRlZCBDZWxscyB0aGF0IGhhdmUgYSBzaGFyZWQKICAgICAgICBjb3ZlcmFnZSBhcmVhLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUgc2VjdG9yJ3MKICAgICAgICAgICAgICAgIGRpc2NvdmVyeSBtZWNoYW5pc20uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CgogICAgICAgICAgICBsZWFmIGF6aW11dGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkF2ZXJhZ2UgdmFsdWUgb2YgdGhlIGF6aW11dGhzIG9mIHRoZSBjZWxscwogICAgICAgICAgICAgICAgY29tcHJpc2luZyB0aGUgc2VjdG9yLCBkZXRlcm1pbmVkIGR1cmluZyBzZWN0b3IgZGlzY292ZXJ5LiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9EVUZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTERVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJDZWxsRFUgdHlwZS4KICAgICAgICAgICAgVGhlIE9EVUZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIERVIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQSBPRFVGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBieSBhbiBPRFVGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fUFJPVklERVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIHR5cGUuCiAgICAgICAgICAgIFRoZSBPRFVGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBEVSBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJTZWN0b3JDYXJyaWVyLgogICAgICAgICAgICBBIE9EVUZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgYnkgYW4gT0RVRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHByb3ZpZGVkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ1VDUEZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTENVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxDVSB0eXBlLgogICAgICAgICAgICBUaGUgT0NVQ1BGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBDVS1DUCBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJDZWxsQ1UuCiAgICAgICAgICAgIEEgT0NVQ1BGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbENVLgogICAgICAgICAgICBBbiBOUkNlbGxDVSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFuIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJDZWxsQ3UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBwcm92aWRlcyBOUiBDZWxsLUNVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9jdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1DVSBwcm92aWRlZCBieSBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxDVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUkNFTExEVV9VU0VTX05SU0VDVE9SQ0FSUklFUiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SU2VjdG9yQ2FycmllciB0eXBlLgogICAgICAgICAgICBUaGUgTlJDZWxsRFUgcmVwcmVzZW50cyB0aGUgY2VsbCB0aGF0IHVzZXMgdGhlIE5SU2VjdG9yQ2Fycmllci4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIHVzZSBtYW55IE5SU2VjdG9yQ2FycmllcnMuCiAgICAgICAgICAgIEFuIE5SU2VjdG9yQ2FycmllciBpbnN0YW5jZSBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBOUkNlbGxEVS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLW5yU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHVzZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5SQ2VsbERVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHVzZWQtYnktbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgdXNlZCBieSBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUlNFQ1RPUkNBUlJJRVJfVVNFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUlNlY3RvckNhcnJpZXIgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eSB0eXBlLgogICAgICAgICAgICBUaGUgTlJTZWN0b3JDYXJyaWVyIHJlcHJlc2VudHMgdGhlIGNhcnJpZXIgdGhhdCB1c2VzIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eS4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIGNhbiB1c2Ugb25seSBvbmUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFDYXBhYmlsaXR5IGluc3RhbmNlIGNhbiBiZSB1c2VkIGJ5IG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19OUkNFTExEVSB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBTZWN0b3IgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEEgU2VjdG9yIGluc3RhbmNlIGNhbiBncm91cCBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ1VDUFVGVU5DVElPTl9FMUxJTktfT0NVVVBVRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BVRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUFVGVU5DVElPTiB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIEUxIGxpbmsgYmV0d2VlbiB0aGUKICAgICAgICAgICAgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvY3VjcEZ1bmN0aW9uLWUyLWxpbmtlZC1vY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1VDUCBGdW5jdGlvbiBsaW5rcyBPLUNVVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk9DVUNQVUZVTkNUSU9OOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgb2N1dXBGdW5jdGlvbi1lMi1saW5rZWQtYnktb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVVVAgRnVuY3Rpb24gbGlua2VkIGJ5IE8tQ1VDUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVVVBVRlVOQ1RJT047CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9FMkxJTktfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOZWFyUlRSSUNGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIEUyIGxpbmsgYmV0d2VlbiB0aGUKICAgICAgICAgICAgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1lMi1saW5rZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rcyBOZWFyIFJUIFJJQyBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBuZWFyUlRSSUNGdW5jdGlvbi1lMi1saW5rZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0NVQ1BVRlVOQ1RJT05fRTJMSU5LX05FQVJSVFJJQ0ZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQVUZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTmVhclJUUklDRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lcyBhbiBFMiBsaW5rIGJldHdlZW4gdGhlCiAgICAgICAgICAgIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb2N1Y3BGdW5jdGlvbi1lMi1saW5rZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVUNQIEZ1bmN0aW9uIGxpbmtzIE5lYXIgUlQgUklDIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPQ1VDUFVGVU5DVElPTjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG5lYXJSVFJJQ0Z1bmN0aW9uLWUyLWxpbmtlZC1ieS1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5lYXIgUlQgUklDIEZ1bmN0aW9uIGxpbmtlZCBieSBPLUNVQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0NVVVBGVU5DVElPTl9FMkxJTktfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVVVBGVU5DVElPTiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRTIgbGluayBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9jdXVwRnVuY3Rpb24tZTItbGlua2VkLW5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1VVUCBGdW5jdGlvbiBsaW5rcyBOZWFyIFJUIFJJQyBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0NVVVBGVU5DVElPTjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG5lYXJSVFJJQ0Z1bmN0aW9uLWUyLWxpbmtlZC1ieS1vY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5lYXIgUlQgUklDIEZ1bmN0aW9uIGxpbmtlZCBieSBPLUNVVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT1JVRlVOQ1RJT05fT0ZITUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBNLVBsYW5lIEludGVyZmFjZSBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9ydUZ1bmN0aW9uLW9maG0tbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIFNNTy4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzbW8tb2ZobS1saW5rZWQtYnktb3J1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU01PIGxpbmtlZCBieSBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PRkhNTElOS19PRFVGVU5DVElPTiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBNLVBsYW5lIEludGVyZmFjZSBiZXR3ZWVuCiAgICAgICAgICAgIHRoZSBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9ydUZ1bmN0aW9uLW9maG0tbGlua2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tUlUgRnVuY3Rpb24gbGlua3MgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBvZHVGdW5jdGlvbi1vZmhtLWxpbmtlZC1ieS1vcnVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIGxpbmtlZCBieSBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPRFVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9SVUZVTkNUSU9OX09GSENMSU5LX09EVUZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lcyBhbiBPcGVuIEZIIChGcm9udGhhdWwpIENvbnRyb2wgSW50ZXJmYWNlIGJldHdlZW4KICAgICAgICAgICAgdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tb2ZoYy1saW5rZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBsaW5rcyBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPUlVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG9kdUZ1bmN0aW9uLW9maGMtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua2VkIGJ5IE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT1JVRlVOQ1RJT05fT0ZIVUxJTktfT0RVRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT1JVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPRFVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIE9wZW4gRkggKEZyb250aGF1bCkgVXNlciBJbnRlcmZhY2UgYmV0d2VlbgogICAgICAgICAgICB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvcnVGdW5jdGlvbi1vZmh1LWxpbmtlZC1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk9SVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgb2R1RnVuY3Rpb24tb2ZodS1saW5rZWQtYnktb3J1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rZWQgYnkgTy1SVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PRkhTTElOS19PRFVGVU5DVElPTiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBTeW5jaHJvbml6YXRpb24gSW50ZXJmYWNlCiAgICAgICAgICAgIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tb2Zocy1saW5rZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBsaW5rcyBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPUlVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG9kdUZ1bmN0aW9uLW9maHMtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua2VkIGJ5IE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fTzFMSU5LX1NNTyB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPRFVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNNTyB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIE8xIEludGVyZmFjZSBiZXR3ZWVuIHRoZSBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9kdUZ1bmN0aW9uLW8xLWxpbmtlZC1zbW8gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rcyBTTU8uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTTU8gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOlNNTzsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9DVUNQRlVOQ1RJT05fTzFMSU5LX1NNTyB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VDUEZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb2N1Y3BGdW5jdGlvbi1vMS1saW5rZWQtc21vIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtQ1AgRnVuY3Rpb24gbGlua3MgU01PLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNNTyBsaW5rZWQgYnkgTmVhciBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PMUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tbzEtbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIFNNTy4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzbW8tbzEtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNNTyBsaW5rcyBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORUFSUlRSSUNGVU5DVElPTl9PMUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgbmVhclJUUklDRnVuY3Rpb24tbzEtbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOZWFyIFJUIFJJQyBGdW5jdGlvbiBsaW5rcyBTTU8uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTTU8gbGlua2VkIGJ5IE5lYXIgUlQgUklDIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9GMVVMSU5LX09DVVVQRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRjEtdSBJbnRlcmZhY2UgYmV0d2VlbiB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1mMS11LWxpbmtlZC1vY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua3MgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBvY3V1cEZ1bmN0aW9uLWYxLXUtbGlua2VkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtVVAgRnVuY3Rpb24gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9GMUNMSU5LX09DVUNQRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLjEKCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VDUEZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRjEtYyBJbnRlcmZhY2UgYmV0d2VlbiB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1mMS1jLWxpbmtlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua3MgTy1DVS1DUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgb2N1Y3BGdW5jdGlvbi1mMS1jLWxpbmtlZC1ieS1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIGxpbmtlZCBieSBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQp9
 o-ran-smo-teiv-rel-cloud-ran   urn:o-ran:smo-teiv-rel-cloud-ran        REL_CLOUD_RAN   ["o-ran-smo-teiv-cloud", "o-ran-smo-teiv-ran"]  2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1jbG91ZC1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1jbG91ZC1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtY2xvdWR0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0xMC0wNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJBZGRlZCBncm91cGluZywgT3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycCB0byB0aGUgdG9wb2xvZ3kgb2JqZWN0LiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX0NMT1VEX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfT0RVRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX09DVUNQRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtQ1AgRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19PQ1VVUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2N1dXBGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOZWFyUlRSSUNGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE5lYXJSVFJJQ0Z1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOZWFyUlRSSUNGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
 o-ran-smo-teiv-rel-equipment-ran       urn:o-ran:smo-teiv-rel-equipment-ran    REL_EQUIPMENT_RAN       ["o-ran-smo-teiv-equipment", "o-ran-smo-teiv-ran"]      2024-10-08      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1lcXVpcG1lbnQtcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtZXF1aXBtZW50LXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtZXF1aXByYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHsgcHJlZml4IG9yLXRlaXYtZXF1aXA7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtcmFuIHsgcHJlZml4IG9yLXRlaXYtcmFuOyB9CgoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gRXF1aXBtZW50IHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA4IiB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFkZGVkIG5ldyByZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9TRVJWRVNfTlJDRUxMRFUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX0VRVUlQTUVOVF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBBTlRFTk5BTU9EVUxFX1NFUlZFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYUNhcGFiaWxpdHkgdHlwZS4KICAgICAgICAgICAgVGhlIEFudGVubmFNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYW50ZW5uYSB0aGF0IHNlcnZlcyB0aGUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIHNlcnZlIG1hbnkgQW50ZW5uYUNhcGFiaWxpdGllcy4KICAgICAgICAgICAgQW4gQW50ZW5uYUNhcGFiaWxpdHkgaW5zdGFuY2UgY2FuIGJlIHNlcnZlZCBieSBtYW55IEFudGVubmFNb2R1bGVzLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgQ2FwYWJpbGl0eSBzZXJ2aWNlZCBieSB0aGlzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWVxdWlwOkFudGVubmFNb2R1bGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgc2VydmVzIHRoaXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpBbnRlbm5hQ2FwYWJpbGl0eTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEFOVEVOTkFNT0RVTEVfU0VSVkVTX05SQ0VMTERVIHsgLy8gMS4ubiB0byAwLi5tCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFudGVubmFNb2R1bGUgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgQW50ZW5uYU1vZHVsZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBhbnRlbm5hIHRoYXQgc2VydmVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQW4gQW50ZW5uYU1vZHVsZSBpbnN0YW5jZSBjYW4gc2VydmUgbWFueSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEFuIE5SQ2VsbERVIGluc3RhbmNlIGNhbiBiZSBzZXJ2ZWQgYnkgbWFueSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHNlcnZpY2VkIGJ5IHRoaXMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBzZXJ2ZXMgdGhpcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX0FOVEVOTkFNT0RVTEUgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2VjdG9yIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYU1vZHVsZSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgQSBTZWN0b3IgaW5zdGFuY2UgY2FuIGdyb3VwIG1hbnkgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTZWN0b3IgZ3JvdXBzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgZ3JvdXBlZCBieSBTZWN0b3IuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
 o-ran-smo-teiv-rel-oam-cloud   urn:o-ran:smo-teiv-rel-oam-cloud        REL_OAM_CLOUD   ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-cloud"]  2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tY2xvdWQgewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1vYW0tY2xvdWQiOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtb2FtIHtwcmVmaXggb3ItdGVpdi1vYW07IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA3LTE1IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gYWxpZ25zIE8tUkFOIFdvcmsgR3JvdXAgMTAgU3RhZ2UgMiBTcGVjaWZpY2F0aW9uIChPLVJBTi5XRzEwLlRFJklWLUNJTUkuMC1SMDA0LnYwMi4wMCkiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9PQU1fQ0xPVUQ7CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9ERVBMT1lFRF9BU19DTE9VRElGSUVETkYgeyAgLy8gMC4uMSB0byAxCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGRlcGxveWVkLWFzLWNsb3VkaWZpZWRORiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgZGVwbG95ZWQgYXMgQ2xvdWRpZmllZCBORi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZGVwbG95ZWQtbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWRpZmllZCBORiBkZXBsb3lzIE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1jbG91ZDpDbG91ZGlmaWVkTkY7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19NQU5BR0VERUxFTUVOVCB7IC8vIDEuLm4gdG8gMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBzZXJ2aWNlZC1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LW9hbTpNYW5hZ2VkRWxlbWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9Cn0=
 o-ran-smo-teiv-rel-oam-ran     urn:o-ran:smo-teiv-rel-oam-ran  REL_OAM_RAN     ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-ran"]    2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtb2FtLXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtb2FtcmFuOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7IHByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7IHByZWZpeCBvci10ZWl2LW9hbTsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICAgICAiUkFOIE8mTSB0byBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSBSQU4gTyZNIHRvIExvZ2ljYWwgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjUuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9PQU1fUkFOOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PRFVGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBNYW5hZ2VkRWxlbWVudCB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgT0RVRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE9EVUZ1bmN0aW9ucy4KICAgICAgICAgICAgQW4gT0RVRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PQ1VDUEZVTkNUSU9OIHsgICAgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE1hbmFnZWRFbGVtZW50IHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgTWFuYWdlZEVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbm9kZSB0aGF0IG1hbmFnZXMgdGhlIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE9DVUNQRnVuY3Rpb25zLgogICAgICAgICAgICBBbiBPQ1VDUEZ1bmN0aW9uIGluc3RhbmNlIG11c3QgYmUgbWFuYWdlZCBieSBvbmUgTWFuYWdlZEVsZW1lbnQuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbWFuYWdlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX09DVVVQRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTWFuYWdlZEVsZW1lbnQgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgT0NVVVBGdW5jdGlvbi4KICAgICAgICAgICAgQSBNYW5hZ2VkRWxlbWVudCBpbnN0YW5jZSBjYW4gbWFuYWdlIG1hbnkgT0NVVVBGdW5jdGlvbnMuCiAgICAgICAgICAgIEFuIE9DVVVQRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VVUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfT1JVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTWFuYWdlZEVsZW1lbnQgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgTWFuYWdlZEVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbm9kZSB0aGF0IG1hbmFnZXMgdGhlIE9SVUZ1bmN0aW9uLgogICAgICAgICAgICBBIE1hbmFnZWRFbGVtZW50IGluc3RhbmNlIGNhbiBtYW5hZ2UgbWFueSBPUlVGdW5jdGlvbi4KICAgICAgICAgICAgQW4gT1JVRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19ORUFSUlRSSUNGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBNYW5hZ2VkRWxlbWVudCB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgTmVhclJUUklDRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE5lYXJSVFJJQ0Z1bmN0aW9uLgogICAgICAgICAgICBBbiBOZWFyUlRSSUNGdW5jdGlvbiBpbnN0YW5jZSBtdXN0IGJlIG1hbmFnZWQgYnkgb25lIE1hbmFnZWRFbGVtZW50LgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTmVhciBSVCBSSUMgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KfQ==
-o-ran-smo-teiv-rel-physical-ran        urn:o-ran:smo-teiv-rel-physical-ran     REL_PHYSICAL_RAN        []      2025-02-10      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1waHlzaWNhbC1yYW4gewogIHlhbmctdmVyc2lvbiAxLjE7CiAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmVsLXBoeXNpY2FsLXJhbiI7CiAgcHJlZml4IG9yLXRlaXYtcmVsLXBoeXJhbjsKCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHtwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICBvcmdhbml6YXRpb24gIk8tUkFOIEFsbGlhbmNlIjsKCiAgY29udGFjdAogICAgInd3dy5vLXJhbi5vcmciOwoKICBkZXNjcmlwdGlvbgogICAgIlBoeXNpY2FsIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IGRvbWFpbiBtb2RlbC4KCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSB0b3BvbG9neSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUKCXBoeXNpY2FsIGRvbWFpbiBhbmQgdGhlIFJBTiBkb21haW4uCgogICAgQ29weXJpZ2h0IDIwMjUgdGhlIE8tUkFOIEFsbGlhbmNlLgoKICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgJ0FTIElTJwogICAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICAgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKICAgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKICAgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCiAgICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKICAgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCiAgICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQogICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoKICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGFib3ZlIGRpc2NsYWltZXIuCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgYWJvdmUgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICAqIE5laXRoZXIgdGhlIE1lbWJlcnMgb2YgdGhlIE8tUkFOIEFsbGlhbmNlIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4iOwoKICByZXZpc2lvbiAiMjAyNS0wMi0xMCIgewogICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMi4wMCI7CiAgfQoKICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9QSFlTSUNBTF9SQU47CgogIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgUEhZU0lDQUxBUFBMSUFOQ0VfU0VSVkVTX09EVUZVTkNUSU9OIHsgLy8gMS4ubiB0byAxLi5tCgogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAga2V5IGlkOwogICAgZGVzY3JpcHRpb24gIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgUGh5c2ljYWxBcHBsaWFuY2UgdHlwZS4KICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4iOwoKICAgIGxlYWYtbGlzdCBzZXJ2ZWQtb2R1RnVuY3Rpb24gewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiT0RVRnVuY3Rpb24gc2VydmVkIGJ5IFBoeXNpY2FsQXBwbGlhbmNlLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcGh5c2ljYWw6UGh5c2ljYWxBcHBsaWFuY2U7IAogICAgfQoKICAgIGxlYWYtbGlzdCBzZXJ2aW5nLXBoeXNpY2FsQXBwbGlhbmNlIHsKICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgZGVzY3JpcHRpb24gIlBoeXNpY2FsQXBwbGlhbmNlIHNlcnZpbmcgT0RVRnVuY3Rpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICB9CiAgfQoKICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMQVBQTElBTkNFX1NFUlZFU19PQ1VDUEZVTkNUSU9OIHsgLy8gMS4ubiB0byAxLi5tCgogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAga2V5IGlkOwogICAgZGVzY3JpcHRpb24gIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgUGh5c2ljYWxBcHBsaWFuY2UgdHlwZS4gCiAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQRnVuY3Rpb24gdHlwZS4iOwoKICAgIGxlYWYtbGlzdCBzZXJ2ZWQtb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJPQ1VDUEZ1bmN0aW9uIHNlcnZlZCBieSBQaHlzaWNhbEFwcGxpYW5jZS4iOwogICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXBoeXNpY2FsOlBoeXNpY2FsQXBwbGlhbmNlOyAKICAgIH0KCiAgICBsZWFmLWxpc3Qgc2VydmluZy1waHlzaWNhbEFwcGxpYW5jZSB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbEFwcGxpYW5jZSBzZXJ2aW5nIE9DVUNQRnVuY3Rpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgIH0KICB9CgogIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgUEhZU0lDQUxBUFBMSUFOQ0VfU0VSVkVTX09DVVVQRlVOQ1RJT04geyAvLyAxLi5uIHRvIDEuLm0KCiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICBrZXkgaWQ7CiAgICBkZXNjcmlwdGlvbiAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBQaHlzaWNhbEFwcGxpYW5jZSB0eXBlLgogICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVVVBGdW5jdGlvbiB0eXBlLiI7CgogICAgbGVhZi1saXN0IHNlcnZlZC1vY3V1cEZ1bmN0aW9uIHsKICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgZGVzY3JpcHRpb24gIk9DVVVQRnVuY3Rpb24gc2VydmVkIGJ5IFBoeXNpY2FsQXBwbGlhbmNlLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcGh5c2ljYWw6UGh5c2ljYWxBcHBsaWFuY2U7ICAKICAgIH0KCiAgICBsZWFmLWxpc3Qgc2VydmluZy1waHlzaWNhbEFwcGxpYW5jZSB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbEFwcGxpYW5jZSBzZXJ2aW5nIE9DVVVQRnVuY3Rpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVVVBGdW5jdGlvbjsKICAgIH0KICB9CgogIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgUEhZU0lDQUxBUFBMSUFOQ0VfU0VSVkVTX05FQVJSVFJJQ0ZVTkNUSU9OIHsgLy8gMS4ubiB0byAxLi5tCgogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAga2V5IGlkOwogICAgZGVzY3JpcHRpb24gIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgUGh5c2ljYWxBcHBsaWFuY2UgdHlwZS4KICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuIjsKCiAgICBsZWFmLWxpc3Qgc2VydmVkLW5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgZGVzY3JpcHRpb24gIk5lYXJSVFJJQ0Z1bmN0aW9uIHNlcnZlZCBieSBQaHlzaWNhbEFwcGxpYW5jZS4iOwogICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXBoeXNpY2FsOlBoeXNpY2FsQXBwbGlhbmNlOyAgIAogICAgfQoKICAgIGxlYWYtbGlzdCBzZXJ2aW5nLXBoeXNpY2FsQXBwbGlhbmNlIHsKICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgZGVzY3JpcHRpb24gIlBoeXNpY2FsQXBwbGlhbmNlIHNlcnZpbmcgTmVhclJUUklDRnVuY3Rpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46TmVhclJUUklDRnVuY3Rpb247IAogICAgfQogIH0KfQ==
+o-ran-smo-teiv-rel-physical-ran        urn:o-ran:smo-teiv-rel-physical-ran     REL_PHYSICAL_RAN        ["o-ran-smo-teiv-physical", "o-ran-smo-teiv-ran"]       2025-04-14      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1waHlzaWNhbC1yYW4gewogIHlhbmctdmVyc2lvbiAxLjE7CiAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmVsLXBoeXNpY2FsLXJhbiI7CiAgcHJlZml4IG9yLXRlaXYtcmVsLXBoeXJhbjsKCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1waHlzaWNhbCB7IHByZWZpeCBvci10ZWl2LXBoeXNpY2FsOyB9CgogIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgb3JnYW5pemF0aW9uICJPLVJBTiBBbGxpYW5jZSI7CgogIGNvbnRhY3QKICAgICJ3d3cuby1yYW4ub3JnIjsKCiAgZGVzY3JpcHRpb24KICAgICJQaHlzaWNhbCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBkb21haW4gbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlCiAgICBwaHlzaWNhbCBkb21haW4gYW5kIHRoZSBSQU4gZG9tYWluLgoKICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI1IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQogICAgQ29weXJpZ2h0IDIwMjUgdGhlIE8tUkFOIEFsbGlhbmNlLgoKICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgJ0FTIElTJwogICAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICAgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKICAgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKICAgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCiAgICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKICAgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCiAgICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQogICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoKICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGFib3ZlIGRpc2NsYWltZXIuCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgYWJvdmUgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICAqIE5laXRoZXIgdGhlIE1lbWJlcnMgb2YgdGhlIE8tUkFOIEFsbGlhbmNlIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4iOwoKICAgIHJldmlzaW9uICIyMDI1LTA0LTE0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkZvcm1hdHRpbmcuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4xLjA7CiAgICB9CgogIHJldmlzaW9uICIyMDI1LTAyLTEwIiB7CiAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4wLjA7CiAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAyLjAwIjsKICB9CgogIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX1BIWVNJQ0FMX1JBTjsKCiAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBQSFlTSUNBTEFQUExJQU5DRV9TRVJWRVNfT0RVRlVOQ1RJT04geyAvLyAxLi5uIHRvIDEuLm0KICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKCiAgICBkZXNjcmlwdGlvbiAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBQaHlzaWNhbEFwcGxpYW5jZSB0eXBlLgogICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPRFVGdW5jdGlvbiB0eXBlLiI7CgogICAgbGVhZi1saXN0IHNlcnZlZC1vZHVGdW5jdGlvbiB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJPRFVGdW5jdGlvbiBzZXJ2ZWQgYnkgUGh5c2ljYWxBcHBsaWFuY2UuIjsKICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1waHlzaWNhbDpQaHlzaWNhbEFwcGxpYW5jZTsgCiAgICB9CgogICAgbGVhZi1saXN0IHNlcnZpbmctcGh5c2ljYWxBcHBsaWFuY2UgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWxBcHBsaWFuY2Ugc2VydmluZyBPRFVGdW5jdGlvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPRFVGdW5jdGlvbjsKICAgIH0KICB9CgogIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgUEhZU0lDQUxBUFBMSUFOQ0VfU0VSVkVTX09DVUNQRlVOQ1RJT04geyAvLyAxLi5uIHRvIDEuLm0KICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKCiAgICBkZXNjcmlwdGlvbiAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBQaHlzaWNhbEFwcGxpYW5jZSB0eXBlLgogICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VDUEZ1bmN0aW9uIHR5cGUuIjsKCiAgICBsZWFmLWxpc3Qgc2VydmVkLW9jdWNwRnVuY3Rpb24gewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiT0NVQ1BGdW5jdGlvbiBzZXJ2ZWQgYnkgUGh5c2ljYWxBcHBsaWFuY2UuIjsKICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1waHlzaWNhbDpQaHlzaWNhbEFwcGxpYW5jZTsgCiAgICB9CgogICAgbGVhZi1saXN0IHNlcnZpbmctcGh5c2ljYWxBcHBsaWFuY2UgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWxBcHBsaWFuY2Ugc2VydmluZyBPQ1VDUEZ1bmN0aW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVUNQRnVuY3Rpb247CiAgICB9CiAgfQoKICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMQVBQTElBTkNFX1NFUlZFU19PQ1VVUEZVTkNUSU9OIHsgLy8gMS4ubiB0byAxLi5tCiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICBrZXkgaWQ7CgogICAgZGVzY3JpcHRpb24gIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgUGh5c2ljYWxBcHBsaWFuY2UgdHlwZS4KICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVVVQRnVuY3Rpb24gdHlwZS4iOwoKICAgIGxlYWYtbGlzdCBzZXJ2ZWQtb2N1dXBGdW5jdGlvbiB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJPQ1VVUEZ1bmN0aW9uIHNlcnZlZCBieSBQaHlzaWNhbEFwcGxpYW5jZS4iOwogICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXBoeXNpY2FsOlBoeXNpY2FsQXBwbGlhbmNlOyAgCiAgICB9CgogICAgbGVhZi1saXN0IHNlcnZpbmctcGh5c2ljYWxBcHBsaWFuY2UgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWxBcHBsaWFuY2Ugc2VydmluZyBPQ1VVUEZ1bmN0aW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICB9CiAgfQoKICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMQVBQTElBTkNFX1NFUlZFU19ORUFSUlRSSUNGVU5DVElPTiB7IC8vIDEuLm4gdG8gMS4ubQogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAga2V5IGlkOwoKICAgIGRlc2NyaXB0aW9uICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFBoeXNpY2FsQXBwbGlhbmNlIHR5cGUuCiAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOZWFyUlRSSUNGdW5jdGlvbiB0eXBlLiI7CgogICAgbGVhZi1saXN0IHNlcnZlZC1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJOZWFyUlRSSUNGdW5jdGlvbiBzZXJ2ZWQgYnkgUGh5c2ljYWxBcHBsaWFuY2UuIjsKICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1waHlzaWNhbDpQaHlzaWNhbEFwcGxpYW5jZTsKICAgIH0KCiAgICBsZWFmLWxpc3Qgc2VydmluZy1waHlzaWNhbEFwcGxpYW5jZSB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbEFwcGxpYW5jZSBzZXJ2aW5nIE5lYXJSVFJJQ0Z1bmN0aW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgfQogIH0KfQ==
 \.
 
 COPY teiv_model.entity_info("storedAt", "name", "moduleReferenceName", "attributeNames") FROM stdin;
@@ -544,7 +721,7 @@ o-ran-smo-teiv-equipment_AntennaModule      AntennaModule   o-ran-smo-teiv-equipment        ["
 o-ran-smo-teiv-equipment_Site  Site    o-ran-smo-teiv-equipment        ["geo-location", "name"]
 o-ran-smo-teiv-oam_ManagedElement      ManagedElement  o-ran-smo-teiv-oam      []
 o-ran-smo-teiv-physical_PhysicalAppliance      PhysicalAppliance       o-ran-smo-teiv-physical ["modelName", "vendorName"]
-o-ran-smo-teiv-physical_Site   Site    o-ran-smo-teiv-physical []
+o-ran-smo-teiv-physical_Site   Site    o-ran-smo-teiv-physical ["siteLocation", "siteName"]
 o-ran-smo-teiv-ran_AntennaCapability   AntennaCapability       o-ran-smo-teiv-ran      ["eUtranFqBands", "geranFqBands", "nRFqBands"]
 o-ran-smo-teiv-ran_NRCellCU    NRCellCU        o-ran-smo-teiv-ran      ["cellLocalId", "nCI", "nRTAC", "plmnId"]
 o-ran-smo-teiv-ran_NRCellDU    NRCellDU        o-ran-smo-teiv-ran      ["cellLocalId", "nCI", "nRPCI", "nRTAC"]
@@ -554,6 +731,7 @@ o-ran-smo-teiv-ran_OCUCPFunction    OCUCPFunction   o-ran-smo-teiv-ran      ["gNBCUName",
 o-ran-smo-teiv-ran_OCUUPFunction       OCUUPFunction   o-ran-smo-teiv-ran      ["gNBId", "gNBIdLength", "pLMNIdList"]
 o-ran-smo-teiv-ran_ODUFunction ODUFunction     o-ran-smo-teiv-ran      ["dUpLMNId", "gNBDUId", "gNBId", "gNBIdLength"]
 o-ran-smo-teiv-ran_ORUFunction ORUFunction     o-ran-smo-teiv-ran      ["oruId"]
+o-ran-smo-teiv-ran_SMO SMO     o-ran-smo-teiv-ran      ["smoName"]
 o-ran-smo-teiv-ran_Sector      Sector  o-ran-smo-teiv-ran      ["azimuth", "geo-location", "sectorId"]
 \.
 
@@ -568,6 +746,7 @@ MANAGEDELEMENT_MANAGES_OCUCPFUNCTION        managed-ocucpFunction   ManagedElement  o-ran-
 MANAGEDELEMENT_MANAGES_OCUUPFUNCTION   managed-ocuupFunction   ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       OCUUPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_OCUUPFunction        o-ran-smo-teiv-rel-oam-ran
 MANAGEDELEMENT_MANAGES_ODUFUNCTION     managed-oduFunction     ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-rel-oam-ran
 MANAGEDELEMENT_MANAGES_ORUFUNCTION     managed-oruFunction     ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-rel-oam-ran
+NEARRTRICFUNCTION_O1LINK_SMO   nearRTRICFunction-o1-linked-smo NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-nearRTRICFunction      SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_NearRTRICFunction    o-ran-smo-teiv-ran
 NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE       deployed-on-ocloudNamespace     NFDeployment    o-ran-smo-teiv-cloud    1       9223372036854775807     deployed-nFDeployment   OCloudNamespace o-ran-smo-teiv-cloud    1       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE   o-ran-smo-teiv-cloud
 NFDEPLOYMENT_SERVES_MANAGEDELEMENT     serviced-managedElement NFDeployment    o-ran-smo-teiv-cloud    1       9223372036854775807     serving-nFDeployment    ManagedElement  o-ran-smo-teiv-oam      1       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-cloud_NFDeployment       o-ran-smo-teiv-rel-oam-cloud
 NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION  serviced-nearRTRICFunction      NFDeployment    o-ran-smo-teiv-cloud    0       9223372036854775807     serving-nFDeployment    NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION      o-ran-smo-teiv-rel-cloud-ran
@@ -578,10 +757,24 @@ NODECLUSTER_LOCATED_AT_OCLOUDSITE located-at-ocloudSite   NodeCluster     o-ran-smo-te
 NRCELLDU_USES_NRSECTORCARRIER  used-nrSectorCarrier    NRCellDU        o-ran-smo-teiv-ran      0       1       used-by-nrCellDu        NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
 NRSECTORCARRIER_USES_ANTENNACAPABILITY used-antennaCapability  NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     used-by-nrSectorCarrier AntennaCapability       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
 OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER        deployed-on-nodeCluster OCloudNamespace o-ran-smo-teiv-cloud    1       9223372036854775807     deployed-ocloudNamespace        NodeCluster     o-ran-smo-teiv-cloud    1       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-cloud_OCloudNamespace    o-ran-smo-teiv-cloud
+OCUCPFUNCTION_O1LINK_SMO       ocucpFunction-o1-linked-smo     OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-ocucpFunction  SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPFunction        o-ran-smo-teiv-ran
 OCUCPFUNCTION_PROVIDES_NRCELLCU        provided-nrCellCu       OCUCPFunction   o-ran-smo-teiv-ran      1       1       provided-by-ocucpFunction       NRCellCU        o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRCellCU     o-ran-smo-teiv-ran
+OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION   ocucpFunction-e2-linked-ocuupFunction   OCUCPUFUNCTION  o-ran-smo-teiv-ran      0       9223372036854775807     ocuupFunction-e2-linked-by-ocucpFunction        OCUUPUFUNCTION  o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPUFUNCTION       o-ran-smo-teiv-ran
+OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION        ocucpFunction-e2-linked-nearRTRICFunction       OCUCPUFUNCTION  o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-ocucpFunction    NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPUFUNCTION       o-ran-smo-teiv-ran
+OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION ocuupFunction-e2-linked-nearRTRICFunction       OCUUPFUNCTION   o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-ocuupFunction    NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUUPFUNCTION        o-ran-smo-teiv-ran
+ODUFUNCTION_E2LINK_NEARRTRICFUNCTION   oduFunction-e2-linked-nearRTRICFunction ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-oduFunction      NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_F1CLINK_OCUCPFUNCTION      oduFunction-f1-c-linked-ocucpFunction   ODUFunction     o-ran-smo-teiv-ran      0       1       ocucpFunction-f1-c-linked-by-oduFunction        OCUCPFunction   o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_F1ULINK_OCUUPFUNCTION      oduFunction-f1-u-linked-ocuupFunction   ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     ocuupFunction-f1-u-linked-by-oduFunction        OCUUPFunction   o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_O1LINK_SMO oduFunction-o1-linked-smo       ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-oduFunction    SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
 ODUFUNCTION_PROVIDES_NRCELLDU  provided-nrCellDu       ODUFunction     o-ran-smo-teiv-ran      1       1       provided-by-oduFunction NRCellDU        o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRCellDU     o-ran-smo-teiv-ran
 ODUFUNCTION_PROVIDES_NRSECTORCARRIER   provided-nrSectorCarrier        ODUFunction     o-ran-smo-teiv-ran      1       1       provided-by-oduFunction NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
-PHYSICALAPPLIANCE_INSTALLEDAT_SITE     installing-site PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     installed-physicalAppliance     Site    o-ran-smo-teiv-equipment        0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE      o-ran-smo-teiv-physical
+ORUFUNCTION_O1LINK_SMO oruFunction-o1-linked-smo       ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-oruFunction    SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHCLINK_ODUFUNCTION       oruFunction-ofhc-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhc-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHMLINK_ODUFUNCTION       oruFunction-ofhm-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhm-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHMLINK_SMO       oruFunction-ofhm-linked-smo     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-ofhm-linked-by-oruFunction  SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHSLINK_ODUFUNCTION       oruFunction-ofhs-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhs-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHULINK_ODUFUNCTION       oruFunction-ofhu-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhu-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+PHYSICALAPPLIANCE_INSTALLEDAT_SITE     installing-site PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     installed-physicalAppliance     Site    o-ran-smo-teiv-physical 0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE      o-ran-smo-teiv-physical
 PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION     served-nearRTRICFunction        PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION      o-ran-smo-teiv-rel-physical-ran
 PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION served-ocucpFunction    PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION  o-ran-smo-teiv-rel-physical-ran
 PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION served-ocuupFunction    PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       OCUUPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION  o-ran-smo-teiv-rel-physical-ran
index c0fa7bf..051f19a 100644 (file)
@@ -441,6 +441,8 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ALTER COL
 
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-physical_Site" (
        "id"                    TEXT,
+       "siteLocation"                  jsonb,
+       "siteName"                      TEXT,
        "CD_sourceIds"                  jsonb,
        "CD_classifiers"                        jsonb,
        "CD_decorators"                 jsonb,
@@ -610,7 +612,13 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                     jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                   jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                    jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                 jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                 jsonb,
+       "REL_FK_nearRTRICFunction-o1-linked-smo"                        TEXT,
+       "REL_ID_NEARRTRICFUNCTION_O1LINK_SMO"                   TEXT,
+       "REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO"                 jsonb,
+       "REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO"                        jsonb,
+       "REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO"                     jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -625,6 +633,12 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" (
        "id"                    TEXT,
        "gNBCUName"                     TEXT,
@@ -640,7 +654,13 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                 jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                       jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                        jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                     jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                     jsonb,
+       "REL_FK_ocucpFunction-o1-linked-smo"                    TEXT,
+       "REL_ID_OCUCPFUNCTION_O1LINK_SMO"                       TEXT,
+       "REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO"                   jsonb,
+       "REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO"                    jsonb,
+       "REL_metadata_OCUCPFUNCTION_O1LINK_SMO"                 jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -655,6 +675,54 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" (
+       "REL_FK_ocucpFunction-e2-linked-ocuupFunction"                  TEXT,
+       "REL_ID_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION"                   TEXT,
+       "REL_CD_sourceIds_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION"                 jsonb,
+       "REL_CD_classifiers_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION"                       jsonb,
+       "REL_CD_decorators_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION"                        jsonb,
+       "REL_metadata_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION"                     jsonb,
+       "REL_FK_ocucpFunction-e2-linked-nearRTRICFunction"                      TEXT,
+       "REL_ID_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION"                        TEXT,
+       "REL_CD_sourceIds_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION"                      jsonb,
+       "REL_CD_classifiers_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION"                    jsonb,
+       "REL_CD_decorators_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_metadata_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION"                  jsonb
+);
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ALTER COLUMN "REL_CD_sourceIds_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ALTER COLUMN "REL_CD_classifiers_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ALTER COLUMN "REL_CD_decorators_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ALTER COLUMN "REL_CD_sourceIds_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ALTER COLUMN "REL_CD_classifiers_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ALTER COLUMN "REL_CD_decorators_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" (
+       "REL_FK_ocuupFunction-e2-linked-nearRTRICFunction"                      TEXT,
+       "REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                 TEXT,
+       "REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                       jsonb,
+       "REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                      jsonb,
+       "REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                   jsonb
+);
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" ALTER COLUMN "REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" ALTER COLUMN "REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" ALTER COLUMN "REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" (
        "id"                    TEXT,
        "gNBId"                 BIGINT,
@@ -699,7 +767,31 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ODUFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                   jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                 jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                  jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                       jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                       jsonb,
+       "REL_FK_oduFunction-e2-linked-nearRTRICFunction"                        TEXT,
+       "REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                   TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                 jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                       jsonb,
+       "REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                        jsonb,
+       "REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_FK_oduFunction-f1-c-linked-ocucpFunction"                  TEXT,
+       "REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                      TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                    jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                  jsonb,
+       "REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                   jsonb,
+       "REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                        jsonb,
+       "REL_FK_oduFunction-f1-u-linked-ocuupFunction"                  TEXT,
+       "REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                      TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                    jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                  jsonb,
+       "REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                   jsonb,
+       "REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                        jsonb,
+       "REL_FK_oduFunction-o1-linked-smo"                      TEXT,
+       "REL_ID_ODUFUNCTION_O1LINK_SMO"                 TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_decorators_ODUFUNCTION_O1LINK_SMO"                      jsonb,
+       "REL_metadata_ODUFUNCTION_O1LINK_SMO"                   jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -714,6 +806,30 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ORUFunction" (
        "id"                    TEXT,
        "oruId"                 BIGINT,
@@ -726,7 +842,43 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ORUFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                   jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                 jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                  jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                       jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                       jsonb,
+       "REL_FK_oruFunction-o1-linked-smo"                      TEXT,
+       "REL_ID_ORUFUNCTION_O1LINK_SMO"                 TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_decorators_ORUFUNCTION_O1LINK_SMO"                      jsonb,
+       "REL_metadata_ORUFUNCTION_O1LINK_SMO"                   jsonb,
+       "REL_FK_oruFunction-ofhc-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhm-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhm-linked-smo"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHMLINK_SMO"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHMLINK_SMO"                 jsonb,
+       "REL_FK_oruFunction-ofhs-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhu-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION"                 jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -741,6 +893,57 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_SMO" (
+       "id"                    TEXT,
+       "smoName"                       TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_Sector" (
        "id"                    TEXT,
        "azimuth"                       DECIMAL,
@@ -990,6 +1193,12 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "PK_o-ran-smo-teiv-ran_ORUFunction_id" PRIMARY KEY ("id");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_SMO',
+ 'PK_o-ran-smo-teiv-ran_SMO_id',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_SMO" ADD CONSTRAINT "PK_o-ran-smo-teiv-ran_SMO_id" PRIMARY KEY ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_Sector',
  'PK_o-ran-smo-teiv-ran_Sector_id',
@@ -1197,7 +1406,7 @@ SELECT teiv_data.create_constraint_if_not_exists(
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE',
  'FK_724766DCE4C384828DFFDA92F96D3CF41A10AC60',
- 'ALTER TABLE teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" ADD CONSTRAINT "FK_724766DCE4C384828DFFDA92F96D3CF41A10AC60" FOREIGN KEY ("bSide_Site") REFERENCES teiv_data."o-ran-smo-teiv-equipment_Site" ("id");'
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" ADD CONSTRAINT "FK_724766DCE4C384828DFFDA92F96D3CF41A10AC60" FOREIGN KEY ("bSide_Site") REFERENCES teiv_data."o-ran-smo-teiv-physical_Site" ("id");'
 );
 
 SELECT teiv_data.create_constraint_if_not_exists(
@@ -1284,6 +1493,18 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "UNIQUE_E020461673334EB824643649B6B31670FB064EC8" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_NearRTRICFunction',
+ 'FK_38EF935E0C374C18F1865F231A3EA230FD743A91',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "FK_38EF935E0C374C18F1865F231A3EA230FD743A91" FOREIGN KEY ("REL_FK_nearRTRICFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_NearRTRICFunction',
+ 'UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0" UNIQUE ("REL_ID_NEARRTRICFUNCTION_O1LINK_SMO");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_OCUCPFunction',
  'FK_122DD9709032528D161177B3624AD7AAF6589005',
@@ -1296,6 +1517,54 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_2B7D3D49C1072E660047DE56843413CE628BF94A" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275" FOREIGN KEY ("REL_FK_ocucpFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B" UNIQUE ("REL_ID_OCUCPFUNCTION_O1LINK_SMO");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPUFUNCTION',
+ 'FK_C4055161A630A4BEA3C222DE6F04A8FF722351F4',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ADD CONSTRAINT "FK_C4055161A630A4BEA3C222DE6F04A8FF722351F4" FOREIGN KEY ("REL_FK_ocucpFunction-e2-linked-ocuupFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUUPUFUNCTION" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPUFUNCTION',
+ 'UNIQUE_7CAC79DC2584327FB2FE54F7D4E28B6FD7130AAD',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ADD CONSTRAINT "UNIQUE_7CAC79DC2584327FB2FE54F7D4E28B6FD7130AAD" UNIQUE ("REL_ID_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPUFUNCTION',
+ 'FK_C51E9052970F82631E1BF28C495852340A9858F9',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ADD CONSTRAINT "FK_C51E9052970F82631E1BF28C495852340A9858F9" FOREIGN KEY ("REL_FK_ocucpFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPUFUNCTION',
+ 'UNIQUE_F018C4A0E671663AF48B7ED051E9CBD4A5CFB4FE',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" ADD CONSTRAINT "UNIQUE_F018C4A0E671663AF48B7ED051E9CBD4A5CFB4FE" UNIQUE ("REL_ID_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUUPFUNCTION',
+ 'FK_8452075F28AAA821F6FC74E6BFED35C1FBFC64C7',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" ADD CONSTRAINT "FK_8452075F28AAA821F6FC74E6BFED35C1FBFC64C7" FOREIGN KEY ("REL_FK_ocuupFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUUPFUNCTION',
+ 'UNIQUE_DAA54343AD0BC202A93C9EFD22989A1F2F6D21ED',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" ADD CONSTRAINT "UNIQUE_DAA54343AD0BC202A93C9EFD22989A1F2F6D21ED" UNIQUE ("REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_OCUUPFunction',
  'FK_8062AF50E5EE5543FBCC68D66FDFF673E31E081D',
@@ -1320,6 +1589,54 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_D570291C9E28A2AF73387B7A8B0F4C70130EEDB4" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87" FOREIGN KEY ("REL_FK_oduFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9" UNIQUE ("REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE" FOREIGN KEY ("REL_FK_oduFunction-f1-c-linked-ocucpFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB" UNIQUE ("REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7" FOREIGN KEY ("REL_FK_oduFunction-f1-u-linked-ocuupFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5" UNIQUE ("REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F" FOREIGN KEY ("REL_FK_oduFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E" UNIQUE ("REL_ID_ODUFUNCTION_O1LINK_SMO");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_ORUFunction',
  'FK_B497A8C3DC2D647938E6DB4C7E691509DD8C90DE',
@@ -1332,6 +1649,78 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_4E6F008B82605A806EED04B2315A1FEE095A9241" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_DBE4275001B5740ED355F64F62F181489A4E398A',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_DBE4275001B5740ED355F64F62F181489A4E398A" FOREIGN KEY ("REL_FK_oruFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA" UNIQUE ("REL_ID_ORUFUNCTION_O1LINK_SMO");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333" FOREIGN KEY ("REL_FK_oruFunction-ofhc-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F" UNIQUE ("REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B" FOREIGN KEY ("REL_FK_oruFunction-ofhm-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F" UNIQUE ("REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA" FOREIGN KEY ("REL_FK_oruFunction-ofhm-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_9967840981340189977B88AA138C3773F21122C7',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_9967840981340189977B88AA138C3773F21122C7" UNIQUE ("REL_ID_ORUFUNCTION_OFHMLINK_SMO");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB" FOREIGN KEY ("REL_FK_oruFunction-ofhs-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A" UNIQUE ("REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266" FOREIGN KEY ("REL_FK_oruFunction-ofhu-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D" UNIQUE ("REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION',
  'FK_2B4B09AF7CC9C877B1140BB127B4CB4DA438195D',
@@ -1526,6 +1915,8 @@ CREATE INDEX IF NOT EXISTS "IDX_1D52205C41F3233591749A18B5ED604A4A6B5144" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-physical_PhysicalAppliance_CD_decorators" ON teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" USING GIN ("CD_decorators");
 
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-physical_Site_siteLocation" ON teiv_data."o-ran-smo-teiv-physical_Site" USING GIN ("siteLocation");
+
 CREATE INDEX IF NOT EXISTS "IDX_555DE28C10DDDB6CB6AB619D5C71E93068D432FB" ON teiv_data."o-ran-smo-teiv-physical_Site" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_DCA080CB1439BEFA5461FD03A76033285B9A8EA2" ON teiv_data."o-ran-smo-teiv-physical_Site" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1614,6 +2005,12 @@ CREATE INDEX IF NOT EXISTS "IDX_0ECC814A408874C9F8E73EEE3968984A6345A606" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_B10FD045A6C3E169953CCC38CC2D801FCE15A75F" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_6B3AF742DAE59FE0E798E67C7E2417783464FD8D" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN (("REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F2F838B3DBDF4E0EFC3FC2096F7549740976B346" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN (("REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_218EB3FA277F4E7F72EC345841246A5BB3402E28" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN ("REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO");
+
 CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("pLMNId");
 
 CREATE INDEX IF NOT EXISTS "IDX_84A29F8571860AC5A7BD1A99923485ECB6A3939D" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
@@ -1628,6 +2025,30 @@ CREATE INDEX IF NOT EXISTS "IDX_21F2560C8330A795E8AFB54C6D31CDCF6CCD3070" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_D856E84F300B6711E81931AE1CBC8AD905FA384F" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_2F4FCB18A717B38224F5BAA484D2EFE26A458CC7" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_D9ADFBBC5360F5D511E0E67A0D13622A4BBD78E1" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_FC018070572BA39A4683CBDDCAAA16D3A9129DB8" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO");
+
+CREATE INDEX IF NOT EXISTS "IDX_8EADD4E436B442260444BBD678577B36B384627A" ON teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" USING GIN (("REL_CD_sourceIds_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_1B7127FBB6523636F1D81D9235301D1410A10240" ON teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" USING GIN (("REL_CD_classifiers_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_306486F1958CB0682AAD7DBBF83E6EBBE8159313" ON teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" USING GIN ("REL_CD_decorators_OCUCPUFUNCTION_E1LINK_OCUUPUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_24BDE57AED3B1259709D84A10FC7C5580B8D4AAC" ON teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" USING GIN (("REL_CD_sourceIds_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_826BB0F20D5BFEAB9BD1B5106046276A6FF7CE5D" ON teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" USING GIN (("REL_CD_classifiers_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_7B3604DB1DE3AD5D0CC8A6425BC75E31F9FE3973" ON teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION" USING GIN ("REL_CD_decorators_OCUCPUFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_EF1B4A1F55350A7F49B75FBFBB28BD1B5B4FB9E2" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" USING GIN (("REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_E21209AD4691E3A76CC6E58EAC507B59C565F801" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" USING GIN (("REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_E21F84EB03AE1F94DD674A63E89BE81662FB3B93" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION" USING GIN ("REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
 CREATE INDEX IF NOT EXISTS "IDX_9122DAA7A60DB585BE5ECA68A2EDB9ABF1E7156A" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("pLMNIdList"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_6C81B2BBFCFE94C87598869A2099E04571202BA7" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
@@ -1656,6 +2077,30 @@ CREATE INDEX IF NOT EXISTS "IDX_5DD192861541E0EB2776C6BFE34B327FF27F93C3" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_0B9AC962B1E07740CE43D912B5FBC54E0B39DD24" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_5F2DC68F0CE9A176F79C9DEF6752556C38C7A8DF" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_AFD9E48ECC8E81DCD5F3A10199B7936A894D75F1" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_714284D19884BC9E2A594B6B5010D429E12F5AE7" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_4C7915C1CD9395FE91ED0474B1235393063920BA" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F784968DE38F941EB1D9E2845576B5F93ED1E18B" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_9A1D505BA4542318211ECF2569A0CEA390AAB52D" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_0C48537C4C2C125C6B188375EC62CBA0984B3D8B" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_91CC0F89EAA44A400D822FCFDC9AB8AE0285499C" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_090DF573B5D8AFDA2478C3B4BA551FEC2CD48585" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_F8F72994228550E6DA79A2E336AFF745CF5B13A8" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_166E643CA7B58B57DC9CA292E233C033DA771649" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_0A7B8671FF4C6943209D81A0351DE1CAEFB55629" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_O1LINK_SMO");
+
 CREATE INDEX IF NOT EXISTS "IDX_D0D11CFAA917F4FA12748A041A34D2B39A3AD707" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_2A5AAAD13FDCFF7F2958005C22937366F6604A0D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1668,6 +2113,48 @@ CREATE INDEX IF NOT EXISTS "IDX_DA79A3F946C1F4E8D05B4D6ADEF5E4C65E47635E" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_7B916E1753D2860DF434831CF1E9697ED9973C8F" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_C650BB0BAF5EF02FB2A7CBF9D89379DB446443F3" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_583EAFCC8FB5174AB69184076C2EC75E85F44402" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_DE327F0FC00996B5856EE87C424E2E70C39475CA" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_O1LINK_SMO");
+
+CREATE INDEX IF NOT EXISTS "IDX_DEC190D478DCFE7B4974DFE067136180DC4F98D2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_913D348FC7569F1B3054A7F11583A8E826C44C4D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_2C350ECD1561367CFE3C6ECE240110B0CFBE691E" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_70B09AD99FFFEC82C50E21709F65D759CD306CC2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_10F981F841A1BEAC998725703500D2AAFF92C615" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_091099E01E22A69CF5FBD13F6BE31A590A12DFEB" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_8D607F7CBEE96E7D2F0D0E2399E1DF2D4A4D2DE1" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_C5EF805B2EF19761349A03D3CD3CF6C12818C98B" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_0F1592A3DE78629D65D3FED257905832BF2C42EA" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO");
+
+CREATE INDEX IF NOT EXISTS "IDX_1EF8E086BAB9488EA6AD191B6082977A76CD2BD9" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_2E9527C8D166D7A31FE2F2B26EEED8202FC33B14" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_21586E874FC18901720393534E189FB50B0825AC" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_544CBFFD146034E3AA9C2EAF6B8770C8CF8740DF" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_7B224280C4E1CD6248628CAF23CB06FE50AA838D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F3DE945424D3435D889B06D0080CFC8C26F76CF2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_F34E4B2CD5D3DEC7271D5FA89AFC34BCF424D636" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_E528335C63DF74D690BADBF0ED2134E2BE5EC147" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN ("CD_decorators");
+
 CREATE INDEX IF NOT EXISTS "IDX_E234B43A7CD7843672F08F2197AB46A2A50BECB0" ON teiv_data."o-ran-smo-teiv-ran_Sector" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_19C19556F9714850389595E0A16218FA229205FE" ON teiv_data."o-ran-smo-teiv-ran_Sector" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1720,12 +2207,18 @@ ANALYZE teiv_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTIO
 
 ANALYZE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction";
 
+ANALYZE teiv_data."o-ran-smo-teiv-ran_OCUCPUFUNCTION";
+
 ANALYZE teiv_data."o-ran-smo-teiv-oam_ManagedElement";
 
 ANALYZE teiv_data."o-ran-smo-teiv-ran_NRCellDU";
 
+ANALYZE teiv_data."o-ran-smo-teiv-ran_OCUUPFUNCTION";
+
 ANALYZE teiv_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU";
 
+ANALYZE teiv_data."o-ran-smo-teiv-ran_SMO";
+
 ANALYZE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction";
 
 ANALYZE teiv_data."o-ran-smo-teiv-cloud_CloudifiedNF";
index 17bdc8a..cc43cfc 100644 (file)
-<svg width="745px" height="305px"
- viewBox="0.00 0.00 745.00 305.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1.0 1.0) rotate(0.0) translate(4.0 301.0)">
+<svg width="753px" height="479px"
+ viewBox="0.00 0.00 753.41 479.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1.0 1.0) rotate(0.0) translate(4.0 475.0)">
 <title>moduleName</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-301 741,-301 741,4 -4,4"/>
-<!-- AntennaCapability -->
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-475 749.41,-475 749.41,4 -4,4"/>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability -->
 <g id="node1" class="node">
-<title>AntennaCapability</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="135.5,-36 9.5,-36 9.5,0 135.5,0 135.5,-36"/>
-<text text-anchor="middle" x="72.5" y="-14.3" font-family="Arial" font-size="14.00">AntennaCapability</text>
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="495.41,-123 369.41,-123 369.41,-87 495.41,-87 495.41,-123"/>
+<text text-anchor="middle" x="432.41" y="-101.3" font-family="Arial" font-size="14.00">AntennaCapability</text>
 </g>
-<!-- NRCellCU -->
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU -->
 <g id="node2" class="node">
-<title>NRCellCU</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="306,-210 227,-210 227,-174 306,-174 306,-210"/>
-<text text-anchor="middle" x="266.5" y="-188.3" font-family="Arial" font-size="14.00">NRCellCU</text>
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="229.91,-210 150.91,-210 150.91,-174 229.91,-174 229.91,-210"/>
+<text text-anchor="middle" x="190.41" y="-188.3" font-family="Arial" font-size="14.00">NRCellCU</text>
 </g>
-<!-- NRCellDU -->
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU -->
 <g id="node3" class="node">
-<title>NRCellDU</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="201,-210 122,-210 122,-174 201,-174 201,-210"/>
-<text text-anchor="middle" x="161.5" y="-188.3" font-family="Arial" font-size="14.00">NRCellDU</text>
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="495.91,-297 416.91,-297 416.91,-261 495.91,-261 495.91,-297"/>
+<text text-anchor="middle" x="456.41" y="-275.3" font-family="Arial" font-size="14.00">NRCellDU</text>
 </g>
-<!-- NRSectorCarrier -->
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier -->
 <g id="node4" class="node">
-<title>NRSectorCarrier</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="130.5,-123 14.5,-123 14.5,-87 130.5,-87 130.5,-123"/>
-<text text-anchor="middle" x="72.5" y="-101.3" font-family="Arial" font-size="14.00">NRSectorCarrier</text>
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="488.41,-210 372.41,-210 372.41,-174 488.41,-174 488.41,-210"/>
+<text text-anchor="middle" x="430.41" y="-188.3" font-family="Arial" font-size="14.00">NRSectorCarrier</text>
 </g>
-<!-- NRCellDU&#45;&gt;NRSectorCarrier -->
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier -->
 <g id="edge1" class="edge">
-<title>NRCellDU&#45;&gt;NRSectorCarrier</title>
-<path fill="none" stroke="#528b8b" d="M143.49,-173.8C130.34,-161.24 112.34,-144.05 97.76,-130.12"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="90.48,-123.18 100.82,-126.83 94.1,-126.63 97.72,-130.08 97.72,-130.08 97.72,-130.08 94.1,-126.63 94.61,-133.34 90.48,-123.18 90.48,-123.18"/>
-<text text-anchor="middle" x="141" y="-144.8" font-family="Arial" font-size="14.00">USES</text>
-<text text-anchor="middle" x="78.98" y="-126.98" font-family="Arial" font-size="14.00">0..1</text>
-<text text-anchor="middle" x="132.99" y="-162.6" font-family="Arial" font-size="14.00">0..*</text>
-</g>
-<!-- NRSectorCarrier&#45;&gt;AntennaCapability -->
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier</title>
+<path fill="none" stroke="#528b8b" d="M451.15,-260.8C447.55,-249.05 442.72,-233.24 438.62,-219.84"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="435.66,-210.18 442.89,-218.42 437.13,-214.96 438.59,-219.74 438.59,-219.74 438.59,-219.74 437.13,-214.96 434.28,-221.05 435.66,-210.18 435.66,-210.18"/>
+<text text-anchor="middle" x="463.91" y="-231.8" font-family="Arial" font-size="14.00">USES</text>
+<text text-anchor="middle" x="424.16" y="-213.98" font-family="Arial" font-size="14.00">0..1</text>
+<text text-anchor="middle" x="440.65" y="-249.6" font-family="Arial" font-size="14.00">0..*</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability -->
 <g id="edge2" class="edge">
-<title>NRSectorCarrier&#45;&gt;AntennaCapability</title>
-<path fill="none" stroke="#528b8b" d="M72.5,-86.8C72.5,-75.16 72.5,-59.55 72.5,-46.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="72.5,-36.18 77,-46.18 72.5,-41.18 72.5,-46.18 72.5,-46.18 72.5,-46.18 72.5,-41.18 68,-46.18 72.5,-36.18 72.5,-36.18"/>
-<text text-anchor="middle" x="91" y="-57.8" font-family="Arial" font-size="14.00">USES</text>
-<text text-anchor="middle" x="62" y="-39.98" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="61" y="-75.6" font-family="Arial" font-size="14.00">0..1</text>
-</g>
-<!-- NearRTRICFunction -->
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability</title>
+<path fill="none" stroke="#528b8b" d="M430.81,-173.8C431.09,-162.16 431.45,-146.55 431.77,-133.24"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="432,-123.18 436.27,-133.28 431.89,-128.17 431.77,-133.17 431.77,-133.17 431.77,-133.17 431.89,-128.17 427.27,-133.07 432,-123.18 432,-123.18"/>
+<text text-anchor="middle" x="450.91" y="-144.8" font-family="Arial" font-size="14.00">USES</text>
+<text text-anchor="middle" x="421.5" y="-126.98" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="419.31" y="-162.6" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
 <g id="node5" class="node">
-<title>NearRTRICFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="483,-297 344,-297 344,-261 483,-261 483,-297"/>
-<text text-anchor="middle" x="413.5" y="-275.3" font-family="Arial" font-size="14.00">NearRTRICFunction</text>
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="260.91,-123 121.91,-123 121.91,-87 260.91,-87 260.91,-123"/>
+<text text-anchor="middle" x="191.41" y="-101.3" font-family="Arial" font-size="14.00">NearRTRICFunction</text>
 </g>
-<!-- OCUCPFunction -->
-<g id="node6" class="node">
-<title>OCUCPFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="325.5,-297 207.5,-297 207.5,-261 325.5,-261 325.5,-297"/>
-<text text-anchor="middle" x="266.5" y="-275.3" font-family="Arial" font-size="14.00">OCUCPFunction</text>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
+<g id="node10" class="node">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="551.41,-36 497.41,-36 497.41,0 551.41,0 551.41,-36"/>
+<text text-anchor="middle" x="524.41" y="-14.3" font-family="Arial" font-size="14.00">SMO</text>
 </g>
-<!-- OCUCPFunction&#45;&gt;NRCellCU -->
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
 <g id="edge3" class="edge">
-<title>OCUCPFunction&#45;&gt;NRCellCU</title>
-<path fill="none" stroke="#528b8b" d="M266.5,-260.8C266.5,-249.16 266.5,-233.55 266.5,-220.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="266.5,-210.18 271,-220.18 266.5,-215.18 266.5,-220.18 266.5,-220.18 266.5,-220.18 266.5,-215.18 262,-220.18 266.5,-210.18 266.5,-210.18"/>
-<text text-anchor="middle" x="302" y="-231.8" font-family="Arial" font-size="14.00">PROVIDES</text>
-<text text-anchor="middle" x="255" y="-213.98" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="256" y="-249.6" font-family="Arial" font-size="14.00">0..*</text>
-</g>
-<!-- OCUUPFunction -->
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M215.33,-86.91C232.17,-75.74 255.68,-61.82 278.41,-54 349.47,-29.54 437.74,-22.16 486.89,-19.95"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="497.05,-19.54 487.24,-24.43 492.06,-19.74 487.06,-19.94 487.06,-19.94 487.06,-19.94 492.06,-19.74 486.88,-15.44 497.05,-19.54 497.05,-19.54"/>
+<text text-anchor="middle" x="302.91" y="-57.8" font-family="Arial" font-size="14.00">O1LINK</text>
+<text text-anchor="middle" x="486.55" y="-23.34" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="203.83" y="-75.71" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction -->
+<g id="node6" class="node">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="291.41,-297 173.41,-297 173.41,-261 291.41,-261 291.41,-297"/>
+<text text-anchor="middle" x="232.41" y="-275.3" font-family="Arial" font-size="14.00">OCUCPFunction</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU -->
+<g id="edge4" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU</title>
+<path fill="none" stroke="#528b8b" d="M197.6,-260.94C191.09,-256.08 185.16,-250.13 181.41,-243 177.69,-235.95 177.72,-227.64 179.32,-219.84"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="182.13,-210.04 183.7,-220.89 180.75,-214.85 179.37,-219.65 179.37,-219.65 179.37,-219.65 180.75,-214.85 175.05,-218.41 182.13,-210.04 182.13,-210.04"/>
+<text text-anchor="middle" x="216.91" y="-231.8" font-family="Arial" font-size="14.00">PROVIDES</text>
+<text text-anchor="middle" x="170.63" y="-213.84" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="187.1" y="-249.74" font-family="Arial" font-size="14.00">0..*</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
+<g id="edge6" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
+<path fill="none" stroke="#528b8b" d="M244.48,-260.97C247.71,-255.49 250.76,-249.22 252.41,-243 254.12,-236.56 253.25,-234.61 252.41,-228 249.27,-203.41 248.73,-196.54 238.41,-174 231.47,-158.84 221.15,-143.43 211.94,-131.13"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="205.8,-123.14 215.47,-128.33 208.85,-127.11 211.9,-131.07 211.9,-131.07 211.9,-131.07 208.85,-127.11 208.33,-133.81 205.8,-123.14 205.8,-123.14"/>
+<text text-anchor="middle" x="273.91" y="-188.3" font-family="Arial" font-size="14.00">E2LINK</text>
+<text text-anchor="middle" x="195.3" y="-126.94" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="232.98" y="-249.77" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
 <g id="node7" class="node">
-<title>OCUUPFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="619.5,-297 501.5,-297 501.5,-261 619.5,-261 619.5,-297"/>
-<text text-anchor="middle" x="560.5" y="-275.3" font-family="Arial" font-size="14.00">OCUUPFunction</text>
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="132.41,-210 14.41,-210 14.41,-174 132.41,-174 132.41,-210"/>
+<text text-anchor="middle" x="73.41" y="-188.3" font-family="Arial" font-size="14.00">OCUUPFunction</text>
 </g>
-<!-- ODUFunction -->
-<g id="node8" class="node">
-<title>ODUFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="99,-297 0,-297 0,-261 99,-261 99,-297"/>
-<text text-anchor="middle" x="49.5" y="-275.3" font-family="Arial" font-size="14.00">ODUFunction</text>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
+<g id="edge7" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
+<path fill="none" stroke="#528b8b" d="M173.26,-263.15C157.76,-257.97 141.46,-251.32 127.41,-243 115.9,-236.19 104.77,-226.59 95.64,-217.61"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="88.47,-210.3 98.69,-214.29 91.97,-213.87 95.47,-217.44 95.47,-217.44 95.47,-217.44 91.97,-213.87 92.26,-220.59 88.47,-210.3 88.47,-210.3"/>
+<text text-anchor="middle" x="150.91" y="-231.8" font-family="Arial" font-size="14.00">E1LINK</text>
+<text text-anchor="middle" x="77.97" y="-214.1" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="161.76" y="-251.95" font-family="Arial" font-size="14.00">0..1</text>
 </g>
-<!-- ODUFunction&#45;&gt;NRCellDU -->
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
 <g id="edge5" class="edge">
-<title>ODUFunction&#45;&gt;NRCellDU</title>
-<path fill="none" stroke="#528b8b" d="M59.07,-261C65.68,-250.43 75.3,-237.16 86.5,-228 94.34,-221.59 103.56,-216.06 112.79,-211.4"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="121.97,-207.04 114.87,-215.39 117.46,-209.18 112.94,-211.33 112.94,-211.33 112.94,-211.33 117.46,-209.18 111.01,-207.26 121.97,-207.04 121.97,-207.04"/>
-<text text-anchor="middle" x="122" y="-231.8" font-family="Arial" font-size="14.00">PROVIDES</text>
-<text text-anchor="middle" x="110.47" y="-210.84" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="69.57" y="-249.8" font-family="Arial" font-size="14.00">0..*</text>
-</g>
-<!-- ODUFunction&#45;&gt;NRSectorCarrier -->
-<g id="edge4" class="edge">
-<title>ODUFunction&#45;&gt;NRSectorCarrier</title>
-<path fill="none" stroke="#528b8b" d="M45.19,-260.86C40.64,-240.07 34.97,-204.08 41.5,-174 44.63,-159.59 51.09,-144.58 57.3,-132.34"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="62.17,-123.17 61.45,-134.12 59.82,-127.59 57.48,-132.01 57.48,-132.01 57.48,-132.01 59.82,-127.59 53.5,-129.9 62.17,-123.17 62.17,-123.17"/>
-<text text-anchor="middle" x="77" y="-188.3" font-family="Arial" font-size="14.00">PROVIDES</text>
-<text text-anchor="middle" x="50.67" y="-126.97" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="34.69" y="-249.66" font-family="Arial" font-size="14.00">0..*</text>
-</g>
-<!-- ORUFunction -->
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M253.33,-260.85C268.1,-247.97 287.63,-229.3 301.41,-210 336.64,-160.65 316.39,-128.69 360.41,-87 396.05,-53.24 450.83,-35.17 487.13,-26.33"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="497.3,-23.97 488.58,-30.61 492.43,-25.1 487.56,-26.23 487.56,-26.23 487.56,-26.23 492.43,-25.1 486.55,-21.84 497.3,-23.97 497.3,-23.97"/>
+<text text-anchor="middle" x="353.91" y="-144.8" font-family="Arial" font-size="14.00">O1LINK</text>
+<text text-anchor="middle" x="486.8" y="-12.77" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="264.83" y="-249.65" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
+<g id="edge8" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
+<path fill="none" stroke="#528b8b" d="M97.29,-173.8C115.12,-160.95 139.69,-143.26 159.25,-129.17"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="167.57,-123.18 162.08,-132.67 163.51,-126.1 159.45,-129.02 159.45,-129.02 159.45,-129.02 163.51,-126.1 156.82,-125.37 167.57,-123.18 167.57,-123.18"/>
+<text text-anchor="middle" x="163.91" y="-144.8" font-family="Arial" font-size="14.00">E2LINK</text>
+<text text-anchor="middle" x="157.07" y="-126.98" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="85.79" y="-162.6" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="node8" class="node">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="377.91,-384 278.91,-384 278.91,-348 377.91,-348 377.91,-384"/>
+<text text-anchor="middle" x="328.41" y="-362.3" font-family="Arial" font-size="14.00">ODUFunction</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU -->
+<g id="edge10" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU</title>
+<path fill="none" stroke="#528b8b" d="M354.31,-347.8C373.83,-334.84 400.78,-316.94 422.09,-302.79"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="430.54,-297.18 424.7,-306.46 426.38,-299.94 422.21,-302.71 422.21,-302.71 422.21,-302.71 426.38,-299.94 419.72,-298.96 430.54,-297.18 430.54,-297.18"/>
+<text text-anchor="middle" x="435.91" y="-318.8" font-family="Arial" font-size="14.00">PROVIDES</text>
+<text text-anchor="middle" x="419.04" y="-300.98" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="343.81" y="-336.6" font-family="Arial" font-size="14.00">0..*</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier -->
+<g id="edge9" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier</title>
+<path fill="none" stroke="#528b8b" d="M325.56,-347.91C322.83,-326.22 321.1,-288.33 336.41,-261 347.24,-241.67 366.12,-226.4 384.13,-215.26"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="392.86,-210.13 386.52,-219.08 388.55,-212.66 384.24,-215.2 384.24,-215.2 384.24,-215.2 388.55,-212.66 381.96,-211.32 392.86,-210.13 392.86,-210.13"/>
+<text text-anchor="middle" x="371.91" y="-275.3" font-family="Arial" font-size="14.00">PROVIDES</text>
+<text text-anchor="middle" x="381.36" y="-213.93" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="315.06" y="-336.71" font-family="Arial" font-size="14.00">0..*</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
+<g id="edge14" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
+<path fill="none" stroke="#528b8b" d="M278.59,-362.47C237.04,-358.92 176.99,-350.41 128.41,-330 58,-300.42 26.76,-283.33 5.41,-210 0.94,-194.64 -3.76,-187.11 5.41,-174 29.37,-139.73 72.55,-122.67 111.28,-114.21"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="121.54,-112.14 112.62,-118.53 116.63,-113.13 111.73,-114.12 111.73,-114.12 111.73,-114.12 116.63,-113.13 110.84,-109.71 121.54,-112.14 121.54,-112.14"/>
+<text text-anchor="middle" x="40.91" y="-231.8" font-family="Arial" font-size="14.00">E2LINK</text>
+<text text-anchor="middle" x="111.04" y="-115.94" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="267.09" y="-366.27" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction -->
+<g id="edge13" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction</title>
+<path fill="none" stroke="#528b8b" d="M282.71,-347.96C273.59,-343.12 264.62,-337.17 257.41,-330 250.88,-323.51 245.76,-314.96 241.89,-306.77"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="237.93,-297.47 245.99,-304.91 239.89,-302.07 241.85,-306.67 241.85,-306.67 241.85,-306.67 239.89,-302.07 237.71,-308.43 237.93,-297.47 237.93,-297.47"/>
+<text text-anchor="middle" x="285.41" y="-318.8" font-family="Arial" font-size="14.00">F1CLINK</text>
+<text text-anchor="middle" x="226.43" y="-301.27" font-family="Arial" font-size="14.00">0..1</text>
+<text text-anchor="middle" x="271.21" y="-336.76" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
+<g id="edge12" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
+<path fill="none" stroke="#528b8b" d="M278.58,-362.38C229.15,-357.16 154.34,-341.8 108.41,-297 87.6,-276.7 79.16,-243.64 75.74,-220.25"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="74.49,-210.26 80.2,-219.63 75.11,-215.22 75.73,-220.19 75.73,-220.19 75.73,-220.19 75.11,-215.22 71.27,-220.74 74.49,-210.26 74.49,-210.26"/>
+<text text-anchor="middle" x="136.41" y="-275.3" font-family="Arial" font-size="14.00">F1ULINK</text>
+<text text-anchor="middle" x="63.99" y="-214.06" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="267.08" y="-351.18" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
+<g id="edge11" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M377.92,-360.84C407.87,-356.54 445.85,-347.79 475.41,-330 515.61,-305.81 524.41,-283.42 524.41,-236.5 524.41,-236.5 524.41,-236.5 524.41,-104 524.41,-84.75 524.41,-63.05 524.41,-46.4"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="524.41,-36.26 528.91,-46.26 524.41,-41.26 524.41,-46.26 524.41,-46.26 524.41,-46.26 524.41,-41.26 519.91,-46.26 524.41,-36.26 524.41,-36.26"/>
+<text text-anchor="middle" x="548.91" y="-188.3" font-family="Arial" font-size="14.00">O1LINK</text>
+<text text-anchor="middle" x="513.91" y="-40.06" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="389.42" y="-349.64" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction -->
 <g id="node9" class="node">
-<title>ORUFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="737,-297 638,-297 638,-261 737,-261 737,-297"/>
-<text text-anchor="middle" x="687.5" y="-275.3" font-family="Arial" font-size="14.00">ORUFunction</text>
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="517.91,-471 418.91,-471 418.91,-435 517.91,-435 517.91,-471"/>
+<text text-anchor="middle" x="468.41" y="-449.3" font-family="Arial" font-size="14.00">ORUFunction</text>
 </g>
-<!-- Sector -->
-<g id="node10" class="node">
-<title>Sector</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="189.5,-297 133.5,-297 133.5,-261 189.5,-261 189.5,-297"/>
-<text text-anchor="middle" x="161.5" y="-275.3" font-family="Arial" font-size="14.00">Sector</text>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="edge15" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<path fill="none" stroke="#528b8b" d="M418.79,-451.74C358.02,-450.25 260.32,-443.64 237.41,-417 222.87,-400.09 243.63,-387.85 268.97,-379.71"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="278.84,-376.79 270.52,-383.95 274.04,-378.21 269.25,-379.63 269.25,-379.63 269.25,-379.63 274.04,-378.21 267.97,-375.31 278.84,-376.79 278.84,-376.79"/>
+<text text-anchor="middle" x="272.41" y="-405.8" font-family="Arial" font-size="14.00">OFHULINK</text>
+<text text-anchor="middle" x="268.34" y="-380.59" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="407.29" y="-455.54" font-family="Arial" font-size="14.00">0..1</text>
 </g>
-<!-- Sector&#45;&gt;NRCellDU -->
-<g id="edge6" class="edge">
-<title>Sector&#45;&gt;NRCellDU</title>
-<path fill="none" stroke="#528b8b" d="M161.5,-260.8C161.5,-249.16 161.5,-233.55 161.5,-220.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="161.5,-210.18 166,-220.18 161.5,-215.18 161.5,-220.18 161.5,-220.18 161.5,-220.18 161.5,-215.18 157,-220.18 161.5,-210.18 161.5,-210.18"/>
-<text text-anchor="middle" x="192" y="-231.8" font-family="Arial" font-size="14.00">GROUPS</text>
-<text text-anchor="middle" x="150" y="-213.98" font-family="Arial" font-size="14.00">0..1</text>
-<text text-anchor="middle" x="151" y="-249.6" font-family="Arial" font-size="14.00">0..*</text>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="edge16" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<path fill="none" stroke="#528b8b" d="M418.71,-445.7C383.88,-440.17 341.62,-430.82 330.41,-417 325.31,-410.71 323.66,-402.38 323.62,-394.32"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="324.34,-384.08 328.13,-394.37 323.99,-389.07 323.64,-394.06 323.64,-394.06 323.64,-394.06 323.99,-389.07 319.15,-393.74 324.34,-384.08 324.34,-384.08"/>
+<text text-anchor="middle" x="364.91" y="-405.8" font-family="Arial" font-size="14.00">OFHSLINK</text>
+<text text-anchor="middle" x="313.84" y="-387.88" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="407.21" y="-434.5" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="edge18" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<path fill="none" stroke="#528b8b" d="M446.69,-434.8C433.41,-424.67 415.88,-411.93 399.41,-402 391.71,-397.36 383.32,-392.81 375.08,-388.6"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="365.89,-384.01 376.85,-384.45 370.36,-386.24 374.84,-388.48 374.84,-388.48 374.84,-388.48 370.36,-386.24 372.83,-392.5 365.89,-384.01 365.89,-384.01"/>
+<text text-anchor="middle" x="457.41" y="-405.8" font-family="Arial" font-size="14.00">OFHMLINK</text>
+<text text-anchor="middle" x="355.39" y="-387.81" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="435.19" y="-423.6" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="edge19" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<path fill="none" stroke="#528b8b" d="M486.93,-434.76C495.59,-424.62 502.42,-411.88 494.41,-402 481.04,-385.52 430.11,-376.5 388.15,-371.77"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="377.98,-370.68 388.41,-367.27 382.96,-371.21 387.93,-371.74 387.93,-371.74 387.93,-371.74 382.96,-371.21 387.45,-376.22 377.98,-370.68 377.98,-370.68"/>
+<text text-anchor="middle" x="533.41" y="-405.8" font-family="Arial" font-size="14.00">OFHCLINK</text>
+<text text-anchor="middle" x="388.48" y="-374.48" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="475.43" y="-423.56" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
+<g id="edge17" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M518.1,-443.04C536.64,-437.82 556.92,-429.65 572.41,-417 592.3,-400.75 601.41,-392.69 601.41,-367 601.41,-367 601.41,-367 601.41,-104 601.41,-77.22 580.16,-55.12 559.99,-40.18"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="551.77,-34.41 562.54,-36.47 555.87,-37.28 559.96,-40.15 559.96,-40.15 559.96,-40.15 555.87,-37.28 557.38,-43.84 551.77,-34.41 551.77,-34.41"/>
+<text text-anchor="middle" x="637.41" y="-231.8" font-family="Arial" font-size="14.00">OFHMLINK</text>
+<text text-anchor="middle" x="562.27" y="-38.21" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="529.6" y="-431.84" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
+<g id="edge20" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M518.16,-443.77C585.25,-431.23 696.41,-404.76 696.41,-367 696.41,-367 696.41,-367 696.41,-104 696.41,-44.45 612.52,-26.62 561.91,-21.28"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="551.66,-20.32 562.04,-16.77 556.64,-20.79 561.62,-21.25 561.62,-21.25 561.62,-21.25 556.64,-20.79 561.2,-25.73 551.66,-20.32 551.66,-20.32"/>
+<text text-anchor="middle" x="720.91" y="-231.8" font-family="Arial" font-size="14.00">O1LINK</text>
+<text text-anchor="middle" x="562.16" y="-9.12" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="529.66" y="-447.57" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranSector -->
+<g id="node11" class="node">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranSector</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="553.41,-384 497.41,-384 497.41,-348 553.41,-348 553.41,-384"/>
+<text text-anchor="middle" x="525.41" y="-362.3" font-family="Arial" font-size="14.00">Sector</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranSector&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU -->
+<g id="edge21" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranSector&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU</title>
+<path fill="none" stroke="#528b8b" d="M511.45,-347.8C501.53,-335.59 488.06,-318.99 476.93,-305.28"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="470.35,-297.18 480.15,-302.1 473.5,-301.06 476.65,-304.94 476.65,-304.94 476.65,-304.94 473.5,-301.06 473.16,-307.78 470.35,-297.18 470.35,-297.18"/>
+<text text-anchor="middle" x="525.91" y="-318.8" font-family="Arial" font-size="14.00">GROUPS</text>
+<text text-anchor="middle" x="458.85" y="-300.98" font-family="Arial" font-size="14.00">0..1</text>
+<text text-anchor="middle" x="500.95" y="-336.6" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 </g>
 </svg>
index a00a178..788e5ad 100644 (file)
-<svg width="634px" height="1198px"
- viewBox="0.00 0.00 634.00 1198.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1.0 1.0) rotate(0.0) translate(4.0 1194.0)">
+<svg width="634px" height="1284px"
+ viewBox="0.00 0.00 634.00 1284.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1.0 1.0) rotate(0.0) translate(4.0 1280.0)">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1194 630,-1194 630,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1280 630,-1280 630,4 -4,4"/>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran -->
 <g id="node1" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran</title>
-<polygon fill="lightblue" stroke="black" points="128,-567 0,-567 0,-531 128,-531 128,-567"/>
-<text text-anchor="middle" x="64" y="-545.3" font-family="Arial" font-size="14.00">o&#45;ran&#45;smo&#45;teiv&#45;ran</text>
+<polygon fill="lightblue" stroke="black" points="128,-611 0,-611 0,-575 128,-575 128,-611"/>
+<text text-anchor="middle" x="64" y="-589.3" font-family="Arial" font-size="14.00">o&#45;ran&#45;smo&#45;teiv&#45;ran</text>
 </g>
 <!-- AntennaCapability -->
-<g id="node12" class="node">
+<g id="node13" class="node">
 <title>AntennaCapability</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="296.5,-1102 170.5,-1102 170.5,-1066 296.5,-1066 296.5,-1102"/>
-<text text-anchor="middle" x="233.5" y="-1080.3" font-family="Arial" font-size="14.00">AntennaCapability</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="296.5,-1173 170.5,-1173 170.5,-1137 296.5,-1137 296.5,-1173"/>
+<text text-anchor="middle" x="233.5" y="-1151.3" font-family="Arial" font-size="14.00">AntennaCapability</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;AntennaCapability -->
 <g id="edge1" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;AntennaCapability</title>
-<path fill="none" stroke="black" d="M66.6,-567.27C72.5,-628.77 96.35,-833.04 164,-986 175.7,-1012.46 194.97,-1039.16 210.09,-1057.99"/>
-<polygon fill="black" stroke="black" points="207.45,-1060.29 216.49,-1065.81 212.86,-1055.85 207.45,-1060.29"/>
+<path fill="none" stroke="black" d="M66.27,-611.05C71.25,-674.67 92.9,-893.46 164,-1057 175.54,-1083.53 194.81,-1110.22 209.99,-1129.03"/>
+<polygon fill="black" stroke="black" points="207.36,-1131.35 216.41,-1136.84 212.76,-1126.9 207.36,-1131.35"/>
 </g>
 <!-- NRCellCU -->
-<g id="node13" class="node">
+<g id="node14" class="node">
 <title>NRCellCU</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="273,-977 194,-977 194,-941 273,-941 273,-977"/>
-<text text-anchor="middle" x="233.5" y="-955.3" font-family="Arial" font-size="14.00">NRCellCU</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="273,-1048 194,-1048 194,-1012 273,-1012 273,-1048"/>
+<text text-anchor="middle" x="233.5" y="-1026.3" font-family="Arial" font-size="14.00">NRCellCU</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;NRCellCU -->
 <g id="edge2" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;NRCellCU</title>
-<path fill="none" stroke="black" d="M68.81,-567.25C79.47,-616.36 112.27,-754.73 164,-860 176.93,-886.31 196.25,-913.5 211.08,-932.72"/>
-<polygon fill="black" stroke="black" points="208.41,-934.98 217.33,-940.7 213.92,-930.67 208.41,-934.98"/>
+<path fill="none" stroke="black" d="M68.22,-611.33C77.81,-663.36 108.98,-815.66 164,-931 176.62,-957.46 195.97,-984.64 210.89,-1003.81"/>
+<polygon fill="black" stroke="black" points="208.24,-1006.1 217.19,-1011.77 213.73,-1001.75 208.24,-1006.1"/>
 </g>
 <!-- NRCellDU -->
-<g id="node14" class="node">
+<g id="node15" class="node">
 <title>NRCellDU</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="273,-851 194,-851 194,-815 273,-815 273,-851"/>
-<text text-anchor="middle" x="233.5" y="-829.3" font-family="Arial" font-size="14.00">NRCellDU</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="273,-922 194,-922 194,-886 273,-886 273,-922"/>
+<text text-anchor="middle" x="233.5" y="-900.3" font-family="Arial" font-size="14.00">NRCellDU</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;NRCellDU -->
 <g id="edge3" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;NRCellDU</title>
-<path fill="none" stroke="black" d="M73.46,-567.19C89.62,-601.44 126.61,-677.5 164,-738 178.93,-762.15 197.95,-788.21 212.15,-806.92"/>
-<polygon fill="black" stroke="black" points="209.45,-809.15 218.31,-814.97 215.01,-804.9 209.45,-809.15"/>
+<path fill="none" stroke="black" d="M71.95,-611.23C86.71,-649.18 123.22,-738.95 164,-809 178.2,-833.38 197.13,-859.24 211.49,-877.81"/>
+<polygon fill="black" stroke="black" points="208.82,-880.08 217.73,-885.8 214.33,-875.77 208.82,-880.08"/>
 </g>
 <!-- NRSectorCarrier -->
-<g id="node15" class="node">
+<g id="node16" class="node">
 <title>NRSectorCarrier</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="291.5,-729 175.5,-729 175.5,-693 291.5,-693 291.5,-729"/>
-<text text-anchor="middle" x="233.5" y="-707.3" font-family="Arial" font-size="14.00">NRSectorCarrier</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="291.5,-800 175.5,-800 175.5,-764 291.5,-764 291.5,-800"/>
+<text text-anchor="middle" x="233.5" y="-778.3" font-family="Arial" font-size="14.00">NRSectorCarrier</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;NRSectorCarrier -->
 <g id="edge4" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;NRSectorCarrier</title>
-<path fill="none" stroke="black" d="M83.89,-567.27C113.88,-596.27 172.45,-652.92 206.42,-685.77"/>
-<polygon fill="black" stroke="black" points="204.06,-688.36 213.68,-692.8 208.93,-683.33 204.06,-688.36"/>
+<path fill="none" stroke="black" d="M81.1,-611.25C100.68,-633.43 134.73,-671.99 164,-705 179.12,-722.06 196.16,-741.21 209.46,-756.14"/>
+<polygon fill="black" stroke="black" points="207.16,-758.83 216.43,-763.97 212.39,-754.17 207.16,-758.83"/>
 </g>
 <!-- NearRTRICFunction -->
-<g id="node16" class="node">
+<g id="node17" class="node">
 <title>NearRTRICFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="303,-625 164,-625 164,-589 303,-589 303,-625"/>
-<text text-anchor="middle" x="233.5" y="-603.3" font-family="Arial" font-size="14.00">NearRTRICFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="303,-696 164,-696 164,-660 303,-660 303,-696"/>
+<text text-anchor="middle" x="233.5" y="-674.3" font-family="Arial" font-size="14.00">NearRTRICFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;NearRTRICFunction -->
 <g id="edge5" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;NearRTRICFunction</title>
-<path fill="none" stroke="black" d="M117.08,-567.03C134.1,-572.93 153.16,-579.53 170.81,-585.64"/>
-<polygon fill="black" stroke="black" points="169.86,-589.01 180.45,-588.98 172.15,-582.4 169.86,-589.01"/>
+<path fill="none" stroke="black" d="M100.52,-611.03C126.06,-623.99 160.68,-641.55 188.05,-655.44"/>
+<polygon fill="black" stroke="black" points="186.53,-658.6 197.03,-660 189.7,-652.35 186.53,-658.6"/>
 </g>
 <!-- OCUCPFunction -->
-<g id="node17" class="node">
+<g id="node18" class="node">
 <title>OCUCPFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="292.5,-540 174.5,-540 174.5,-504 292.5,-504 292.5,-540"/>
-<text text-anchor="middle" x="233.5" y="-518.3" font-family="Arial" font-size="14.00">OCUCPFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="292.5,-611 174.5,-611 174.5,-575 292.5,-575 292.5,-611"/>
+<text text-anchor="middle" x="233.5" y="-589.3" font-family="Arial" font-size="14.00">OCUCPFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;OCUCPFunction -->
 <g id="edge6" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;OCUCPFunction</title>
-<path fill="none" stroke="black" d="M128.32,-538.79C140.12,-536.89 152.5,-534.9 164.43,-532.97"/>
-<polygon fill="black" stroke="black" points="165.01,-536.42 174.33,-531.38 163.9,-529.51 165.01,-536.42"/>
+<path fill="none" stroke="black" d="M128.32,-593C140,-593 152.25,-593 164.07,-593"/>
+<polygon fill="black" stroke="black" points="164.33,-596.5 174.33,-593 164.33,-589.5 164.33,-596.5"/>
 </g>
 <!-- OCUUPFunction -->
-<g id="node18" class="node">
+<g id="node19" class="node">
 <title>OCUUPFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="292.5,-443 174.5,-443 174.5,-407 292.5,-407 292.5,-443"/>
-<text text-anchor="middle" x="233.5" y="-421.3" font-family="Arial" font-size="14.00">OCUUPFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="292.5,-522 174.5,-522 174.5,-486 292.5,-486 292.5,-522"/>
+<text text-anchor="middle" x="233.5" y="-500.3" font-family="Arial" font-size="14.00">OCUUPFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;OCUUPFunction -->
 <g id="edge7" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;OCUUPFunction</title>
-<path fill="none" stroke="black" d="M89.36,-530.97C118.51,-509.39 167.44,-473.16 199.85,-449.17"/>
-<polygon fill="black" stroke="black" points="202.16,-451.82 208.11,-443.05 197.99,-446.19 202.16,-451.82"/>
+<path fill="none" stroke="black" d="M98.9,-574.99C125.03,-561.1 161.35,-541.8 189.53,-526.83"/>
+<polygon fill="black" stroke="black" points="191.18,-529.92 198.37,-522.14 187.89,-523.74 191.18,-529.92"/>
 </g>
 <!-- ODUFunction -->
-<g id="node19" class="node">
+<g id="node20" class="node">
 <title>ODUFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="283,-333 184,-333 184,-297 283,-297 283,-333"/>
-<text text-anchor="middle" x="233.5" y="-311.3" font-family="Arial" font-size="14.00">ODUFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="283,-415 184,-415 184,-379 283,-379 283,-415"/>
+<text text-anchor="middle" x="233.5" y="-393.3" font-family="Arial" font-size="14.00">ODUFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;ODUFunction -->
 <g id="edge8" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;ODUFunction</title>
-<path fill="none" stroke="black" d="M75.97,-530.9C93.61,-502.12 129.78,-444.43 164,-398 178.44,-378.4 195.93,-357.26 209.62,-341.21"/>
-<polygon fill="black" stroke="black" points="212.53,-343.19 216.39,-333.32 207.22,-338.63 212.53,-343.19"/>
+<path fill="none" stroke="black" d="M80.42,-574.91C99.89,-552.08 134.41,-511.61 164,-477 179.48,-458.89 196.95,-438.49 210.37,-422.83"/>
+<polygon fill="black" stroke="black" points="213.14,-424.97 216.98,-415.1 207.82,-420.42 213.14,-424.97"/>
 </g>
 <!-- ORUFunction -->
-<g id="node20" class="node">
+<g id="node21" class="node">
 <title>ORUFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="283,-195 184,-195 184,-159 283,-159 283,-195"/>
-<text text-anchor="middle" x="233.5" y="-173.3" font-family="Arial" font-size="14.00">ORUFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="283,-307 184,-307 184,-271 283,-271 283,-307"/>
+<text text-anchor="middle" x="233.5" y="-285.3" font-family="Arial" font-size="14.00">ORUFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;ORUFunction -->
 <g id="edge9" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;ORUFunction</title>
-<path fill="none" stroke="black" d="M70.58,-530.78C84.11,-487.55 120.74,-375.82 164,-288 178.78,-258.01 199.3,-225.68 214.02,-203.7"/>
-<polygon fill="black" stroke="black" points="217.04,-205.48 219.74,-195.23 211.24,-201.56 217.04,-205.48"/>
+<path fill="none" stroke="black" d="M71.08,-574.79C84.59,-535.6 119.46,-441.06 164,-370 176.49,-350.07 193.57,-329.86 207.55,-314.61"/>
+<polygon fill="black" stroke="black" points="210.28,-316.82 214.54,-307.12 205.16,-312.05 210.28,-316.82"/>
+</g>
+<!-- SMO -->
+<g id="node22" class="node">
+<title>SMO</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="260.5,-184 206.5,-184 206.5,-148 260.5,-148 260.5,-184"/>
+<text text-anchor="middle" x="233.5" y="-162.3" font-family="Arial" font-size="14.00">SMO</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;SMO -->
+<g id="edge10" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;SMO</title>
+<path fill="none" stroke="black" d="M68.28,-574.64C77.93,-523.25 109.02,-374.33 164,-262 176.41,-236.64 195.32,-210.75 210.14,-192.26"/>
+<polygon fill="black" stroke="black" points="213.01,-194.27 216.61,-184.31 207.58,-189.85 213.01,-194.27"/>
 </g>
 <!-- Sector -->
-<g id="node21" class="node">
+<g id="node23" class="node">
 <title>Sector</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="261.5,-118 205.5,-118 205.5,-82 261.5,-82 261.5,-118"/>
-<text text-anchor="middle" x="233.5" y="-96.3" font-family="Arial" font-size="14.00">Sector</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="261.5,-107 205.5,-107 205.5,-71 261.5,-71 261.5,-107"/>
+<text text-anchor="middle" x="233.5" y="-85.3" font-family="Arial" font-size="14.00">Sector</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;Sector -->
-<g id="edge10" class="edge">
+<g id="edge11" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ran&#45;&gt;Sector</title>
-<path fill="none" stroke="black" d="M65.23,-530.96C66.81,-471.32 78.61,-277.06 164,-150 172.33,-137.61 184.8,-127.19 196.84,-119.13"/>
-<polygon fill="black" stroke="black" points="198.87,-121.98 205.45,-113.67 195.13,-116.06 198.87,-121.98"/>
+<path fill="none" stroke="black" d="M64.54,-574.81C63.75,-509.9 68.43,-285.67 164,-139 172.15,-126.49 184.59,-116.05 196.64,-108"/>
+<polygon fill="black" stroke="black" points="198.68,-110.85 205.28,-102.56 194.95,-104.92 198.68,-110.85"/>
 </g>
 <!-- AntennaCapability&#45;attributes -->
 <g id="node2" class="node">
 <title>AntennaCapability&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="622,-1190 343,-1190 343,-1092 622,-1092 622,-1190"/>
-<text text-anchor="start" x="351.5" y="-1174.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="580.5" y="-1174.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="351.5" y="-1159.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="476.5" y="-1159.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="351.5" y="-1144.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="351.5" y="-1129.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;eUtranFqBands</text>
-<text text-anchor="start" x="580.5" y="-1129.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="351.5" y="-1114.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;geranFqBands</text>
-<text text-anchor="start" x="580.5" y="-1114.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="351.5" y="-1099.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nRFqBands</text>
-<text text-anchor="start" x="580.5" y="-1099.8" font-family="Arial" font-size="14.00">string</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="622,-1276 343,-1276 343,-1178 622,-1178 622,-1276"/>
+<text text-anchor="start" x="351.5" y="-1260.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="580.5" y="-1260.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="351.5" y="-1245.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="476.5" y="-1245.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="351.5" y="-1230.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="351.5" y="-1215.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;eUtranFqBands</text>
+<text text-anchor="start" x="580.5" y="-1215.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="351.5" y="-1200.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;geranFqBands</text>
+<text text-anchor="start" x="580.5" y="-1200.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="351.5" y="-1185.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nRFqBands</text>
+<text text-anchor="start" x="580.5" y="-1185.8" font-family="Arial" font-size="14.00">string</text>
 </g>
 <!-- NRCellCU&#45;attributes -->
 <g id="node3" class="node">
 <title>NRCellCU&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="606.5,-1073.5 358.5,-1073.5 358.5,-960.5 606.5,-960.5 606.5,-1073.5"/>
-<text text-anchor="start" x="366.5" y="-1057.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="564.5" y="-1057.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="366.5" y="-1042.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="460.5" y="-1042.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="366.5" y="-1027.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="366.5" y="-1012.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;cellLocalId</text>
-<text text-anchor="start" x="568.5" y="-1012.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="366.5" y="-997.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nCI</text>
-<text text-anchor="start" x="568.5" y="-997.8" font-family="Arial" font-size="14.00">int64</text>
-<text text-anchor="start" x="366.5" y="-982.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nRTAC</text>
-<text text-anchor="start" x="568.5" y="-982.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="366.5" y="-967.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;plmnId</text>
-<text text-anchor="start" x="460.5" y="-967.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="606.5,-1159.5 358.5,-1159.5 358.5,-1046.5 606.5,-1046.5 606.5,-1159.5"/>
+<text text-anchor="start" x="366.5" y="-1143.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="564.5" y="-1143.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="366.5" y="-1128.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="460.5" y="-1128.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="366.5" y="-1113.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="366.5" y="-1098.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;cellLocalId</text>
+<text text-anchor="start" x="568.5" y="-1098.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="366.5" y="-1083.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nCI</text>
+<text text-anchor="start" x="568.5" y="-1083.8" font-family="Arial" font-size="14.00">int64</text>
+<text text-anchor="start" x="366.5" y="-1068.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nRTAC</text>
+<text text-anchor="start" x="568.5" y="-1068.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="366.5" y="-1053.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;plmnId</text>
+<text text-anchor="start" x="460.5" y="-1053.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
 </g>
 <!-- NRCellDU&#45;attributes -->
 <g id="node4" class="node">
 <title>NRCellDU&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="606.5,-942.5 358.5,-942.5 358.5,-829.5 606.5,-829.5 606.5,-942.5"/>
-<text text-anchor="start" x="366.5" y="-926.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="564.5" y="-926.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="366.5" y="-911.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="460.5" y="-911.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="366.5" y="-896.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="366.5" y="-881.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;cellLocalId</text>
-<text text-anchor="start" x="568.5" y="-881.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="366.5" y="-866.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nCI</text>
-<text text-anchor="start" x="568.5" y="-866.8" font-family="Arial" font-size="14.00">int64</text>
-<text text-anchor="start" x="366.5" y="-851.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nRPCI</text>
-<text text-anchor="start" x="568.5" y="-851.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="366.5" y="-836.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nRTAC</text>
-<text text-anchor="start" x="568.5" y="-836.8" font-family="Arial" font-size="14.00">int32</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="606.5,-1028.5 358.5,-1028.5 358.5,-915.5 606.5,-915.5 606.5,-1028.5"/>
+<text text-anchor="start" x="366.5" y="-1012.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="564.5" y="-1012.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="366.5" y="-997.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="460.5" y="-997.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="366.5" y="-982.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="366.5" y="-967.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;cellLocalId</text>
+<text text-anchor="start" x="568.5" y="-967.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="366.5" y="-952.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nCI</text>
+<text text-anchor="start" x="568.5" y="-952.8" font-family="Arial" font-size="14.00">int64</text>
+<text text-anchor="start" x="366.5" y="-937.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nRPCI</text>
+<text text-anchor="start" x="568.5" y="-937.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="366.5" y="-922.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nRTAC</text>
+<text text-anchor="start" x="568.5" y="-922.8" font-family="Arial" font-size="14.00">int32</text>
 </g>
 <!-- NRSectorCarrier&#45;attributes -->
 <g id="node5" class="node">
 <title>NRSectorCarrier&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="626,-811 339,-811 339,-683 626,-683 626,-811"/>
-<text text-anchor="start" x="347.5" y="-795.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="584.5" y="-795.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="347.5" y="-780.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="480.5" y="-780.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="347.5" y="-765.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="347.5" y="-750.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;arfcnDL</text>
-<text text-anchor="start" x="588.5" y="-750.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="347.5" y="-735.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;arfcnUL</text>
-<text text-anchor="start" x="588.5" y="-735.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="347.5" y="-720.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;bSChannelBwDL</text>
-<text text-anchor="start" x="588.5" y="-720.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="347.5" y="-705.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;frequencyDL</text>
-<text text-anchor="start" x="588.5" y="-705.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="347.5" y="-690.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;frequencyUL</text>
-<text text-anchor="start" x="588.5" y="-690.8" font-family="Arial" font-size="14.00">int32</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="626,-897 339,-897 339,-769 626,-769 626,-897"/>
+<text text-anchor="start" x="347.5" y="-881.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="584.5" y="-881.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="347.5" y="-866.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="480.5" y="-866.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="347.5" y="-851.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="347.5" y="-836.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;arfcnDL</text>
+<text text-anchor="start" x="588.5" y="-836.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="347.5" y="-821.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;arfcnUL</text>
+<text text-anchor="start" x="588.5" y="-821.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="347.5" y="-806.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;bSChannelBwDL</text>
+<text text-anchor="start" x="588.5" y="-806.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="347.5" y="-791.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;frequencyDL</text>
+<text text-anchor="start" x="588.5" y="-791.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="347.5" y="-776.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;frequencyUL</text>
+<text text-anchor="start" x="588.5" y="-776.8" font-family="Arial" font-size="14.00">int32</text>
 </g>
 <!-- NearRTRICFunction&#45;attributes -->
 <g id="node6" class="node">
 <title>NearRTRICFunction&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="610.5,-664.5 354.5,-664.5 354.5,-581.5 610.5,-581.5 610.5,-664.5"/>
-<text text-anchor="start" x="362.5" y="-648.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="568.5" y="-648.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="362.5" y="-633.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="464.5" y="-633.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="362.5" y="-618.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="362.5" y="-603.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nearRtRicId</text>
-<text text-anchor="start" x="572.5" y="-603.8" font-family="Arial" font-size="14.00">int64</text>
-<text text-anchor="start" x="362.5" y="-588.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;pLMNId</text>
-<text text-anchor="start" x="464.5" y="-588.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="610.5,-750.5 354.5,-750.5 354.5,-667.5 610.5,-667.5 610.5,-750.5"/>
+<text text-anchor="start" x="362.5" y="-734.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="568.5" y="-734.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="362.5" y="-719.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="464.5" y="-719.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="362.5" y="-704.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="362.5" y="-689.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;nearRtRicId</text>
+<text text-anchor="start" x="572.5" y="-689.8" font-family="Arial" font-size="14.00">int64</text>
+<text text-anchor="start" x="362.5" y="-674.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;pLMNId</text>
+<text text-anchor="start" x="464.5" y="-674.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
 </g>
 <!-- OCUCPFunction&#45;attributes -->
 <g id="node7" class="node">
 <title>OCUCPFunction&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="616,-563.5 349,-563.5 349,-450.5 616,-450.5 616,-563.5"/>
-<text text-anchor="start" x="357.5" y="-547.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="574.5" y="-547.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="357.5" y="-532.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="470.5" y="-532.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="357.5" y="-517.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="357.5" y="-502.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBCUName</text>
-<text text-anchor="start" x="574.5" y="-502.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="357.5" y="-487.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBId</text>
-<text text-anchor="start" x="578.5" y="-487.8" font-family="Arial" font-size="14.00">int64</text>
-<text text-anchor="start" x="357.5" y="-472.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBIdLength</text>
-<text text-anchor="start" x="578.5" y="-472.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="357.5" y="-457.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;pLMNId</text>
-<text text-anchor="start" x="470.5" y="-457.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="616,-649.5 349,-649.5 349,-536.5 616,-536.5 616,-649.5"/>
+<text text-anchor="start" x="357.5" y="-633.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="574.5" y="-633.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="357.5" y="-618.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="470.5" y="-618.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="357.5" y="-603.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="357.5" y="-588.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBCUName</text>
+<text text-anchor="start" x="574.5" y="-588.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="357.5" y="-573.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBId</text>
+<text text-anchor="start" x="578.5" y="-573.8" font-family="Arial" font-size="14.00">int64</text>
+<text text-anchor="start" x="357.5" y="-558.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBIdLength</text>
+<text text-anchor="start" x="578.5" y="-558.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="357.5" y="-543.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;pLMNId</text>
+<text text-anchor="start" x="470.5" y="-543.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
 </g>
 <!-- OCUUPFunction&#45;attributes -->
 <g id="node8" class="node">
 <title>OCUUPFunction&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="614,-432 351,-432 351,-334 614,-334 614,-432"/>
-<text text-anchor="start" x="359.5" y="-416.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="572.5" y="-416.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="359.5" y="-401.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="468.5" y="-401.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="359.5" y="-386.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="359.5" y="-371.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBId</text>
-<text text-anchor="start" x="576.5" y="-371.8" font-family="Arial" font-size="14.00">int64</text>
-<text text-anchor="start" x="359.5" y="-356.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBIdLength</text>
-<text text-anchor="start" x="576.5" y="-356.8" font-family="Arial" font-size="14.00">int32</text>
-<text text-anchor="start" x="359.5" y="-341.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;pLMNIdList</text>
-<text text-anchor="start" x="598.5" y="-341.8" font-family="Arial" font-size="14.00">[]</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="614,-518 351,-518 351,-420 614,-420 614,-518"/>
+<text text-anchor="start" x="359.5" y="-502.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="572.5" y="-502.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="359.5" y="-487.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="468.5" y="-487.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="359.5" y="-472.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="359.5" y="-457.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBId</text>
+<text text-anchor="start" x="576.5" y="-457.8" font-family="Arial" font-size="14.00">int64</text>
+<text text-anchor="start" x="359.5" y="-442.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBIdLength</text>
+<text text-anchor="start" x="576.5" y="-442.8" font-family="Arial" font-size="14.00">int32</text>
+<text text-anchor="start" x="359.5" y="-427.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;pLMNIdList</text>
+<text text-anchor="start" x="598.5" y="-427.8" font-family="Arial" font-size="14.00">[]</text>
 </g>
 <!-- ODUFunction&#45;attributes -->
 <g id="node9" class="node">
 <title>ODUFunction&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="614,-315.5 351,-315.5 351,-202.5 614,-202.5 614,-315.5"/>
-<text text-anchor="start" x="359.5" y="-299.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="572.5" y="-299.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="359.5" y="-284.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="468.5" y="-284.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="359.5" y="-269.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="359.5" y="-254.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;dUpLMNId</text>
-<text text-anchor="start" x="468.5" y="-254.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="359.5" y="-239.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBDUId</text>
-<text text-anchor="start" x="576.5" y="-239.8" font-family="Arial" font-size="14.00">int64</text>
-<text text-anchor="start" x="359.5" y="-224.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBId</text>
-<text text-anchor="start" x="576.5" y="-224.8" font-family="Arial" font-size="14.00">int64</text>
-<text text-anchor="start" x="359.5" y="-209.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBIdLength</text>
-<text text-anchor="start" x="576.5" y="-209.8" font-family="Arial" font-size="14.00">int32</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="614,-401.5 351,-401.5 351,-288.5 614,-288.5 614,-401.5"/>
+<text text-anchor="start" x="359.5" y="-385.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="572.5" y="-385.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="359.5" y="-370.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="468.5" y="-370.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="359.5" y="-355.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="359.5" y="-340.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;dUpLMNId</text>
+<text text-anchor="start" x="468.5" y="-340.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="359.5" y="-325.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBDUId</text>
+<text text-anchor="start" x="576.5" y="-325.8" font-family="Arial" font-size="14.00">int64</text>
+<text text-anchor="start" x="359.5" y="-310.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBId</text>
+<text text-anchor="start" x="576.5" y="-310.8" font-family="Arial" font-size="14.00">int64</text>
+<text text-anchor="start" x="359.5" y="-295.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;gNBIdLength</text>
+<text text-anchor="start" x="576.5" y="-295.8" font-family="Arial" font-size="14.00">int32</text>
 </g>
 <!-- ORUFunction&#45;attributes -->
 <g id="node10" class="node">
 <title>ORUFunction&#45;attributes</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="590,-184 375,-184 375,-116 590,-116 590,-184"/>
-<text text-anchor="start" x="383.5" y="-168.8" font-family="Arial" font-size="14.00">id</text>
-<text text-anchor="start" x="548.5" y="-168.8" font-family="Arial" font-size="14.00">string</text>
-<text text-anchor="start" x="383.5" y="-153.8" font-family="Arial" font-size="14.00">sourceIds</text>
-<text text-anchor="start" x="444.5" y="-153.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
-<text text-anchor="start" x="383.5" y="-138.8" font-family="Arial" font-size="14.00"> attributes: </text>
-<text text-anchor="start" x="383.5" y="-123.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;oruId</text>
-<text text-anchor="start" x="552.5" y="-123.8" font-family="Arial" font-size="14.00">int64</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="590,-270 375,-270 375,-202 590,-202 590,-270"/>
+<text text-anchor="start" x="383.5" y="-254.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="548.5" y="-254.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="383.5" y="-239.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="444.5" y="-239.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="383.5" y="-224.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="383.5" y="-209.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;oruId</text>
+<text text-anchor="start" x="552.5" y="-209.8" font-family="Arial" font-size="14.00">int64</text>
+</g>
+<!-- SMO&#45;attributes -->
+<g id="node11" class="node">
+<title>SMO&#45;attributes</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="606.5,-184 358.5,-184 358.5,-116 606.5,-116 606.5,-184"/>
+<text text-anchor="start" x="366.5" y="-168.8" font-family="Arial" font-size="14.00">id</text>
+<text text-anchor="start" x="564.5" y="-168.8" font-family="Arial" font-size="14.00">string</text>
+<text text-anchor="start" x="366.5" y="-153.8" font-family="Arial" font-size="14.00">sourceIds</text>
+<text text-anchor="start" x="460.5" y="-153.8" font-family="Arial" font-size="14.00">&lt;&lt; Refer to Module &gt;&gt;</text>
+<text text-anchor="start" x="366.5" y="-138.8" font-family="Arial" font-size="14.00"> attributes: </text>
+<text text-anchor="start" x="366.5" y="-123.8" font-family="Arial" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&#160;&#160;smoName</text>
+<text text-anchor="start" x="564.5" y="-123.8" font-family="Arial" font-size="14.00">string</text>
 </g>
 <!-- Sector&#45;attributes -->
-<g id="node11" class="node">
+<g id="node12" class="node">
 <title>Sector&#45;attributes</title>
 <polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="611.5,-98 353.5,-98 353.5,0 611.5,0 611.5,-98"/>
 <text text-anchor="start" x="361.5" y="-82.8" font-family="Arial" font-size="14.00">id</text>
 <text text-anchor="start" x="566.5" y="-7.8" font-family="Arial" font-size="14.00">uint64</text>
 </g>
 <!-- AntennaCapability&#45;&gt;AntennaCapability&#45;attributes -->
-<g id="edge11" class="edge">
+<g id="edge12" class="edge">
 <title>AntennaCapability&#45;&gt;AntennaCapability&#45;attributes</title>
-<path fill="none" stroke="black" d="M296.51,-1098.31C307.9,-1100.94 320.22,-1103.78 332.91,-1106.71"/>
-<polygon fill="black" stroke="black" points="332.15,-1110.13 342.68,-1108.97 333.73,-1103.31 332.15,-1110.13"/>
+<path fill="none" stroke="black" d="M296.51,-1173.08C307.9,-1176.4 320.22,-1179.99 332.91,-1183.69"/>
+<polygon fill="black" stroke="black" points="332.1,-1187.1 342.68,-1186.54 334.06,-1180.38 332.1,-1187.1"/>
 </g>
 <!-- NRCellCU&#45;&gt;NRCellCU&#45;attributes -->
-<g id="edge12" class="edge">
+<g id="edge13" class="edge">
 <title>NRCellCU&#45;&gt;NRCellCU&#45;attributes</title>
-<path fill="none" stroke="black" d="M273.09,-968.06C293.91,-972.95 320.96,-979.3 348.64,-985.8"/>
-<polygon fill="black" stroke="black" points="347.92,-989.23 358.45,-988.11 349.52,-982.41 347.92,-989.23"/>
+<path fill="none" stroke="black" d="M273.09,-1041.41C293.91,-1047.56 320.96,-1055.55 348.64,-1063.73"/>
+<polygon fill="black" stroke="black" points="347.87,-1067.16 358.45,-1066.63 349.85,-1060.44 347.87,-1067.16"/>
 </g>
 <!-- NRCellDU&#45;&gt;NRCellDU&#45;attributes -->
-<g id="edge13" class="edge">
+<g id="edge14" class="edge">
 <title>NRCellDU&#45;&gt;NRCellDU&#45;attributes</title>
-<path fill="none" stroke="black" d="M273.09,-841.28C293.91,-845.75 320.96,-851.55 348.64,-857.49"/>
-<polygon fill="black" stroke="black" points="347.94,-860.92 358.45,-859.6 349.41,-854.08 347.94,-860.92"/>
+<path fill="none" stroke="black" d="M273.09,-914.62C293.91,-920.36 320.96,-927.8 348.64,-935.42"/>
+<polygon fill="black" stroke="black" points="347.88,-938.84 358.45,-938.12 349.74,-932.1 347.88,-938.84"/>
 </g>
 <!-- NRSectorCarrier&#45;&gt;NRSectorCarrier&#45;attributes -->
-<g id="edge14" class="edge">
+<g id="edge15" class="edge">
 <title>NRSectorCarrier&#45;&gt;NRSectorCarrier&#45;attributes</title>
-<path fill="none" stroke="black" d="M291.79,-719.35C303.26,-721.02 315.81,-722.85 328.82,-724.75"/>
-<polygon fill="black" stroke="black" points="328.45,-728.23 338.85,-726.21 329.46,-721.3 328.45,-728.23"/>
+<path fill="none" stroke="black" d="M291.79,-793.83C303.26,-796.2 315.81,-798.79 328.82,-801.47"/>
+<polygon fill="black" stroke="black" points="328.35,-804.95 338.85,-803.55 329.76,-798.1 328.35,-804.95"/>
 </g>
 <!-- NearRTRICFunction&#45;&gt;NearRTRICFunction&#45;attributes -->
-<g id="edge15" class="edge">
+<g id="edge16" class="edge">
 <title>NearRTRICFunction&#45;&gt;NearRTRICFunction&#45;attributes</title>
-<path fill="none" stroke="black" d="M303.3,-611.46C316.17,-612.29 330.03,-613.19 344.13,-614.1"/>
-<polygon fill="black" stroke="black" points="344.22,-617.61 354.43,-614.77 344.67,-610.63 344.22,-617.61"/>
+<path fill="none" stroke="black" d="M303.3,-686.64C316.17,-688.25 330.03,-689.99 344.13,-691.76"/>
+<polygon fill="black" stroke="black" points="344.07,-695.28 354.43,-693.05 344.94,-688.33 344.07,-695.28"/>
 </g>
 <!-- OCUCPFunction&#45;&gt;OCUCPFunction&#45;attributes -->
-<g id="edge16" class="edge">
+<g id="edge17" class="edge">
 <title>OCUCPFunction&#45;&gt;OCUCPFunction&#45;attributes</title>
-<path fill="none" stroke="black" d="M292.72,-518.46C306.78,-517.61 322.42,-516.66 338.51,-515.68"/>
-<polygon fill="black" stroke="black" points="338.81,-519.17 348.57,-515.07 338.38,-512.19 338.81,-519.17"/>
+<path fill="none" stroke="black" d="M292.72,-593C306.78,-593 322.42,-593 338.51,-593"/>
+<polygon fill="black" stroke="black" points="338.57,-596.5 348.57,-593 338.57,-589.5 338.57,-596.5"/>
 </g>
 <!-- OCUUPFunction&#45;&gt;OCUUPFunction&#45;attributes -->
-<g id="edge17" class="edge">
+<g id="edge18" class="edge">
 <title>OCUUPFunction&#45;&gt;OCUUPFunction&#45;attributes</title>
-<path fill="none" stroke="black" d="M292.72,-415.1C307.39,-412.61 323.78,-409.82 340.6,-406.96"/>
-<polygon fill="black" stroke="black" points="341.28,-410.39 350.55,-405.27 340.11,-403.49 341.28,-410.39"/>
+<path fill="none" stroke="black" d="M292.72,-495.75C307.39,-493.67 323.78,-491.35 340.6,-488.97"/>
+<polygon fill="black" stroke="black" points="341.14,-492.42 350.55,-487.56 340.16,-485.49 341.14,-492.42"/>
 </g>
 <!-- ODUFunction&#45;&gt;ODUFunction&#45;attributes -->
-<g id="edge18" class="edge">
+<g id="edge19" class="edge">
 <title>ODUFunction&#45;&gt;ODUFunction&#45;attributes</title>
-<path fill="none" stroke="black" d="M283,-304C300.05,-300.14 320.15,-295.58 340.92,-290.87"/>
-<polygon fill="black" stroke="black" points="341.84,-294.25 350.82,-288.63 340.29,-287.43 341.84,-294.25"/>
+<path fill="none" stroke="black" d="M283,-386.79C300.05,-383.2 320.15,-378.97 340.92,-374.6"/>
+<polygon fill="black" stroke="black" points="341.76,-378 350.82,-372.51 340.31,-371.15 341.76,-378"/>
 </g>
 <!-- ORUFunction&#45;&gt;ORUFunction&#45;attributes -->
-<g id="edge19" class="edge">
+<g id="edge20" class="edge">
 <title>ORUFunction&#45;&gt;ORUFunction&#45;attributes</title>
-<path fill="none" stroke="black" d="M283,-171.7C306.51,-169.13 335.84,-165.92 364.68,-162.77"/>
-<polygon fill="black" stroke="black" points="365.3,-166.22 374.86,-161.66 364.53,-159.26 365.3,-166.22"/>
+<path fill="none" stroke="black" d="M283,-278.59C306.61,-273.53 336.1,-267.2 365.06,-260.98"/>
+<polygon fill="black" stroke="black" points="365.81,-264.4 374.86,-258.88 364.34,-257.56 365.81,-264.4"/>
+</g>
+<!-- SMO&#45;&gt;SMO&#45;attributes -->
+<g id="edge21" class="edge">
+<title>SMO&#45;&gt;SMO&#45;attributes</title>
+<path fill="none" stroke="black" d="M260.93,-164.29C282.53,-162.89 314.83,-160.8 348.09,-158.64"/>
+<polygon fill="black" stroke="black" points="348.68,-162.11 358.44,-157.97 348.23,-155.13 348.68,-162.11"/>
 </g>
 <!-- Sector&#45;&gt;Sector&#45;attributes -->
-<g id="edge20" class="edge">
+<g id="edge22" class="edge">
 <title>Sector&#45;&gt;Sector&#45;attributes</title>
-<path fill="none" stroke="black" d="M261.88,-94.35C282.39,-90.11 312.17,-83.96 343.21,-77.55"/>
-<polygon fill="black" stroke="black" points="344.23,-80.92 353.32,-75.47 342.82,-74.06 344.23,-80.92"/>
+<path fill="none" stroke="black" d="M261.88,-84.57C282.39,-81.24 312.17,-76.42 343.21,-71.4"/>
+<polygon fill="black" stroke="black" points="344.01,-74.81 353.32,-69.76 342.89,-67.9 344.01,-74.81"/>
 </g>
 </g>
 </svg>
index 6e4e59c..e4a239a 100644 (file)
-<svg width="1345px" height="566px"
- viewBox="0.00 0.00 1345.00 566.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1.0 1.0) rotate(0.0) translate(4.0 562.0)">
+<svg width="1386px" height="740px"
+ viewBox="0.00 0.00 1386.00 740.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1.0 1.0) rotate(0.0) translate(4.0 736.0)">
 <title>moduleName</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-562 1341,-562 1341,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-736 1382,-736 1382,4 -4,4"/>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudCloudifiedNF -->
 <g id="node1" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudCloudifiedNF</title>
-<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="910.5,-558 815.5,-558 815.5,-522 910.5,-522 910.5,-558"/>
-<text text-anchor="middle" x="863" y="-536.3" font-family="Arial" font-size="14.00">CloudifiedNF</text>
+<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="549.5,-732 454.5,-732 454.5,-696 549.5,-696 549.5,-732"/>
+<text text-anchor="middle" x="502" y="-710.3" font-family="Arial" font-size="14.00">CloudifiedNF</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment -->
 <g id="node2" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment</title>
-<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="854.5,-471 747.5,-471 747.5,-435 854.5,-435 854.5,-471"/>
-<text text-anchor="middle" x="801" y="-449.3" font-family="Arial" font-size="14.00">NFDeployment</text>
+<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="506.5,-645 399.5,-645 399.5,-609 506.5,-609 506.5,-645"/>
+<text text-anchor="middle" x="453" y="-623.3" font-family="Arial" font-size="14.00">NFDeployment</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudCloudifiedNF&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment -->
 <g id="edge1" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudCloudifiedNF&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment</title>
-<path fill="none" stroke="#528b8b" d="M843.13,-521.88C837.52,-516.49 831.68,-510.29 827,-504 821.69,-496.86 816.87,-488.47 812.86,-480.63"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="808.39,-471.46 816.82,-478.49 810.58,-475.96 812.77,-480.46 812.77,-480.46 812.77,-480.46 810.58,-475.96 808.72,-482.42 808.39,-471.46 808.39,-471.46"/>
-<text text-anchor="middle" x="868.5" y="-492.8" font-family="Arial" font-size="14.00">COMPRISES</text>
-<text text-anchor="middle" x="796.89" y="-475.26" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="832.63" y="-510.68" font-family="Arial" font-size="14.00">1..*</text>
+<path fill="none" stroke="#528b8b" d="M469.55,-695.73C463.32,-690.86 457.62,-684.95 454,-678 450.41,-671.12 449.21,-662.95 449.16,-655.23"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="449.7,-645.14 453.66,-655.36 449.43,-650.13 449.17,-655.13 449.17,-655.13 449.17,-655.13 449.43,-650.13 444.67,-654.89 449.7,-645.14 449.7,-645.14"/>
+<text text-anchor="middle" x="495.5" y="-666.8" font-family="Arial" font-size="14.00">COMPRISES</text>
+<text text-anchor="middle" x="438.2" y="-648.94" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="459.05" y="-684.53" font-family="Arial" font-size="14.00">1..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudNamespace -->
 <g id="node4" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudNamespace</title>
-<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="1243,-384 1107,-384 1107,-348 1243,-348 1243,-384"/>
-<text text-anchor="middle" x="1175" y="-362.3" font-family="Arial" font-size="14.00">OCloudNamespace</text>
+<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="1008,-558 872,-558 872,-522 1008,-522 1008,-558"/>
+<text text-anchor="middle" x="940" y="-536.3" font-family="Arial" font-size="14.00">OCloudNamespace</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudNamespace -->
 <g id="edge7" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudNamespace</title>
-<path fill="none" stroke="#528b8b" d="M854.59,-439.82C918.05,-425.4 1024.3,-401.25 1096.91,-384.75"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1106.93,-382.47 1098.18,-389.08 1102.05,-383.58 1097.18,-384.69 1097.18,-384.69 1097.18,-384.69 1102.05,-383.58 1096.18,-380.3 1106.93,-382.47 1106.93,-382.47"/>
-<text text-anchor="middle" x="1047.5" y="-405.8" font-family="Arial" font-size="14.00">DEPLOYED</text>
-<text text-anchor="middle" x="1096.43" y="-386.27" font-family="Arial" font-size="14.00">1..*</text>
-<text text-anchor="middle" x="865.09" y="-443.62" font-family="Arial" font-size="14.00">1..*</text>
+<path fill="none" stroke="#528b8b" d="M506.8,-613C514.23,-611.49 521.78,-610.1 529,-609 625.55,-594.31 651.72,-607.37 748,-591 790.86,-583.71 838.13,-571.46 875.04,-560.9"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="884.68,-558.12 876.32,-565.22 879.88,-559.51 875.07,-560.9 875.07,-560.9 875.07,-560.9 879.88,-559.51 873.83,-556.57 884.68,-558.12 884.68,-558.12"/>
+<text text-anchor="middle" x="854.5" y="-579.8" font-family="Arial" font-size="14.00">DEPLOYED</text>
+<text text-anchor="middle" x="874.18" y="-561.92" font-family="Arial" font-size="14.00">1..*</text>
+<text text-anchor="middle" x="517.3" y="-616.8" font-family="Arial" font-size="14.00">1..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement -->
 <g id="node8" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement</title>
-<polygon fill="#3663f0" fill-opacity="0.254902" stroke="black" points="863,-384 739,-384 739,-348 863,-348 863,-384"/>
-<text text-anchor="middle" x="801" y="-362.3" font-family="Arial" font-size="14.00">ManagedElement</text>
+<polygon fill="#3663f0" fill-opacity="0.254902" stroke="black" points="613,-558 489,-558 489,-522 613,-522 613,-558"/>
+<text text-anchor="middle" x="551" y="-536.3" font-family="Arial" font-size="14.00">ManagedElement</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement -->
 <g id="edge6" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement</title>
-<path fill="none" stroke="#528b8b" d="M801,-434.8C801,-423.16 801,-407.55 801,-394.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="801,-384.18 805.5,-394.18 801,-389.18 801,-394.18 801,-394.18 801,-394.18 801,-389.18 796.5,-394.18 801,-384.18 801,-384.18"/>
-<text text-anchor="middle" x="828.5" y="-405.8" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="790.5" y="-387.98" font-family="Arial" font-size="14.00">1..*</text>
-<text text-anchor="middle" x="789.5" y="-423.6" font-family="Arial" font-size="14.00">1..1</text>
+<path fill="none" stroke="#528b8b" d="M460.05,-608.58C464.96,-598.11 472.37,-585.1 482,-576 486.98,-571.29 492.73,-567.06 498.72,-563.32"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="507.64,-558.18 501.22,-567.07 503.3,-560.68 498.97,-563.17 498.97,-563.17 498.97,-563.17 503.3,-560.68 496.73,-559.28 507.64,-558.18 507.64,-558.18"/>
+<text text-anchor="middle" x="509.5" y="-579.8" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="497.14" y="-561.98" font-family="Arial" font-size="14.00">1..*</text>
+<text text-anchor="middle" x="448.55" y="-597.38" font-family="Arial" font-size="14.00">1..1</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
 <g id="node15" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="438.5,-297 299.5,-297 299.5,-261 438.5,-261 438.5,-297"/>
-<text text-anchor="middle" x="369" y="-275.3" font-family="Arial" font-size="14.00">NearRTRICFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="546.5,-123 407.5,-123 407.5,-87 546.5,-87 546.5,-123"/>
+<text text-anchor="middle" x="477" y="-101.3" font-family="Arial" font-size="14.00">NearRTRICFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
 <g id="edge5" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
-<path fill="none" stroke="#528b8b" d="M747.41,-451.68C602.89,-449.44 212.05,-433.74 154,-330 150.74,-324.18 149.68,-320.08 154,-315 162.96,-304.47 231.82,-294.55 289.24,-287.98"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="299.44,-286.83 290.01,-292.42 294.47,-287.39 289.5,-287.95 289.5,-287.95 289.5,-287.95 294.47,-287.39 289,-283.48 299.44,-286.83 299.44,-286.83"/>
-<text text-anchor="middle" x="254.5" y="-362.3" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="288.94" y="-290.63" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="736.91" y="-455.48" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M399.26,-621.48C279.26,-610.68 0,-581.21 0,-541 0,-541 0,-541 0,-191 0,-151.16 261.2,-123.74 397.03,-112.17"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="407.38,-111.3 397.8,-116.62 402.4,-111.72 397.42,-112.14 397.42,-112.14 397.42,-112.14 402.4,-111.72 397.04,-107.65 407.38,-111.3 407.38,-111.3"/>
+<text text-anchor="middle" x="27.5" y="-362.3" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="396.88" y="-115.1" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="388.76" y="-625.28" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction -->
 <g id="node16" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="747,-297 629,-297 629,-261 747,-261 747,-297"/>
-<text text-anchor="middle" x="688" y="-275.3" font-family="Arial" font-size="14.00">OCUCPFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="565,-297 447,-297 447,-261 565,-261 565,-297"/>
+<text text-anchor="middle" x="506" y="-275.3" font-family="Arial" font-size="14.00">OCUCPFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction -->
 <g id="edge4" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction</title>
-<path fill="none" stroke="#528b8b" d="M747.32,-437.39C720.61,-427.12 690.73,-410.36 675,-384 667.47,-371.38 674.62,-333.27 680.92,-306.87"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="683.35,-297.06 685.32,-307.85 682.15,-301.91 680.95,-306.77 680.95,-306.77 680.95,-306.77 682.15,-301.91 676.58,-305.68 683.35,-297.06 683.35,-297.06"/>
-<text text-anchor="middle" x="702.5" y="-362.3" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="672.85" y="-300.86" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="736.82" y="-426.19" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M452.89,-608.74C452.93,-575.08 454.32,-498.4 465,-435 466.38,-426.81 467.83,-425.02 470,-417 480.3,-378.9 491.83,-334.72 499.01,-307.07"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="501.53,-297.32 503.38,-308.13 500.28,-302.16 499.02,-307 499.02,-307 499.02,-307 500.28,-302.16 494.67,-305.87 501.53,-297.32 501.53,-297.32"/>
+<text text-anchor="middle" x="492.5" y="-449.3" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="491.03" y="-301.12" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="463.39" y="-597.54" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
 <g id="node17" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="118,-297 0,-297 0,-261 118,-261 118,-297"/>
-<text text-anchor="middle" x="59" y="-275.3" font-family="Arial" font-size="14.00">OCUUPFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="441,-210 323,-210 323,-174 441,-174 441,-210"/>
+<text text-anchor="middle" x="382" y="-188.3" font-family="Arial" font-size="14.00">OCUUPFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
 <g id="edge3" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
-<path fill="none" stroke="#528b8b" d="M747.31,-449.64C594.38,-442.53 164.15,-419.54 112,-384 85.77,-366.13 71.8,-331.19 64.9,-306.77"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="62.36,-297.02 69.24,-305.57 63.62,-301.86 64.88,-306.7 64.88,-306.7 64.88,-306.7 63.62,-301.86 60.53,-307.83 62.36,-297.02 62.36,-297.02"/>
-<text text-anchor="middle" x="139.5" y="-362.3" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="51.86" y="-300.82" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="736.81" y="-438.44" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M399.49,-614.03C314.47,-591.8 151.1,-535.24 82,-417 75.96,-406.67 58,-313.39 107,-261 134.71,-231.37 240.93,-211.69 312.95,-201.44"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="322.87,-200.05 313.59,-205.89 317.92,-200.74 312.97,-201.43 312.97,-201.43 312.97,-201.43 317.92,-200.74 312.35,-196.98 322.87,-200.05 322.87,-200.05"/>
+<text text-anchor="middle" x="109.5" y="-405.8" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="312.37" y="-203.85" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="388.99" y="-602.83" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
 <g id="node18" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="864.5,-297 765.5,-297 765.5,-261 864.5,-261 864.5,-297"/>
-<text text-anchor="middle" x="815" y="-275.3" font-family="Arial" font-size="14.00">ODUFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="777.5,-384 678.5,-384 678.5,-348 777.5,-348 777.5,-384"/>
+<text text-anchor="middle" x="728" y="-362.3" font-family="Arial" font-size="14.00">ODUFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
 <g id="edge2" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNFDeployment&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
-<path fill="none" stroke="#528b8b" d="M838.61,-434.95C846.48,-430.04 854.15,-424.06 860,-417 885.52,-386.21 878.99,-369.79 883,-330 883.67,-323.37 886.47,-320.69 883,-315 880.26,-310.51 876.74,-306.57 872.75,-303.12"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="864.57,-297.07 875.29,-299.4 868.59,-300.05 872.61,-303.02 872.61,-303.02 872.61,-303.02 868.59,-300.05 869.93,-306.64 864.57,-297.07 864.57,-297.07"/>
-<text text-anchor="middle" x="909.5" y="-362.3" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="854.07" y="-300.87" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="828.11" y="-423.75" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M506.46,-608.95C575.79,-585.58 690.42,-542.12 712,-504 715.28,-498.2 713.07,-495.58 712,-489 707.95,-464.03 705.94,-457.3 694,-435 689.22,-426.06 683.29,-426.59 680,-417 677.84,-410.69 676.98,-407.94 680,-402 682.05,-397.96 684.82,-394.28 687.98,-390.95"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="695.45,-384.21 691.04,-394.25 691.74,-387.56 688.02,-390.91 688.02,-390.91 688.02,-390.91 691.74,-387.56 685.01,-387.57 695.45,-384.21 695.45,-384.21"/>
+<text text-anchor="middle" x="740.5" y="-492.8" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="684.95" y="-388.01" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="495.96" y="-597.75" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNodeCluster -->
 <g id="node3" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNodeCluster</title>
-<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="1319,-297 1227,-297 1227,-261 1319,-261 1319,-297"/>
-<text text-anchor="middle" x="1273" y="-275.3" font-family="Arial" font-size="14.00">NodeCluster</text>
+<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="1344,-471 1252,-471 1252,-435 1344,-435 1344,-471"/>
+<text text-anchor="middle" x="1298" y="-449.3" font-family="Arial" font-size="14.00">NodeCluster</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudSite -->
 <g id="node5" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudSite</title>
-<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="1316,-210 1230,-210 1230,-174 1316,-174 1316,-210"/>
-<text text-anchor="middle" x="1273" y="-188.3" font-family="Arial" font-size="14.00">OCloudSite</text>
+<polygon fill="#89240a" fill-opacity="0.254902" stroke="black" points="1370,-384 1284,-384 1284,-348 1370,-348 1370,-384"/>
+<text text-anchor="middle" x="1327" y="-362.3" font-family="Arial" font-size="14.00">OCloudSite</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudNodeCluster&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudSite -->
 <g id="edge8" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudNodeCluster&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudSite</title>
-<path fill="none" stroke="#528b8b" d="M1273,-260.8C1273,-249.16 1273,-233.55 1273,-220.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1273,-210.18 1277.5,-220.18 1273,-215.18 1273,-220.18 1273,-220.18 1273,-220.18 1273,-215.18 1268.5,-220.18 1273,-210.18 1273,-210.18"/>
-<text text-anchor="middle" x="1305" y="-231.8" font-family="Arial" font-size="14.00">LOCATED</text>
-<text text-anchor="middle" x="1262.5" y="-213.98" font-family="Arial" font-size="14.00">1..*</text>
-<text text-anchor="middle" x="1262.5" y="-249.6" font-family="Arial" font-size="14.00">1..*</text>
+<path fill="none" stroke="#528b8b" d="M1303.87,-434.8C1307.88,-423.05 1313.27,-407.24 1317.84,-393.84"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1321.14,-384.18 1322.17,-395.09 1319.53,-388.91 1317.91,-393.64 1317.91,-393.64 1317.91,-393.64 1319.53,-388.91 1313.65,-392.19 1321.14,-384.18 1321.14,-384.18"/>
+<text text-anchor="middle" x="1346" y="-405.8" font-family="Arial" font-size="14.00">LOCATED</text>
+<text text-anchor="middle" x="1310.64" y="-387.98" font-family="Arial" font-size="14.00">1..*</text>
+<text text-anchor="middle" x="1293.37" y="-423.6" font-family="Arial" font-size="14.00">1..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudNamespace&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudNodeCluster -->
 <g id="edge9" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;cloudOCloudNamespace&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudNodeCluster</title>
-<path fill="none" stroke="#528b8b" d="M1194.83,-347.8C1209.44,-335.13 1229.5,-317.73 1245.63,-303.74"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1253.2,-297.18 1248.59,-307.13 1249.42,-300.45 1245.64,-303.73 1245.64,-303.73 1245.64,-303.73 1249.42,-300.45 1242.69,-300.33 1253.2,-297.18 1253.2,-297.18"/>
-<text text-anchor="middle" x="1266.5" y="-318.8" font-family="Arial" font-size="14.00">DEPLOYED</text>
-<text text-anchor="middle" x="1242.7" y="-300.98" font-family="Arial" font-size="14.00">1..*</text>
-<text text-anchor="middle" x="1183.33" y="-336.6" font-family="Arial" font-size="14.00">1..1</text>
+<path fill="none" stroke="#528b8b" d="M1008.18,-522.81C1076.06,-506.7 1179,-482.26 1242.18,-467.25"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1251.97,-464.93 1243.28,-471.62 1247.1,-466.09 1242.24,-467.24 1242.24,-467.24 1242.24,-467.24 1247.1,-466.09 1241.2,-462.86 1251.97,-464.93 1251.97,-464.93"/>
+<text text-anchor="middle" x="1177.5" y="-492.8" font-family="Arial" font-size="14.00">DEPLOYED</text>
+<text text-anchor="middle" x="1241.47" y="-468.73" font-family="Arial" font-size="14.00">1..*</text>
+<text text-anchor="middle" x="996.68" y="-511.61" font-family="Arial" font-size="14.00">1..1</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule -->
 <g id="node6" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule</title>
-<polygon fill="#9a38e3" fill-opacity="0.254902" stroke="black" points="1209,-297 1097,-297 1097,-261 1209,-261 1209,-297"/>
-<text text-anchor="middle" x="1153" y="-275.3" font-family="Arial" font-size="14.00">AntennaModule</text>
+<polygon fill="#9a38e3" fill-opacity="0.254902" stroke="black" points="1266,-384 1154,-384 1154,-348 1266,-348 1266,-384"/>
+<text text-anchor="middle" x="1210" y="-362.3" font-family="Arial" font-size="14.00">AntennaModule</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;equipmentSite -->
 <g id="node7" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;equipmentSite</title>
-<polygon fill="#9a38e3" fill-opacity="0.254902" stroke="black" points="1203,-210 1149,-210 1149,-174 1203,-174 1203,-210"/>
-<text text-anchor="middle" x="1176" y="-188.3" font-family="Arial" font-size="14.00">Site</text>
+<polygon fill="#9a38e3" fill-opacity="0.254902" stroke="black" points="1303,-297 1249,-297 1249,-261 1303,-261 1303,-297"/>
+<text text-anchor="middle" x="1276" y="-275.3" font-family="Arial" font-size="14.00">Site</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;equipmentSite -->
 <g id="edge12" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;equipmentSite</title>
-<path fill="none" stroke="#528b8b" d="M1157.65,-260.8C1160.83,-249.05 1165.11,-233.24 1168.74,-219.84"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1171.35,-210.18 1173.08,-221 1170.05,-215 1168.74,-219.83 1168.74,-219.83 1168.74,-219.83 1170.05,-215 1164.4,-218.65 1171.35,-210.18 1171.35,-210.18"/>
-<text text-anchor="middle" x="1201.5" y="-231.8" font-family="Arial" font-size="14.00">INSTALLED</text>
-<text text-anchor="middle" x="1160.85" y="-213.98" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="1169.15" y="-249.6" font-family="Arial" font-size="14.00">0..1</text>
+<path fill="none" stroke="#528b8b" d="M1223.36,-347.8C1232.84,-335.59 1245.72,-318.99 1256.37,-305.28"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1262.66,-297.18 1260.09,-307.83 1259.6,-301.12 1256.53,-305.07 1256.53,-305.07 1256.53,-305.07 1259.6,-301.12 1252.98,-302.31 1262.66,-297.18 1262.66,-297.18"/>
+<text text-anchor="middle" x="1282.5" y="-318.8" font-family="Arial" font-size="14.00">INSTALLED</text>
+<text text-anchor="middle" x="1252.16" y="-300.98" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="1234.86" y="-336.6" font-family="Arial" font-size="14.00">0..1</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability -->
 <g id="node11" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="1133,-36 1007,-36 1007,0 1133,0 1133,-36"/>
-<text text-anchor="middle" x="1070" y="-14.3" font-family="Arial" font-size="14.00">AntennaCapability</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="1098,-123 972,-123 972,-87 1098,-87 1098,-123"/>
+<text text-anchor="middle" x="1035" y="-101.3" font-family="Arial" font-size="14.00">AntennaCapability</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability -->
 <g id="edge11" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability</title>
-<path fill="none" stroke="#528b8b" d="M1149.2,-260.77C1140.54,-222.7 1117.79,-128.87 1088,-54 1086.85,-51.11 1085.54,-48.14 1084.16,-45.21"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1079.65,-36.14 1088.13,-43.09 1081.88,-40.62 1084.1,-45.09 1084.1,-45.09 1084.1,-45.09 1081.88,-40.62 1080.07,-47.1 1079.65,-36.14 1079.65,-36.14"/>
-<text text-anchor="middle" x="1148.5" y="-144.8" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="1090.15" y="-39.94" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="1138.7" y="-249.57" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M1212.93,-347.7C1216.65,-320.38 1220.27,-266.41 1199,-228 1173.3,-181.58 1121.68,-147.77 1083.18,-127.67"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1074.2,-123.1 1085.15,-123.62 1078.65,-125.37 1083.11,-127.64 1083.11,-127.64 1083.11,-127.64 1078.65,-125.37 1081.07,-131.65 1074.2,-123.1 1074.2,-123.1"/>
+<text text-anchor="middle" x="1232.5" y="-231.8" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="1063.7" y="-126.9" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="1202.43" y="-336.5" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU -->
 <g id="node13" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="1057.5,-210 978.5,-210 978.5,-174 1057.5,-174 1057.5,-210"/>
-<text text-anchor="middle" x="1018" y="-188.3" font-family="Arial" font-size="14.00">NRCellDU</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="1090.5,-297 1011.5,-297 1011.5,-261 1090.5,-261 1090.5,-297"/>
+<text text-anchor="middle" x="1051" y="-275.3" font-family="Arial" font-size="14.00">NRCellDU</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU -->
 <g id="edge10" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU</title>
-<path fill="none" stroke="#528b8b" d="M1096.87,-265.57C1081.31,-260.33 1065.11,-253.04 1052,-243 1043.71,-236.65 1036.73,-227.69 1031.29,-219.1"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1026.2,-210.42 1035.14,-216.76 1028.73,-214.73 1031.26,-219.04 1031.26,-219.04 1031.26,-219.04 1028.73,-214.73 1027.38,-221.32 1026.2,-210.42 1026.2,-210.42"/>
-<text text-anchor="middle" x="1079.5" y="-231.8" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="1015.7" y="-214.22" font-family="Arial" font-size="14.00">1..*</text>
-<text text-anchor="middle" x="1086.37" y="-254.37" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M1177.82,-347.8C1153.07,-334.56 1118.68,-316.18 1091.96,-301.9"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1082.86,-297.03 1093.8,-297.78 1087.27,-299.39 1091.68,-301.74 1091.68,-301.74 1091.68,-301.74 1087.27,-299.39 1089.55,-305.71 1082.86,-297.03 1082.86,-297.03"/>
+<text text-anchor="middle" x="1167.5" y="-318.8" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="1072.36" y="-300.83" font-family="Arial" font-size="14.00">1..*</text>
+<text text-anchor="middle" x="1167.32" y="-336.6" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudCloudifiedNF -->
 <g id="edge18" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;cloudCloudifiedNF</title>
-<path fill="none" stroke="#528b8b" d="M836.52,-384.08C844.83,-389.11 853.23,-395.13 860,-402 891.32,-433.75 898.5,-445.91 910,-489 911.72,-495.44 912.99,-498.04 910,-504 908.05,-507.89 905.44,-511.45 902.44,-514.69"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="894.89,-521.67 899.18,-511.58 898.56,-518.28 902.23,-514.89 902.23,-514.89 902.23,-514.89 898.56,-518.28 905.29,-518.19 894.89,-521.67 894.89,-521.67"/>
-<text text-anchor="middle" x="942.5" y="-449.3" font-family="Arial" font-size="14.00">DEPLOYED</text>
-<text text-anchor="middle" x="883.39" y="-510.47" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="825.02" y="-387.88" font-family="Arial" font-size="14.00">0..1</text>
+<path fill="none" stroke="#528b8b" d="M552.82,-558.43C554.86,-585.46 555.78,-638.48 537,-678 535.35,-681.46 533.22,-684.78 530.81,-687.9"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="523.97,-695.66 527.21,-685.18 527.28,-691.91 530.59,-688.16 530.59,-688.16 530.59,-688.16 527.28,-691.91 533.96,-691.14 523.97,-695.66 523.97,-695.66"/>
+<text text-anchor="middle" x="590.5" y="-623.3" font-family="Arial" font-size="14.00">DEPLOYED</text>
+<text text-anchor="middle" x="512.47" y="-684.46" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="541.32" y="-562.23" font-family="Arial" font-size="14.00">0..1</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
 <g id="edge17" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
-<path fill="none" stroke="#528b8b" d="M738.91,-350.42C734.22,-349.53 729.54,-348.71 725,-348 637.26,-334.28 609.9,-359.12 526,-330 514.47,-326 514.16,-319.94 503,-315 485.85,-307.41 466.72,-301.2 448.4,-296.23"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="438.62,-293.66 449.43,-291.84 443.45,-294.93 448.29,-296.2 448.29,-296.2 448.29,-296.2 443.45,-294.93 447.15,-300.55 438.62,-293.66 438.62,-293.66"/>
-<text text-anchor="middle" x="561" y="-318.8" font-family="Arial" font-size="14.00">MANAGES</text>
-<text text-anchor="middle" x="450.12" y="-297.46" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="728.41" y="-339.22" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M558.44,-521.74C575.08,-483.61 617.2,-389.67 660,-315 664.78,-306.66 669.21,-306.2 672,-297 676.64,-281.69 675.49,-276.61 672,-261 662.66,-219.29 661.59,-203.85 631,-174 609.01,-152.55 579.12,-137.25 551.52,-126.66"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="541.87,-123.12 552.81,-122.34 546.56,-124.84 551.26,-126.57 551.26,-126.57 551.26,-126.57 546.56,-124.84 549.7,-130.79 541.87,-123.12 541.87,-123.12"/>
+<text text-anchor="middle" x="695" y="-318.8" font-family="Arial" font-size="14.00">MANAGES</text>
+<text text-anchor="middle" x="530.37" y="-126.92" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="568.94" y="-510.54" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction -->
 <g id="edge16" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction</title>
-<path fill="none" stroke="#528b8b" d="M762.75,-347.92C752.97,-342.78 742.75,-336.71 734,-330 724.54,-322.75 715.38,-313.43 707.76,-304.8"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="701.23,-297.16 711.14,-301.84 704.47,-300.96 707.72,-304.76 707.72,-304.76 707.72,-304.76 704.47,-300.96 704.3,-307.69 701.23,-297.16 701.23,-297.16"/>
-<text text-anchor="middle" x="769" y="-318.8" font-family="Arial" font-size="14.00">MANAGES</text>
-<text text-anchor="middle" x="712.73" y="-300.96" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="752.25" y="-336.72" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M545.78,-521.8C538.85,-498.33 526.71,-454.87 520,-417 513.34,-379.38 509.54,-335.35 507.62,-307.57"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="506.96,-297.41 512.1,-307.1 507.28,-302.4 507.61,-307.39 507.61,-307.39 507.61,-307.39 507.28,-302.4 503.12,-307.69 506.96,-297.41 506.96,-297.41"/>
+<text text-anchor="middle" x="555" y="-405.8" font-family="Arial" font-size="14.00">MANAGES</text>
+<text text-anchor="middle" x="518.46" y="-301.21" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="535.28" y="-510.6" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
 <g id="edge15" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
-<path fill="none" stroke="#528b8b" d="M738.95,-350.17C734.25,-349.34 729.56,-348.6 725,-348 535.36,-323.02 482.61,-367.3 295,-330 275.97,-326.22 272.82,-319.72 254,-315 201.62,-301.86 184.72,-307.27 128.1,-297.06"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="118.26,-295.2 128.92,-292.63 123.17,-296.13 128.08,-297.05 128.08,-297.05 128.08,-297.05 123.17,-296.13 127.25,-301.48 118.26,-295.2 118.26,-295.2"/>
-<text text-anchor="middle" x="330" y="-318.8" font-family="Arial" font-size="14.00">MANAGES</text>
-<text text-anchor="middle" x="129.76" y="-299" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="728.45" y="-353.97" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M541.83,-521.72C528.53,-498.36 501.63,-457.11 467,-435 439.2,-417.25 416.04,-442.4 395,-417 348.31,-360.65 363.15,-266.37 374.35,-220.18"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="376.87,-210.3 378.76,-221.1 375.64,-215.15 374.4,-219.99 374.4,-219.99 374.4,-219.99 375.64,-215.15 370.04,-218.88 376.87,-210.3 376.87,-210.3"/>
+<text text-anchor="middle" x="411" y="-362.3" font-family="Arial" font-size="14.00">MANAGES</text>
+<text text-anchor="middle" x="365.37" y="-214.1" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="552.33" y="-510.52" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
 <g id="edge14" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
-<path fill="none" stroke="#528b8b" d="M803.83,-347.8C805.75,-336.16 808.32,-320.55 810.51,-307.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="812.17,-297.18 814.99,-307.77 811.36,-302.11 810.55,-307.04 810.55,-307.04 810.55,-307.04 811.36,-302.11 806.11,-306.31 812.17,-297.18 812.17,-297.18"/>
-<text text-anchor="middle" x="844" y="-318.8" font-family="Arial" font-size="14.00">MANAGES</text>
-<text text-anchor="middle" x="800.67" y="-300.98" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="793.33" y="-336.6" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M575.92,-521.8C582.34,-516.58 588.87,-510.5 594,-504 625.14,-464.51 606.43,-436.53 643,-402 650.4,-395.01 659.38,-389.34 668.7,-384.75"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="678.09,-380.52 670.82,-388.73 673.53,-382.57 668.97,-384.63 668.97,-384.63 668.97,-384.63 673.53,-382.57 667.13,-380.53 678.09,-380.52 678.09,-380.52"/>
+<text text-anchor="middle" x="655" y="-449.3" font-family="Arial" font-size="14.00">MANAGES</text>
+<text text-anchor="middle" x="666.59" y="-369.32" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="586.42" y="-510.6" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction -->
 <g id="node19" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="981.5,-297 882.5,-297 882.5,-261 981.5,-261 981.5,-297"/>
-<text text-anchor="middle" x="932" y="-275.3" font-family="Arial" font-size="14.00">ORUFunction</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="923.5,-471 824.5,-471 824.5,-435 923.5,-435 923.5,-471"/>
+<text text-anchor="middle" x="874" y="-449.3" font-family="Arial" font-size="14.00">ORUFunction</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction -->
 <g id="edge13" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;oamManagedElement&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction</title>
-<path fill="none" stroke="#528b8b" d="M849.91,-347.84C861.23,-342.87 872.9,-336.9 883,-330 893.24,-323 903.11,-313.63 911.27,-304.9"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="917.97,-297.46 914.62,-307.9 914.63,-301.17 911.28,-304.89 911.28,-304.89 911.28,-304.89 914.63,-301.17 907.94,-301.88 917.97,-297.46 917.97,-297.46"/>
-<text text-anchor="middle" x="936" y="-318.8" font-family="Arial" font-size="14.00">MANAGES</text>
-<text text-anchor="middle" x="906.47" y="-301.26" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="839.41" y="-336.64" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M585.96,-521.87C596.69,-516.39 608.44,-510.14 619,-504 629.55,-497.87 630.59,-493.34 642,-489 698.03,-467.66 766.33,-459.29 814.27,-456.03"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="824.48,-455.39 814.78,-460.51 819.49,-455.7 814.5,-456.02 814.5,-456.02 814.5,-456.02 819.49,-455.7 814.22,-451.52 824.48,-455.39 824.48,-455.39"/>
+<text text-anchor="middle" x="677" y="-492.8" font-family="Arial" font-size="14.00">MANAGES</text>
+<text text-anchor="middle" x="812.98" y="-459.19" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="596.46" y="-510.67" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance -->
 <g id="node9" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance</title>
-<polygon fill="#074ee2" fill-opacity="0.254902" stroke="black" points="432,-384 306,-384 306,-348 432,-348 432,-384"/>
-<text text-anchor="middle" x="369" y="-362.3" font-family="Arial" font-size="14.00">PhysicalAppliance</text>
+<polygon fill="#074ee2" fill-opacity="0.254902" stroke="black" points="330,-471 204,-471 204,-435 330,-435 330,-471"/>
+<text text-anchor="middle" x="267" y="-449.3" font-family="Arial" font-size="14.00">PhysicalAppliance</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;physicalSite -->
 <g id="node10" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;physicalSite</title>
-<polygon fill="#074ee2" fill-opacity="0.254902" stroke="black" points="190,-297 136,-297 136,-261 190,-261 190,-297"/>
-<text text-anchor="middle" x="163" y="-275.3" font-family="Arial" font-size="14.00">Site</text>
+<polygon fill="#074ee2" fill-opacity="0.254902" stroke="black" points="211,-384 157,-384 157,-348 211,-348 211,-384"/>
+<text text-anchor="middle" x="184" y="-362.3" font-family="Arial" font-size="14.00">Site</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;physicalSite -->
 <g id="edge23" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;physicalSite</title>
-<path fill="none" stroke="#528b8b" d="M305.94,-362.79C252.64,-359.45 182.14,-351.07 164,-330 158.66,-323.8 157.12,-315.39 157.3,-307.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="158.29,-297.24 161.78,-307.63 157.8,-302.21 157.3,-307.19 157.3,-307.19 157.3,-307.19 157.8,-302.21 152.83,-306.74 158.29,-297.24 158.29,-297.24"/>
-<text text-anchor="middle" x="209" y="-318.8" font-family="Arial" font-size="14.00">INSTALLEDAT</text>
-<text text-anchor="middle" x="168.79" y="-301.04" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="295.44" y="-366.59" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M203.79,-444.07C187.95,-438.91 172.73,-430.54 163,-417 157.81,-409.78 159.31,-401.08 163.27,-392.98"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="168.56,-384.19 167.25,-395.08 165.98,-388.47 163.4,-392.76 163.4,-392.76 163.4,-392.76 165.98,-388.47 159.54,-390.44 168.56,-384.19 168.56,-384.19"/>
+<text text-anchor="middle" x="208" y="-405.8" font-family="Arial" font-size="14.00">INSTALLEDAT</text>
+<text text-anchor="middle" x="158.06" y="-387.99" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="193.29" y="-447.87" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
 <g id="edge22" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
-<path fill="none" stroke="#528b8b" d="M369,-347.8C369,-336.16 369,-320.55 369,-307.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="369,-297.18 373.5,-307.18 369,-302.18 369,-307.18 369,-307.18 369,-307.18 369,-302.18 364.5,-307.18 369,-297.18 369,-297.18"/>
-<text text-anchor="middle" x="396.5" y="-318.8" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="358.5" y="-300.98" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="358.5" y="-336.6" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M203.75,-441.11C186.91,-435.91 169.63,-428.26 156,-417 136.53,-400.91 129,-392.26 129,-367 129,-367 129,-367 129,-191 129,-136.08 294.64,-116.48 397.37,-109.61"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="407.41,-108.96 397.72,-114.09 402.42,-109.28 397.43,-109.6 397.43,-109.6 397.43,-109.6 402.42,-109.28 397.15,-105.11 407.41,-108.96 407.41,-108.96"/>
+<text text-anchor="middle" x="156.5" y="-275.3" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="396.91" y="-97.76" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="193.25" y="-429.91" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction -->
 <g id="edge21" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction</title>
-<path fill="none" stroke="#528b8b" d="M396.7,-347.84C405.74,-342.19 415.82,-335.86 425,-330 435.29,-323.43 436.58,-319.31 448,-315 502.97,-294.22 569.34,-285.7 618.34,-282.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="628.52,-281.58 618.84,-286.72 623.53,-281.9 618.54,-282.23 618.54,-282.23 618.54,-282.23 623.53,-281.9 618.25,-277.74 628.52,-281.58 628.52,-281.58"/>
-<text text-anchor="middle" x="475.5" y="-318.8" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="618.02" y="-285.38" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="386.2" y="-336.64" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M272.56,-434.77C281.7,-406.88 299.53,-354.27 306,-348 341.23,-313.85 394.25,-296.82 436.85,-288.35"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="446.88,-286.47 437.88,-292.73 441.97,-287.39 437.05,-288.31 437.05,-288.31 437.05,-288.31 441.97,-287.39 436.23,-283.89 446.88,-286.47 446.88,-286.47"/>
+<text text-anchor="middle" x="333.5" y="-362.3" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="436.38" y="-290.27" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="262.06" y="-423.57" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
 <g id="edge20" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
-<path fill="none" stroke="#528b8b" d="M305.94,-359.33C231.83,-352.27 116.66,-339.94 99,-330 88.87,-324.3 80.34,-314.91 73.79,-305.8"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="68.14,-297.28 77.42,-303.13 70.9,-301.45 73.67,-305.61 73.67,-305.61 73.67,-305.61 70.9,-301.45 69.92,-308.1 68.14,-297.28 68.14,-297.28"/>
-<text text-anchor="middle" x="126.5" y="-318.8" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="78.64" y="-301.08" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="295.44" y="-348.13" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M268.39,-434.91C270.53,-413.87 275.63,-377.31 287,-348 306.11,-298.72 340.87,-247.58 362.63,-218.11"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="368.67,-210.04 366.28,-220.74 365.67,-214.04 362.68,-218.05 362.68,-218.05 362.68,-218.05 365.67,-214.04 359.07,-215.35 368.67,-210.04 368.67,-210.04"/>
+<text text-anchor="middle" x="328.5" y="-318.8" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="379.17" y="-213.84" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="278.89" y="-423.71" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
 <g id="edge19" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;physicalPhysicalAppliance&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
-<path fill="none" stroke="#528b8b" d="M432.35,-356.63C478.01,-350.26 541.02,-340.77 596,-330 624.25,-324.47 630.84,-320.96 659,-315 699.05,-306.52 711.67,-306.97 755.38,-297.01"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="765.2,-294.72 756.48,-301.37 760.33,-295.85 755.46,-296.99 755.46,-296.99 755.46,-296.99 760.33,-295.85 754.44,-292.61 765.2,-294.72 765.2,-294.72"/>
-<text text-anchor="middle" x="686.5" y="-318.8" font-family="Arial" font-size="14.00">SERVES</text>
-<text text-anchor="middle" x="754.7" y="-298.52" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="442.85" y="-360.43" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M318.55,-434.97C353.13,-424.12 399.88,-410.54 442,-402 519.35,-386.32 609.99,-376.67 668.16,-371.58"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="678.28,-370.71 668.7,-376.05 673.3,-371.14 668.31,-371.56 668.31,-371.56 668.31,-371.56 673.3,-371.14 667.93,-367.08 678.28,-370.71 678.28,-370.71"/>
+<text text-anchor="middle" x="469.5" y="-405.8" font-family="Arial" font-size="14.00">SERVES</text>
+<text text-anchor="middle" x="667.78" y="-359.51" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="308.05" y="-423.77" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU -->
 <g id="node12" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="727.5,-210 648.5,-210 648.5,-174 727.5,-174 727.5,-210"/>
-<text text-anchor="middle" x="688" y="-188.3" font-family="Arial" font-size="14.00">NRCellCU</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="621.5,-210 542.5,-210 542.5,-174 621.5,-174 621.5,-210"/>
+<text text-anchor="middle" x="582" y="-188.3" font-family="Arial" font-size="14.00">NRCellCU</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier -->
 <g id="node14" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="1076,-123 960,-123 960,-87 1076,-87 1076,-123"/>
-<text text-anchor="middle" x="1018" y="-101.3" font-family="Arial" font-size="14.00">NRSectorCarrier</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="1093,-210 977,-210 977,-174 1093,-174 1093,-210"/>
+<text text-anchor="middle" x="1035" y="-188.3" font-family="Arial" font-size="14.00">NRSectorCarrier</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier -->
 <g id="edge24" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier</title>
-<path fill="none" stroke="#528b8b" d="M1018,-173.8C1018,-162.16 1018,-146.55 1018,-133.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1018,-123.18 1022.5,-133.18 1018,-128.18 1018,-133.18 1018,-133.18 1018,-133.18 1018,-128.18 1013.5,-133.18 1018,-123.18 1018,-123.18"/>
-<text text-anchor="middle" x="1036.5" y="-144.8" font-family="Arial" font-size="14.00">USES</text>
-<text text-anchor="middle" x="1006.5" y="-126.98" font-family="Arial" font-size="14.00">0..1</text>
-<text text-anchor="middle" x="1007.5" y="-162.6" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M1047.76,-260.8C1045.57,-249.16 1042.63,-233.55 1040.13,-220.24"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1038.23,-210.18 1044.51,-219.17 1039.16,-215.09 1040.08,-220 1040.08,-220 1040.08,-220 1039.16,-215.09 1035.66,-220.84 1038.23,-210.18 1038.23,-210.18"/>
+<text text-anchor="middle" x="1061.5" y="-231.8" font-family="Arial" font-size="14.00">USES</text>
+<text text-anchor="middle" x="1026.73" y="-213.98" font-family="Arial" font-size="14.00">0..1</text>
+<text text-anchor="middle" x="1037.26" y="-249.6" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability -->
 <g id="edge25" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranAntennaCapability</title>
-<path fill="none" stroke="#528b8b" d="M1028.52,-86.8C1035.85,-74.82 1045.76,-58.62 1054.06,-45.06"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1059.49,-36.18 1058.11,-47.05 1056.88,-40.44 1054.27,-44.71 1054.27,-44.71 1054.27,-44.71 1056.88,-40.44 1050.44,-42.36 1059.49,-36.18 1059.49,-36.18"/>
-<text text-anchor="middle" x="1065.5" y="-57.8" font-family="Arial" font-size="14.00">USES</text>
-<text text-anchor="middle" x="1048.99" y="-39.98" font-family="Arial" font-size="14.00">0..*</text>
-<text text-anchor="middle" x="1017.02" y="-75.6" font-family="Arial" font-size="14.00">0..1</text>
+<path fill="none" stroke="#528b8b" d="M1035,-173.8C1035,-162.16 1035,-146.55 1035,-133.24"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1035,-123.18 1039.5,-133.18 1035,-128.18 1035,-133.18 1035,-133.18 1035,-133.18 1035,-128.18 1030.5,-133.18 1035,-123.18 1035,-123.18"/>
+<text text-anchor="middle" x="1053.5" y="-144.8" font-family="Arial" font-size="14.00">USES</text>
+<text text-anchor="middle" x="1024.5" y="-126.98" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="1023.5" y="-162.6" font-family="Arial" font-size="14.00">0..1</text>
 </g>
-<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU -->
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
+<g id="node20" class="node">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="826,-36 772,-36 772,0 826,0 826,-36"/>
+<text text-anchor="middle" x="799" y="-14.3" font-family="Arial" font-size="14.00">SMO</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
 <g id="edge26" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M541.77,-86.9C607.85,-69.46 708.09,-43 761.85,-28.81"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="771.64,-26.22 763.12,-33.13 766.8,-27.5 761.97,-28.78 761.97,-28.78 761.97,-28.78 766.8,-27.5 760.82,-24.42 771.64,-26.22 771.64,-26.22"/>
+<text text-anchor="middle" x="681.5" y="-57.8" font-family="Arial" font-size="14.00">O1LINK</text>
+<text text-anchor="middle" x="761.14" y="-30.02" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="530.27" y="-75.7" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU -->
+<g id="edge27" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellCU</title>
-<path fill="none" stroke="#528b8b" d="M688,-260.8C688,-249.16 688,-233.55 688,-220.24"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="688,-210.18 692.5,-220.18 688,-215.18 688,-220.18 688,-220.18 688,-220.18 688,-215.18 683.5,-220.18 688,-210.18 688,-210.18"/>
-<text text-anchor="middle" x="723.5" y="-231.8" font-family="Arial" font-size="14.00">PROVIDES</text>
-<text text-anchor="middle" x="676.5" y="-213.98" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="677.5" y="-249.6" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M521.38,-260.8C532.4,-248.47 547.42,-231.68 559.75,-217.89"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="566.64,-210.18 563.33,-220.63 563.31,-213.9 559.98,-217.63 559.98,-217.63 559.98,-217.63 563.31,-213.9 556.62,-214.63 566.64,-210.18 566.64,-210.18"/>
+<text text-anchor="middle" x="584.5" y="-231.8" font-family="Arial" font-size="14.00">PROVIDES</text>
+<text text-anchor="middle" x="555.14" y="-213.98" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="510.88" y="-249.6" font-family="Arial" font-size="14.00">0..*</text>
 </g>
-<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU -->
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
+<g id="edge29" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
+<path fill="none" stroke="#528b8b" d="M500.31,-260.87C496,-247.24 490.28,-227.59 487,-210 482.19,-184.19 479.62,-154.31 478.3,-133.22"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="477.72,-123.06 482.78,-132.79 478,-128.05 478.29,-133.04 478.29,-133.04 478.29,-133.04 478,-128.05 473.8,-133.3 477.72,-123.06 477.72,-123.06"/>
+<text text-anchor="middle" x="510.5" y="-188.3" font-family="Arial" font-size="14.00">E2LINK</text>
+<text text-anchor="middle" x="467.22" y="-126.86" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="488.81" y="-249.67" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
+<g id="edge30" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
+<path fill="none" stroke="#528b8b" d="M450.15,-260.86C439.21,-256.07 428.27,-250.17 419,-243 410.5,-236.43 403.02,-227.42 397.05,-218.86"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="391.4,-210.21 400.64,-216.12 394.14,-214.4 396.87,-218.58 396.87,-218.58 396.87,-218.58 394.14,-214.4 393.11,-221.05 391.4,-210.21 391.4,-210.21"/>
+<text text-anchor="middle" x="442.5" y="-231.8" font-family="Arial" font-size="14.00">E1LINK</text>
+<text text-anchor="middle" x="401.9" y="-214.01" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="438.65" y="-249.66" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
 <g id="edge28" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M565.05,-262.19C591.78,-254.72 618.64,-246.65 624,-243 701.65,-190.11 760.59,-92 785.71,-45.18"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="790.41,-36.27 789.72,-47.21 788.08,-40.69 785.74,-45.11 785.74,-45.11 785.74,-45.11 788.08,-40.69 781.76,-43.01 790.41,-36.27 790.41,-36.27"/>
+<text text-anchor="middle" x="747.5" y="-144.8" font-family="Arial" font-size="14.00">O1LINK</text>
+<text text-anchor="middle" x="800.91" y="-40.07" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="576.55" y="-265.99" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
+<g id="edge31" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
+<path fill="none" stroke="#528b8b" d="M391.05,-173.8C397.11,-163.42 405.84,-150.42 416,-141 420.93,-136.43 426.57,-132.2 432.38,-128.39"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="440.95,-123.1 434.8,-132.18 436.69,-125.72 432.44,-128.35 432.44,-128.35 432.44,-128.35 436.69,-125.72 430.07,-124.52 440.95,-123.1 440.95,-123.1"/>
+<text text-anchor="middle" x="439.5" y="-144.8" font-family="Arial" font-size="14.00">E2LINK</text>
+<text text-anchor="middle" x="430.45" y="-126.9" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="379.55" y="-162.6" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU -->
+<g id="edge33" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU</title>
-<path fill="none" stroke="#528b8b" d="M855.1,-260.89C877.91,-251.18 907.03,-238.85 933,-228 944.62,-223.15 957.15,-217.96 968.93,-213.11"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="978.18,-209.3 970.65,-217.27 973.56,-211.2 968.93,-213.1 968.93,-213.1 968.93,-213.1 973.56,-211.2 967.22,-208.94 978.18,-209.3 978.18,-209.3"/>
-<text text-anchor="middle" x="968.5" y="-231.8" font-family="Arial" font-size="14.00">PROVIDES</text>
-<text text-anchor="middle" x="966.68" y="-213.1" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="844.6" y="-249.69" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M777.74,-354.56C808.23,-347.96 848,-339.01 883,-330 934.08,-316.85 946.51,-312.25 997,-297 998.44,-296.56 999.9,-296.12 1001.38,-295.67"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1011.22,-292.64 1002.99,-299.88 1006.44,-294.11 1001.66,-295.58 1001.66,-295.58 1001.66,-295.58 1006.44,-294.11 1000.34,-291.28 1011.22,-292.64 1011.22,-292.64"/>
+<text text-anchor="middle" x="971.5" y="-318.8" font-family="Arial" font-size="14.00">PROVIDES</text>
+<text text-anchor="middle" x="999.72" y="-296.44" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="788.24" y="-358.36" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier -->
-<g id="edge27" class="edge">
+<g id="edge32" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRSectorCarrier</title>
-<path fill="none" stroke="#528b8b" d="M825.87,-260.88C840.49,-238.82 868.25,-200.18 899,-174 920.58,-155.63 947.83,-139.64 970.81,-127.78"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="980.04,-123.12 973.14,-131.65 975.58,-125.38 971.11,-127.63 971.11,-127.63 971.11,-127.63 975.58,-125.38 969.09,-123.61 980.04,-123.12 980.04,-123.12"/>
-<text text-anchor="middle" x="934.5" y="-188.3" font-family="Arial" font-size="14.00">PROVIDES</text>
-<text text-anchor="middle" x="968.54" y="-126.92" font-family="Arial" font-size="14.00">1..1</text>
-<text text-anchor="middle" x="815.37" y="-249.68" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M773.17,-347.99C786.22,-342.65 800.35,-336.45 813,-330 849.8,-311.22 946.9,-249.63 999.66,-215.78"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1008.36,-210.2 1002.37,-219.39 1004.15,-212.9 999.94,-215.6 999.94,-215.6 999.94,-215.6 1004.15,-212.9 997.51,-211.82 1008.36,-210.2 1008.36,-210.2"/>
+<text text-anchor="middle" x="961.5" y="-275.3" font-family="Arial" font-size="14.00">PROVIDES</text>
+<text text-anchor="middle" x="996.86" y="-214" font-family="Arial" font-size="14.00">1..1</text>
+<text text-anchor="middle" x="783.67" y="-336.79" font-family="Arial" font-size="14.00">0..*</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction -->
+<g id="edge37" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNearRTRICFunction</title>
+<path fill="none" stroke="#528b8b" d="M731.45,-347.84C739,-304.6 751.63,-191.1 688,-141 667.79,-125.09 607.68,-116.15 556.76,-111.3"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="546.72,-110.38 557.08,-106.81 551.69,-110.83 556.67,-111.29 556.67,-111.29 556.67,-111.29 551.69,-110.83 556.26,-115.77 546.72,-110.38 546.72,-110.38"/>
+<text text-anchor="middle" x="758.5" y="-231.8" font-family="Arial" font-size="14.00">E2LINK</text>
+<text text-anchor="middle" x="557.22" y="-114.18" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="742.95" y="-336.64" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction -->
+<g id="edge36" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUCPFunction</title>
+<path fill="none" stroke="#528b8b" d="M678.34,-360.11C630.54,-354.63 562.3,-344.58 540,-330 531,-324.12 523.76,-314.94 518.31,-306.04"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="513.28,-297.03 522.08,-303.57 515.72,-301.39 518.15,-305.76 518.15,-305.76 518.15,-305.76 515.72,-301.39 514.22,-307.95 513.28,-297.03 513.28,-297.03"/>
+<text text-anchor="middle" x="568" y="-318.8" font-family="Arial" font-size="14.00">F1CLINK</text>
+<text text-anchor="middle" x="524.78" y="-300.83" font-family="Arial" font-size="14.00">0..1</text>
+<text text-anchor="middle" x="666.84" y="-348.91" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction -->
+<g id="edge35" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranOCUUPFunction</title>
+<path fill="none" stroke="#528b8b" d="M717.41,-347.55C710.37,-337.08 700.36,-324.07 689,-315 677.97,-306.19 587.06,-266.36 574,-261 531.36,-243.49 482.36,-226.18 444.54,-213.41"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="434.68,-210.1 445.59,-209.01 439.42,-211.69 444.16,-213.28 444.16,-213.28 444.16,-213.28 439.42,-211.69 442.73,-217.55 434.68,-210.1 434.68,-210.1"/>
+<text text-anchor="middle" x="682" y="-275.3" font-family="Arial" font-size="14.00">F1ULINK</text>
+<text text-anchor="middle" x="424.18" y="-213.9" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="705.91" y="-336.35" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
+<g id="edge34" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M754.84,-347.88C774.95,-332.74 799,-308.65 799,-280 799,-280 799,-280 799,-104 799,-84.75 799,-63.05 799,-46.4"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="799,-36.26 803.5,-46.26 799,-41.26 799,-46.26 799,-46.26 799,-46.26 799,-41.26 794.5,-46.26 799,-36.26 799,-36.26"/>
+<text text-anchor="middle" x="823.5" y="-188.3" font-family="Arial" font-size="14.00">O1LINK</text>
+<text text-anchor="middle" x="788.5" y="-40.06" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="766.34" y="-336.68" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="edge38" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<path fill="none" stroke="#528b8b" d="M923.71,-435.88C942.35,-427.23 956.53,-415.54 945,-402 925.13,-378.67 844.78,-370.84 787.66,-368.24"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="777.64,-367.83 787.82,-363.74 782.64,-368.03 787.63,-368.24 787.63,-368.24 787.63,-368.24 782.64,-368.03 787.45,-372.73 777.64,-367.83 777.64,-367.83"/>
+<text text-anchor="middle" x="984" y="-405.8" font-family="Arial" font-size="14.00">OFHULINK</text>
+<text text-anchor="middle" x="788.14" y="-371.63" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="912.21" y="-424.68" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="edge39" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<path fill="none" stroke="#528b8b" d="M824.43,-445.96C772.33,-439.1 696.71,-427.5 688,-417 680.96,-408.51 685.38,-399.09 693.45,-390.74"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="700.9,-384.01 696.49,-394.05 697.19,-387.36 693.47,-390.71 693.47,-390.71 693.47,-390.71 697.19,-387.36 690.46,-387.37 700.9,-384.01 700.9,-384.01"/>
+<text text-anchor="middle" x="722.5" y="-405.8" font-family="Arial" font-size="14.00">OFHSLINK</text>
+<text text-anchor="middle" x="711.4" y="-387.81" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="812.93" y="-434.76" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="edge41" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<path fill="none" stroke="#528b8b" d="M824.4,-437.81C809.52,-432.44 793.56,-425.53 780,-417 768.9,-410.02 758.18,-400.39 749.39,-391.44"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="742.49,-384.16 752.64,-388.32 745.93,-387.79 749.37,-391.42 749.37,-391.42 749.37,-391.42 745.93,-387.79 746.1,-394.51 742.49,-384.16 742.49,-384.16"/>
+<text text-anchor="middle" x="816" y="-405.8" font-family="Arial" font-size="14.00">OFHMLINK</text>
+<text text-anchor="middle" x="731.99" y="-387.96" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="835.9" y="-426.61" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction -->
+<g id="edge42" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranODUFunction</title>
+<path fill="none" stroke="#528b8b" d="M870.45,-434.92C867.33,-424.05 861.73,-410.46 852,-402 834.21,-386.54 810.06,-377.87 787.8,-373.03"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="777.73,-371.06 788.41,-368.56 782.64,-372.02 787.55,-372.98 787.55,-372.98 787.55,-372.98 782.64,-372.02 786.69,-377.4 777.73,-371.06 777.73,-371.06"/>
+<text text-anchor="middle" x="897" y="-405.8" font-family="Arial" font-size="14.00">OFHCLINK</text>
+<text text-anchor="middle" x="788.23" y="-374.86" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="858.95" y="-423.72" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
+<g id="edge40" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M923.85,-448.95C963.65,-445.11 1020.15,-436.46 1066,-417 1089.16,-407.17 1098.04,-404.94 1112,-384 1127.31,-361.04 1126,-351.1 1126,-323.5 1126,-323.5 1126,-323.5 1126,-104 1126,-44.66 921.77,-26.03 836.11,-20.82"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="826.04,-20.23 836.28,-16.32 831.03,-20.52 836.02,-20.81 836.02,-20.81 836.02,-20.81 831.03,-20.52 835.76,-25.31 826.04,-20.23 826.04,-20.23"/>
+<text text-anchor="middle" x="1162" y="-231.8" font-family="Arial" font-size="14.00">OFHMLINK</text>
+<text text-anchor="middle" x="836.54" y="-9.03" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="935.35" y="-452.75" font-family="Arial" font-size="14.00">0..1</text>
+</g>
+<!-- o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO -->
+<g id="edge43" class="edge">
+<title>o&#45;ran&#45;smo&#45;teiv&#45;ranORUFunction&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranSMO</title>
+<path fill="none" stroke="#528b8b" d="M923.5,-446.95C961.92,-441.89 1010.66,-432.57 1023,-417 1049.1,-384.06 1083.76,-395.19 977,-315 945.43,-291.29 918.25,-324.59 890,-297 870.26,-277.71 876,-264.1 876,-236.5 876,-236.5 876,-236.5 876,-104 876,-77.22 854.75,-55.12 834.58,-40.18"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="826.36,-34.41 837.14,-36.47 830.46,-37.28 834.55,-40.15 834.55,-40.15 834.55,-40.15 830.46,-37.28 831.97,-43.84 826.36,-34.41 826.36,-34.41"/>
+<text text-anchor="middle" x="900.5" y="-231.8" font-family="Arial" font-size="14.00">O1LINK</text>
+<text text-anchor="middle" x="836.86" y="-38.21" font-family="Arial" font-size="14.00">0..*</text>
+<text text-anchor="middle" x="935" y="-435.75" font-family="Arial" font-size="14.00">0..1</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranSector -->
-<g id="node20" class="node">
+<g id="node21" class="node">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranSector</title>
-<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="1088,-384 1032,-384 1032,-348 1088,-348 1088,-384"/>
-<text text-anchor="middle" x="1060" y="-362.3" font-family="Arial" font-size="14.00">Sector</text>
+<polygon fill="#366f34" fill-opacity="0.254902" stroke="black" points="1181,-471 1125,-471 1125,-435 1181,-435 1181,-471"/>
+<text text-anchor="middle" x="1153" y="-449.3" font-family="Arial" font-size="14.00">Sector</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranSector&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule -->
-<g id="edge30" class="edge">
+<g id="edge45" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranSector&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;equipmentAntennaModule</title>
-<path fill="none" stroke="#528b8b" d="M1078.82,-347.8C1092.56,-335.24 1111.37,-318.05 1126.61,-304.12"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1134.21,-297.18 1129.86,-307.24 1130.52,-300.55 1126.83,-303.92 1126.83,-303.92 1126.83,-303.92 1130.52,-300.55 1123.79,-300.6 1134.21,-297.18 1134.21,-297.18"/>
-<text text-anchor="middle" x="1142.5" y="-318.8" font-family="Arial" font-size="14.00">GROUPS</text>
-<text text-anchor="middle" x="1122.71" y="-300.98" font-family="Arial" font-size="14.00">0..1</text>
-<text text-anchor="middle" x="1068.32" y="-336.6" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M1164.53,-434.8C1172.65,-422.7 1183.64,-406.3 1192.79,-392.67"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1198.48,-384.18 1196.65,-394.99 1195.7,-388.33 1192.91,-392.48 1192.91,-392.48 1192.91,-392.48 1195.7,-388.33 1189.18,-389.97 1198.48,-384.18 1198.48,-384.18"/>
+<text text-anchor="middle" x="1214.5" y="-405.8" font-family="Arial" font-size="14.00">GROUPS</text>
+<text text-anchor="middle" x="1186.98" y="-387.98" font-family="Arial" font-size="14.00">0..1</text>
+<text text-anchor="middle" x="1154.03" y="-423.6" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 <!-- o&#45;ran&#45;smo&#45;teiv&#45;ranSector&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU -->
-<g id="edge29" class="edge">
+<g id="edge44" class="edge">
 <title>o&#45;ran&#45;smo&#45;teiv&#45;ranSector&#45;&gt;o&#45;ran&#45;smo&#45;teiv&#45;ranNRCellDU</title>
-<path fill="none" stroke="#528b8b" d="M1049.46,-347.8C1041.84,-334.45 1032.02,-315.22 1027,-297 1020.03,-271.71 1018.06,-241.76 1017.67,-220.52"/>
-<polygon fill="#528b8b" stroke="#528b8b" points="1017.59,-210.27 1022.17,-220.23 1017.63,-215.27 1017.67,-220.27 1017.67,-220.27 1017.67,-220.27 1017.63,-215.27 1013.17,-220.3 1017.59,-210.27 1017.59,-210.27"/>
-<text text-anchor="middle" x="1057.5" y="-275.3" font-family="Arial" font-size="14.00">GROUPS</text>
-<text text-anchor="middle" x="1029.09" y="-214.07" font-family="Arial" font-size="14.00">0..1</text>
-<text text-anchor="middle" x="1038.96" y="-336.6" font-family="Arial" font-size="14.00">0..*</text>
+<path fill="none" stroke="#528b8b" d="M1130.59,-434.86C1115.51,-422.27 1096.22,-403.93 1084,-384 1069.37,-360.13 1060.63,-329.15 1055.86,-307.23"/>
+<polygon fill="#528b8b" stroke="#528b8b" points="1053.83,-297.27 1060.23,-306.17 1054.83,-302.17 1055.83,-307.07 1055.83,-307.07 1055.83,-307.07 1054.83,-302.17 1051.42,-307.97 1053.83,-297.27 1053.83,-297.27"/>
+<text text-anchor="middle" x="1114.5" y="-362.3" font-family="Arial" font-size="14.00">GROUPS</text>
+<text text-anchor="middle" x="1042.33" y="-301.07" font-family="Arial" font-size="14.00">0..1</text>
+<text text-anchor="middle" x="1120.09" y="-423.66" font-family="Arial" font-size="14.00">0..*</text>
 </g>
 </g>
 </svg>
index ce3bc9a..9c37213 100644 (file)
@@ -39,6 +39,16 @@ module o-ran-smo-teiv-ran {
 
         SPDX-License-Identifier: Apache-2.0";
 
+    revision "2025-04-01" {
+        description "This revision introduces SMO and O1 interface";
+        or-teiv-yext:label 1.1.3;
+    }
+
+    revision "2025-03-28" {
+        description "This revision introduces E2 and Open Fronthaul interfaces";
+        or-teiv-yext:label 1.1.2;
+    }
+    
     revision "2025-03-20" {
         description "Proposed entities, relationships and attributes";
         or-teiv-yext:label 1.1.1;
@@ -58,6 +68,31 @@ module o-ran-smo-teiv-ran {
 
     or-teiv-yext:domain RAN;
 
+    list SMO {
+        description "Service Management and Orchestration (SMO).
+
+        A centralized component responsible for the management, orchestration,
+        and automation of the entire RAN infrastructure. SMO enables flexible,
+        software-driven network control and is critical for enabling the open,
+        interoperable, and disaggregated approach that defines O-RAN.
+
+        In the O-RAN architecture, the SMO is part of the management and
+        orchestration layer, sitting above the RAN elements like the RU, DU,
+        and CU. It communicates with the RAN using open interfaces,
+        particularly O1 and A1 interfaces";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Entity_Mapping_Grp;
+        key id;
+
+        container attributes {
+            leaf smoName {
+                description "Name of the SMO";
+                type string;
+            }
+        }
+    }
+
     list ODUFunction {
         uses or-teiv-types:Top_Grp_Type;
         uses or-teiv-types:Origin_Entity_Mapping_Grp;
@@ -597,4 +632,388 @@ module o-ran-smo-teiv-ran {
             type instance-identifier;
         }
     }
+
+    or-teiv-yext:biDirectionalTopologyRelationship OCUCPFUNCTION_E1LINK_OCUUPFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the OCUCPFUNCTION type.
+            The bSide of this relationship is an instance of the OCUUPFUNCTION type.
+            The relationships defines an E1 link between the
+            aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf ocucpFunction-e2-linked-ocuupFunction {
+            description "O-CUCP Function links O-CUUP Function.";
+            or-teiv-yext:aSide or-teiv-ran:OCUCPFunction;
+            type instance-identifier;
+        }
+
+        leaf-list ocuupFunction-e2-linked-by-ocucpFunction {
+            description "O-CUUP Function linked by O-CUCP Function.";
+            or-teiv-yext:bSide or-teiv-ran:OCUUPFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ODUFUNCTION_E2LINK_NEARRTRICFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ODUFunction type.
+            The bSide of this relationship is an instance of the NearRTRICFunction type.
+            The relationships defines an E2 link between the
+            aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oduFunction-e2-linked-nearRTRICFunction {
+            description "O-DU Function links Near RT RIC Function.";
+            or-teiv-yext:aSide or-teiv-ran:ODUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list nearRTRICFunction-e2-linked-by-oduFunction {
+            description "Near RT RIC Function linked by O-DU Function.";
+            or-teiv-yext:bSide or-teiv-ran:NearRTRICFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the OCUCPFUNCTION type.
+            The bSide of this relationship is an instance of the NearRTRICFunction type.
+            The relationships defines an E2 link between the
+            aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf ocucpFunction-e2-linked-nearRTRICFunction {
+            description "O-CUCP Function links Near RT RIC Function.";
+            or-teiv-yext:aSide or-teiv-ran:OCUCPFunction;
+            type instance-identifier;
+        }
+
+        leaf-list nearRTRICFunction-e2-linked-by-ocucpFunction {
+            description "Near RT RIC Function linked by O-CUCP Function.";
+            or-teiv-yext:bSide or-teiv-ran:NearRTRICFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the OCUUPFUNCTION type.
+            The bSide of this relationship is an instance of the NearRTRICFunction type.
+            The relationships defines an E2 link between the
+            aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf ocuupFunction-e2-linked-nearRTRICFunction {
+            description "O-CUUP Function links Near RT RIC Function.";
+            or-teiv-yext:aSide or-teiv-ran:OCUUPFunction;
+            type instance-identifier;
+        }
+
+        leaf-list nearRTRICFunction-e2-linked-by-ocuupFunction {
+            description "Near RT RIC Function linked by O-CUUP Function.";
+            or-teiv-yext:bSide or-teiv-ran:NearRTRICFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ORUFUNCTION_OFHMLINK_SMO { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ORUFunction type.
+            The bSide of this relationship is an instance of the SMO type.
+            The relationships defines an Open FH (Fronthaul) M-Plane Interface between the
+            aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oruFunction-ofhm-linked-smo {
+            description "O-RU Function links SMO.";
+            or-teiv-yext:aSide or-teiv-ran:ORUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list smo-ofhm-linked-by-oruFunction {
+            description "SMO linked by O-RU Function.";
+            or-teiv-yext:bSide or-teiv-ran:SMO;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ORUFUNCTION_OFHMLINK_ODUFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ORUFunction type.
+            The bSide of this relationship is an instance of the ODUFunction type.
+            The relationships defines an Open FH (Fronthaul) M-Plane Interface between
+            the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oruFunction-ofhm-linked-oduFunction {
+            description "O-RU Function links O-DU Function.";
+            or-teiv-yext:aSide or-teiv-ran:ORUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list oduFunction-ofhm-linked-by-oruFunction {
+            description "O-DU Function linked by O-RU Function.";
+            or-teiv-yext:bSide or-teiv-ran:ODUFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ORUFUNCTION_OFHCLINK_ODUFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ORUFunction type.
+            The bSide of this relationship is an instance of the ODUFunction type.
+            The relationships defines an Open FH (Fronthaul) Control Interface between
+            the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oruFunction-ofhc-linked-oduFunction {
+            description "O-RU Function links O-DU Function.";
+            or-teiv-yext:aSide or-teiv-ran:ORUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list oduFunction-ofhc-linked-by-oruFunction {
+            description "O-DU Function linked by O-RU Function.";
+            or-teiv-yext:bSide or-teiv-ran:ODUFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ORUFUNCTION_OFHULINK_ODUFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ORUFunction type.
+            The bSide of this relationship is an instance of the ODUFunction type.
+            The relationships defines an Open FH (Fronthaul) User Interface between
+            the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oruFunction-ofhu-linked-oduFunction {
+            description "O-RU Function links O-DU Function.";
+            or-teiv-yext:aSide or-teiv-ran:ORUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list oduFunction-ofhu-linked-by-oruFunction {
+            description "O-DU Function linked by O-RU Function.";
+            or-teiv-yext:bSide or-teiv-ran:ODUFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ORUFUNCTION_OFHSLINK_ODUFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ORUFunction type.
+            The bSide of this relationship is an instance of the ODUFunction type.
+            The relationships defines an Open FH (Fronthaul) Synchronization Interface
+            between the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oruFunction-ofhs-linked-oduFunction {
+            description "O-RU Function links O-DU Function.";
+            or-teiv-yext:aSide or-teiv-ran:ORUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list oduFunction-ofhs-linked-by-oruFunction {
+            description "O-DU Function linked by O-RU Function.";
+            or-teiv-yext:bSide or-teiv-ran:ODUFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ODUFUNCTION_O1LINK_SMO { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ODUFunction type.
+            The bSide of this relationship is an instance of the SMO type.
+            The relationships defines an O1 Interface between the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oduFunction-o1-linked-smo {
+            description "O-DU Function links SMO.";
+            or-teiv-yext:aSide or-teiv-ran:ODUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list smo-o1-linked-by-oduFunction {
+            description "SMO linked by O-DU Function.";
+            or-teiv-yext:bSide or-teiv-ran:SMO;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship OCUCPFUNCTION_O1LINK_SMO { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the OCUCPFunction type.
+            The bSide of this relationship is an instance of the SMO type.
+            The relationships defines an O1 Interface between the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf ocucpFunction-o1-linked-smo {
+            description "O-CU-CP Function links SMO.";
+            or-teiv-yext:aSide or-teiv-ran:OCUCPFunction;
+            type instance-identifier;
+        }
+
+        leaf-list smo-o1-linked-by-ocucpFunction {
+            description "SMO linked by Near O-CU-CP Function.";
+            or-teiv-yext:bSide or-teiv-ran:SMO;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ORUFUNCTION_O1LINK_SMO { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ORUFunction type.
+            The bSide of this relationship is an instance of the SMO type.
+            The relationships defines an O1 Interface between the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oruFunction-o1-linked-smo {
+            description "O-RU Function links SMO.";
+            or-teiv-yext:aSide or-teiv-ran:ORUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list smo-o1-linked-by-oruFunction {
+            description "SMO links O-RU Function.";
+            or-teiv-yext:bSide or-teiv-ran:SMO;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship NEARRTRICFUNCTION_O1LINK_SMO { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the NearRTRICFunction type.
+            The bSide of this relationship is an instance of the SMO type.
+            The relationships defines an O1 Interface between the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf nearRTRICFunction-o1-linked-smo {
+            description "Near RT RIC Function links SMO.";
+            or-teiv-yext:aSide or-teiv-ran:NearRTRICFunction;
+            type instance-identifier;
+        }
+
+        leaf-list smo-o1-linked-by-nearRTRICFunction {
+            description "SMO linked by Near RT RIC Function.";
+            or-teiv-yext:bSide or-teiv-ran:SMO;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ODUFUNCTION_F1ULINK_OCUUPFUNCTION { // 0..1 to 0..n
+
+        description
+            "The aSide of this relationship is an instance of the ODUFUNCTION type.
+            The bSide of this relationship is an instance of the OCUUPFUNCTION type.
+            The relationships defines an F1-u Interface between the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oduFunction-f1-u-linked-ocuupFunction {
+            description "O-DU Function links O-CU-UP Function.";
+            or-teiv-yext:aSide or-teiv-ran:ODUFunction;
+            type instance-identifier;
+        }
+
+        leaf-list ocuupFunction-f1-u-linked-by-oduFunction {
+            description "O-CU-UP Function linked by O-DU Function.";
+            or-teiv-yext:bSide or-teiv-ran:OCUUPFunction;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship ODUFUNCTION_F1CLINK_OCUCPFUNCTION { // 0..1 to 0..1
+
+        description
+            "The aSide of this relationship is an instance of the ODUFUNCTION type.
+            The bSide of this relationship is an instance of the OCUCPFUNCTION type.
+            The relationships defines an F1-c Interface between the aSide and bSide.
+            ";
+
+        uses or-teiv-types:Top_Grp_Type;
+        uses or-teiv-types:Origin_Relationship_Mapping_Grp;
+        key id;
+
+        leaf oduFunction-f1-c-linked-ocucpFunction {
+            description "O-DU Function links O-CU-CP Function.";
+            or-teiv-yext:aSide or-teiv-ran:ODUFunction;
+            type instance-identifier;
+        }
+
+        leaf ocucpFunction-f1-c-linked-by-oduFunction {
+            description "O-CU-UP Function linked by O-DU Function.";
+            or-teiv-yext:bSide or-teiv-ran:OCUCPFunction;
+            type instance-identifier;
+        }
+    }
 }
\ No newline at end of file
index a827293..4412476 100644 (file)
@@ -40,8 +40,6 @@ public class TestPostgresqlContainer extends PostgreSQLContainer<TestPostgresqlC
         if (container == null) {
             container = new TestPostgresqlContainer(DockerImageName.parse("postgis/postgis:13-3.4-alpine")
                     .asCompatibleSubstituteFor("postgres"));
-            container.withCopyFileToContainer(MountableFile.forClasspathResource(
-                    "pgsqlschema/01_init-oran-smo-teiv-model.sql"), "/pgsqlschema/01_init-oran-smo-teiv-model.sql");
             container.withCopyFileToContainer(MountableFile.forClasspathResource(
                     "pgsqlschema/00_init-oran-smo-teiv-data.sql"), "/pgsqlschema/00_init-oran-smo-teiv-data.sql");
             container.withCopyFileToContainer(MountableFile.forClasspathResource(
@@ -71,6 +69,8 @@ public class TestPostgresqlContainer extends PostgreSQLContainer<TestPostgresqlC
             container.withCopyFileToContainer(MountableFile.forClasspathResource(
                     "pgsqlschema/test-data-for-ingestion-validation.sql"),
                     "/pgsqlschema/test-data-for-ingestion-validation.sql");
+            container.withCopyFileToContainer(MountableFile.forClasspathResource(
+                    "pgsqlschema/01_init-oran-smo-teiv-model.sql"), "/pgsqlschema/01_init-oran-smo-teiv-model.sql");
             container.setCommand("postgres", "-c", "max_connections=2000");
 
             container.start();
index 43513ce..ab62e0d 100644 (file)
@@ -166,8 +166,8 @@ class SchemaRegistryTest {
         //given
         List<String> expectedEntityName = List.of("AntennaCapability", "AntennaModule", "ORUFunction", "OCUCPFunction",
                 "OCUUPFunction", "ODUFunction", "ManagedElement", "NRCellCU", "CloudifiedNF", "NRCellDU", "NRSectorCarrier",
-                "Sector", "Site", "NearRTRICFunction", "NFDeployment", "OCloudNamespace", "NodeCluster", "OCloudSite",
-                "PhysicalAppliance", "Site");
+                "SMO", "Sector", "Site", "NearRTRICFunction", "NFDeployment", "OCloudNamespace", "NodeCluster",
+                "OCloudSite", "PhysicalAppliance", "Site");
         //when
         List<String> actualEntityNames = SchemaRegistry.getEntityNames();
         //then
@@ -222,7 +222,7 @@ class SchemaRegistryTest {
     void testGetEntityTypesByDomain() {
         //given
         List<String> expectedEntities = List.of("AntennaCapability", "AntennaModule", "ORUFunction", "OCUCPFunction",
-                "OCUUPFunction", "ODUFunction", "NRCellCU", "NRCellDU", "NRSectorCarrier", "Sector", "Site",
+                "OCUUPFunction", "ODUFunction", "NRCellCU", "NRCellDU", "NRSectorCarrier", "SMO", "Sector", "Site",
                 "NearRTRICFunction");
         //when
         List<String> equipmentToRanEntityTypes = SchemaRegistry.getEntityNamesByDomain("REL_EQUIPMENT_RAN");
@@ -235,7 +235,11 @@ class SchemaRegistryTest {
     @Test
     void getRelationNames() {
         List<String> expectedRelationNames = List.of("ANTENNAMODULE_SERVES_ANTENNACAPABILITY",
-                "NRSECTORCARRIER_USES_ANTENNACAPABILITY", "ODUFUNCTION_PROVIDES_NRCELLDU",
+                "NRSECTORCARRIER_USES_ANTENNACAPABILITY", "ODUFUNCTION_PROVIDES_NRCELLDU", "NEARRTRICFUNCTION_O1LINK_SMO",
+                "OCUCPFUNCTION_O1LINK_SMO", "ODUFUNCTION_E2LINK_NEARRTRICFUNCTION", "ODUFUNCTION_F1CLINK_OCUCPFUNCTION",
+                "ODUFUNCTION_F1ULINK_OCUUPFUNCTION", "ODUFUNCTION_O1LINK_SMO", "ORUFUNCTION_O1LINK_SMO",
+                "ORUFUNCTION_OFHCLINK_ODUFUNCTION", "ORUFUNCTION_OFHMLINK_ODUFUNCTION", "ORUFUNCTION_OFHMLINK_SMO",
+                "ORUFUNCTION_OFHSLINK_ODUFUNCTION", "ORUFUNCTION_OFHULINK_ODUFUNCTION",
                 "MANAGEDELEMENT_MANAGES_OCUCPFUNCTION", "MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION",
                 "NRCELLDU_USES_NRSECTORCARRIER", "MANAGEDELEMENT_MANAGES_ORUFUNCTION",
                 "MANAGEDELEMENT_MANAGES_OCUUPFUNCTION", "MANAGEDELEMENT_MANAGES_ODUFUNCTION", "SECTOR_GROUPS_ANTENNAMODULE",
@@ -245,7 +249,8 @@ class SchemaRegistryTest {
                 "NFDEPLOYMENT_SERVES_OCUUPFUNCTION", "NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION",
                 "NODECLUSTER_LOCATED_AT_OCLOUDSITE", "OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER",
                 "NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE", "CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT",
-                "ANTENNAMODULE_SERVES_NRCELLDU", "PHYSICALAPPLIANCE_INSTALLEDAT_SITE",
+                "ANTENNAMODULE_SERVES_NRCELLDU", "PHYSICALAPPLIANCE_INSTALLEDAT_SITE", "OCUCPFUNCTION_E1LINK_OCUUPFUNCTION",
+                "OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION", "OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION",
                 "PHYSICALAPPLIANCE_SERVES_ODUFUNCTION", "PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION",
                 "PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION", "PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION");
         //when
@@ -504,11 +509,16 @@ class SchemaRegistryTest {
     void testGetRelationTypesByDomain() {
         //given
         List<String> expectedRelations = List.of("SECTOR_GROUPS_NRCELLDU", "NRCELLDU_USES_NRSECTORCARRIER",
-                "ODUFUNCTION_PROVIDES_NRSECTORCARRIER", "ODUFUNCTION_PROVIDES_NRCELLDU",
-                "NRSECTORCARRIER_USES_ANTENNACAPABILITY", "OCUCPFUNCTION_PROVIDES_NRCELLCU",
-                "MANAGEDELEMENT_MANAGES_OCUCPFUNCTION", "MANAGEDELEMENT_MANAGES_OCUUPFUNCTION",
-                "MANAGEDELEMENT_MANAGES_ODUFUNCTION", "MANAGEDELEMENT_MANAGES_ORUFUNCTION",
-                "MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION");
+                "ODUFUNCTION_PROVIDES_NRSECTORCARRIER", "ODUFUNCTION_PROVIDES_NRCELLDU", "NEARRTRICFUNCTION_O1LINK_SMO",
+                "OCUCPFUNCTION_O1LINK_SMO", "ODUFUNCTION_E2LINK_NEARRTRICFUNCTION", "ODUFUNCTION_F1CLINK_OCUCPFUNCTION",
+                "ODUFUNCTION_F1ULINK_OCUUPFUNCTION", "ODUFUNCTION_O1LINK_SMO", "ORUFUNCTION_O1LINK_SMO",
+                "ORUFUNCTION_OFHCLINK_ODUFUNCTION", "ORUFUNCTION_OFHMLINK_ODUFUNCTION", "ORUFUNCTION_OFHMLINK_SMO",
+                "ORUFUNCTION_OFHSLINK_ODUFUNCTION", "ORUFUNCTION_OFHULINK_ODUFUNCTION",
+                "OCUCPFUNCTION_E1LINK_OCUUPFUNCTION", "OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                "OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION", "NRSECTORCARRIER_USES_ANTENNACAPABILITY",
+                "OCUCPFUNCTION_PROVIDES_NRCELLCU", "MANAGEDELEMENT_MANAGES_OCUCPFUNCTION",
+                "MANAGEDELEMENT_MANAGES_OCUUPFUNCTION", "MANAGEDELEMENT_MANAGES_ODUFUNCTION",
+                "MANAGEDELEMENT_MANAGES_ORUFUNCTION", "MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION");
         //when
         List<String> oamToRanRelations = SchemaRegistry.getRelationNamesByDomain("REL_OAM_RAN");
         //then
index 6a9f524..4ef658c 100644 (file)
@@ -142,6 +142,12 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/REL_OAM_RAN/entity-types/ORUFunction/entities"
                         }
                     },
+                    {
+                        "name": "SMO",
+                        "entities": {
+                            "href": "/domains/REL_OAM_RAN/entity-types/SMO/entities"
+                        }
+                    },
                     {
                         "name": "Sector",
                         "entities": {
@@ -164,11 +170,11 @@ import org.springframework.cloud.contract.spec.Contract
                 "last": {
                     "href": "/domains/REL_OAM_RAN/entity-types?offset=0&limit=500"
                 },
-                "totalCount": 11
+                "totalCount": 12
             }''')
             bodyMatchers {
                 jsonPath('$.items', byType {
-                    occurrence(11)
+                    occurrence(12)
                 })
                 jsonPath('$.items[0].name', byEquality())
                 jsonPath('$.items[0].entities.href', byEquality())
@@ -192,6 +198,8 @@ import org.springframework.cloud.contract.spec.Contract
                 jsonPath('$.items[9].entities.href', byEquality())
                 jsonPath('$.items[10].name', byEquality())
                 jsonPath('$.items[10].entities.href', byEquality())
+                jsonPath('$.items[11].name', byEquality())
+                jsonPath('$.items[11].entities.href', byEquality())
             }
         }
     },
@@ -262,6 +270,12 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/RAN/entity-types/ORUFunction/entities"
                         }
                     },
+                    {
+                        "name": "SMO",
+                        "entities": {
+                            "href": "/domains/RAN/entity-types/SMO/entities"
+                        }
+                    },
                     {
                         "name": "Sector",
                         "entities": {
@@ -284,11 +298,11 @@ import org.springframework.cloud.contract.spec.Contract
                 "last": {
                     "href": "/domains/RAN/entity-types?offset=0&limit=500"
                 },
-                "totalCount": 10
+                "totalCount": 11
             }''')
             bodyMatchers {
                 jsonPath('$.items', byType {
-                    occurrence(10)
+                    occurrence(11)
                 })
                 jsonPath('$.items[0].name', byEquality())
                 jsonPath('$.items[0].entities.href', byEquality())
@@ -310,6 +324,8 @@ import org.springframework.cloud.contract.spec.Contract
                 jsonPath('$.items[8].entities.href', byEquality())
                 jsonPath('$.items[9].name', byEquality())
                 jsonPath('$.items[9].entities.href', byEquality())
+                jsonPath('$.items[10].name', byEquality())
+                jsonPath('$.items[10].entities.href', byEquality())
             }
         }
     },
@@ -440,6 +456,12 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/TEIV/entity-types/PhysicalAppliance/entities"
                         }
                     },
+                    {
+                        "name": "SMO",
+                        "entities": {
+                            "href": "/domains/TEIV/entity-types/SMO/entities"
+                        }
+                    },
                     {
                         "name": "Sector",
                         "entities": {
@@ -474,11 +496,11 @@ import org.springframework.cloud.contract.spec.Contract
                 "last": {
                     "href": "/domains/TEIV/entity-types?offset=0&limit=500"
                 },
-                "totalCount": 22
+                "totalCount": 23
             }''')
             bodyMatchers {
                 jsonPath('$.items', byType {
-                    occurrence(22)
+                    occurrence(23)
                 })
                 jsonPath('$.items[0].name', byEquality())
                 jsonPath('$.items[0].entities.href', byEquality())
@@ -524,6 +546,8 @@ import org.springframework.cloud.contract.spec.Contract
                 jsonPath('$.items[20].entities.href', byEquality())
                 jsonPath('$.items[21].name', byEquality())
                 jsonPath('$.items[21].entities.href', byEquality())
+                jsonPath('$.items[22].name', byEquality())
+                jsonPath('$.items[22].entities.href', byEquality())
             }
         }
     },
@@ -559,7 +583,7 @@ import org.springframework.cloud.contract.spec.Contract
             body('''{
                 "status": "BAD_REQUEST",
                 "message": "Invalid Value",
-                "details": "Offset cannot be larger than 21"
+                "details": "Offset cannot be larger than 22"
             }''')
         }
     }
index 5948b02..40ff10a 100644 (file)
@@ -1633,7 +1633,7 @@ import org.springframework.cloud.contract.spec.Contract
             body('''{
                 "status": "BAD_REQUEST",
                 "message": "Unknown entity type",
-                "details": "Entity type NRCellDU1 is not part of the model, known entity types: [AntennaCapability, AntennaModule, CloudifiedNF, EntityTypeA, EntityTypeAWithEntityTypeNameLengthLongerThanSixtyThreeCharacters, ManagedElement, NFDeployment, NRCellCU, NRCellDU, NRSectorCarrier, NearRTRICFunction, NodeCluster, OCUCPFunction, OCUUPFunction, OCloudNamespace, OCloudSite, ODUFunction, ORUFunction, PhysicalAppliance, Sector, Site, Site]"
+                "details": "Entity type NRCellDU1 is not part of the model, known entity types: [AntennaCapability, AntennaModule, CloudifiedNF, EntityTypeA, EntityTypeAWithEntityTypeNameLengthLongerThanSixtyThreeCharacters, ManagedElement, NFDeployment, NRCellCU, NRCellDU, NRSectorCarrier, NearRTRICFunction, NodeCluster, OCUCPFunction, OCUUPFunction, OCloudNamespace, OCloudSite, ODUFunction, ORUFunction, PhysicalAppliance, SMO, Sector, Site, Site]"
             }''')
         }
     },
index 78ebdd0..c86c92d 100644 (file)
@@ -66,6 +66,12 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/REL_OAM_RAN/relationship-types/MANAGEDELEMENT_MANAGES_ORUFUNCTION/relationships"
                         }
                     },
+                    {
+                        "name": "NEARRTRICFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/NEARRTRICFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "NRCELLDU_USES_NRSECTORCARRIER",
                         "relationships": {
@@ -78,12 +84,60 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/REL_OAM_RAN/relationship-types/NRSECTORCARRIER_USES_ANTENNACAPABILITY/relationships"
                         }
                     },
+                    {
+                        "name": "OCUCPFUNCTION_E1LINK_OCUUPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/OCUCPFUNCTION_E1LINK_OCUUPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "OCUCPFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/OCUCPFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "OCUCPFUNCTION_PROVIDES_NRCELLCU",
                         "relationships": {
                             "href": "/domains/REL_OAM_RAN/relationship-types/OCUCPFUNCTION_PROVIDES_NRCELLCU/relationships"
                         }
                     },
+                    {
+                        "name": "OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ODUFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_F1CLINK_OCUCPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ODUFUNCTION_F1CLINK_OCUCPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_F1ULINK_OCUUPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ODUFUNCTION_F1ULINK_OCUUPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ODUFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "ODUFUNCTION_PROVIDES_NRCELLDU",
                         "relationships": {
@@ -96,6 +150,42 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/REL_OAM_RAN/relationship-types/ODUFUNCTION_PROVIDES_NRSECTORCARRIER/relationships"
                         }
                     },
+                    {
+                        "name": "ORUFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ORUFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHCLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ORUFUNCTION_OFHCLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHMLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ORUFUNCTION_OFHMLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHMLINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ORUFUNCTION_OFHMLINK_SMO/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHSLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ORUFUNCTION_OFHSLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHULINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_OAM_RAN/relationship-types/ORUFUNCTION_OFHULINK_ODUFUNCTION/relationships"
+                        }
+                    },
                     {
                         "name": "SECTOR_GROUPS_NRCELLDU",
                         "relationships": {
@@ -118,11 +208,11 @@ import org.springframework.cloud.contract.spec.Contract
                 "last": {
                     "href": "/domains/REL_OAM_RAN/relationship-types?offset=0&limit=500"
                 },
-                "totalCount": 11
+                "totalCount": 26
             }''')
             bodyMatchers {
                 jsonPath('$.items', byType {
-                    occurrence(11)
+                    occurrence(26)
                 })
                 jsonPath('$.items[0].name', byEquality())
                 jsonPath('$.items[0].relationships.href', byEquality())
@@ -146,6 +236,36 @@ import org.springframework.cloud.contract.spec.Contract
                 jsonPath('$.items[9].relationships.href', byEquality())
                 jsonPath('$.items[10].name', byEquality())
                 jsonPath('$.items[10].relationships.href', byEquality())
+                jsonPath('$.items[11].name', byEquality())
+                jsonPath('$.items[11].relationships.href', byEquality())
+                jsonPath('$.items[12].name', byEquality())
+                jsonPath('$.items[12].relationships.href', byEquality())
+                jsonPath('$.items[13].name', byEquality())
+                jsonPath('$.items[13].relationships.href', byEquality())
+                jsonPath('$.items[14].name', byEquality())
+                jsonPath('$.items[14].relationships.href', byEquality())
+                jsonPath('$.items[15].name', byEquality())
+                jsonPath('$.items[15].relationships.href', byEquality())
+                jsonPath('$.items[16].name', byEquality())
+                jsonPath('$.items[16].relationships.href', byEquality())
+                jsonPath('$.items[17].name', byEquality())
+                jsonPath('$.items[17].relationships.href', byEquality())
+                jsonPath('$.items[18].name', byEquality())
+                jsonPath('$.items[18].relationships.href', byEquality())
+                jsonPath('$.items[19].name', byEquality())
+                jsonPath('$.items[19].relationships.href', byEquality())
+                jsonPath('$.items[20].name', byEquality())
+                jsonPath('$.items[20].relationships.href', byEquality())
+                jsonPath('$.items[21].name', byEquality())
+                jsonPath('$.items[21].relationships.href', byEquality())
+                jsonPath('$.items[22].name', byEquality())
+                jsonPath('$.items[22].relationships.href', byEquality())
+                jsonPath('$.items[23].name', byEquality())
+                jsonPath('$.items[23].relationships.href', byEquality())
+                jsonPath('$.items[24].name', byEquality())
+                jsonPath('$.items[24].relationships.href', byEquality())
+                jsonPath('$.items[25].name', byEquality())
+                jsonPath('$.items[25].relationships.href', byEquality())
             }
         }
     },
@@ -180,6 +300,12 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ANTENNAMODULE_SERVES_NRCELLDU/relationships"
                         }
                     },
+                    {
+                        "name": "NEARRTRICFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/NEARRTRICFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "NRCELLDU_USES_NRSECTORCARRIER",
                         "relationships": {
@@ -192,12 +318,60 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/NRSECTORCARRIER_USES_ANTENNACAPABILITY/relationships"
                         }
                     },
+                    {
+                        "name": "OCUCPFUNCTION_E1LINK_OCUUPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/OCUCPFUNCTION_E1LINK_OCUUPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "OCUCPFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/OCUCPFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "OCUCPFUNCTION_PROVIDES_NRCELLCU",
                         "relationships": {
                             "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/OCUCPFUNCTION_PROVIDES_NRCELLCU/relationships"
                         }
                     },
+                    {
+                        "name": "OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ODUFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_F1CLINK_OCUCPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ODUFUNCTION_F1CLINK_OCUCPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_F1ULINK_OCUUPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ODUFUNCTION_F1ULINK_OCUUPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ODUFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "ODUFUNCTION_PROVIDES_NRCELLDU",
                         "relationships": {
@@ -210,6 +384,42 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ODUFUNCTION_PROVIDES_NRSECTORCARRIER/relationships"
                         }
                     },
+                    {
+                        "name": "ORUFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ORUFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHCLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ORUFUNCTION_OFHCLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHMLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ORUFUNCTION_OFHMLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHMLINK_SMO",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ORUFUNCTION_OFHMLINK_SMO/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHSLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ORUFUNCTION_OFHSLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHULINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/REL_EQUIPMENT_RAN/relationship-types/ORUFUNCTION_OFHULINK_ODUFUNCTION/relationships"
+                        }
+                    },
                     {
                         "name": "SECTOR_GROUPS_ANTENNAMODULE",
                         "relationships": {
@@ -238,7 +448,7 @@ import org.springframework.cloud.contract.spec.Contract
                 "last": {
                     "href": "/domains/REL_EQUIPMENT_RAN/relationship-types?offset=0&limit=500"
                 },
-                "totalCount": 10
+                "totalCount": 25
             }''')
         }
     },
@@ -255,6 +465,12 @@ import org.springframework.cloud.contract.spec.Contract
             }
             body('''{
                 "items": [
+                    {
+                        "name": "NEARRTRICFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/NEARRTRICFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "NRCELLDU_USES_NRSECTORCARRIER",
                         "relationships": {
@@ -267,12 +483,60 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/RAN/relationship-types/NRSECTORCARRIER_USES_ANTENNACAPABILITY/relationships"
                         }
                     },
+                    {
+                        "name": "OCUCPFUNCTION_E1LINK_OCUUPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/OCUCPFUNCTION_E1LINK_OCUUPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "OCUCPFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/OCUCPFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "OCUCPFUNCTION_PROVIDES_NRCELLCU",
                         "relationships": {
                             "href": "/domains/RAN/relationship-types/OCUCPFUNCTION_PROVIDES_NRCELLCU/relationships"
                         }
                     },
+                    {
+                        "name": "OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ODUFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_F1CLINK_OCUCPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ODUFUNCTION_F1CLINK_OCUCPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_F1ULINK_OCUUPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ODUFUNCTION_F1ULINK_OCUUPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ODUFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "ODUFUNCTION_PROVIDES_NRCELLDU",
                         "relationships": {
@@ -285,6 +549,42 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/RAN/relationship-types/ODUFUNCTION_PROVIDES_NRSECTORCARRIER/relationships"
                         }
                     },
+                    {
+                        "name": "ORUFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ORUFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHCLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ORUFUNCTION_OFHCLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHMLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ORUFUNCTION_OFHMLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHMLINK_SMO",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ORUFUNCTION_OFHMLINK_SMO/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHSLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ORUFUNCTION_OFHSLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHULINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/RAN/relationship-types/ORUFUNCTION_OFHULINK_ODUFUNCTION/relationships"
+                        }
+                    },
                     {
                         "name": "SECTOR_GROUPS_NRCELLDU",
                         "relationships": {
@@ -307,7 +607,7 @@ import org.springframework.cloud.contract.spec.Contract
                 "last": {
                     "href": "/domains/RAN/relationship-types?offset=0&limit=500"
                 },
-                "totalCount": 6
+                "totalCount": 21
             }''')
         }
     },
@@ -414,6 +714,12 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/TEIV/relationship-types/MANAGEDELEMENT_MANAGES_ORUFUNCTION/relationships"
                         }
                     },
+                    {
+                        "name": "NEARRTRICFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/NEARRTRICFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE",
                         "relationships": {
@@ -421,15 +727,15 @@ import org.springframework.cloud.contract.spec.Contract
                         }
                     },
                     {
-                        "name": "NFDEPLOYMENT_SERVES_OCUCPFUNCTION",
+                        "name": "NFDEPLOYMENT_SERVES_MANAGEDELEMENT",
                         "relationships": {
-                            "href": "/domains/TEIV/relationship-types/NFDEPLOYMENT_SERVES_OCUCPFUNCTION/relationships"
+                            "href": "/domains/TEIV/relationship-types/NFDEPLOYMENT_SERVES_MANAGEDELEMENT/relationships"
                         }
                     },
                     {
-                        "name": "MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION",
+                        "name": "NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION",
                         "relationships": {
-                            "href": "/domains/TEIV/relationship-types/MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION/relationships"
+                            "href": "/domains/TEIV/relationship-types/NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION/relationships"
                         }
                     },
                     {
@@ -474,12 +780,60 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/TEIV/relationship-types/OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER/relationships"
                         }
                     },
+                    {
+                        "name": "OCUCPFUNCTION_E1LINK_OCUUPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/OCUCPFUNCTION_E1LINK_OCUUPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "OCUCPFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/OCUCPFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "OCUCPFUNCTION_PROVIDES_NRCELLCU",
                         "relationships": {
                             "href": "/domains/TEIV/relationship-types/OCUCPFUNCTION_PROVIDES_NRCELLCU/relationships"
                         }
                     },
+                    {
+                        "name": "OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_E2LINK_NEARRTRICFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ODUFUNCTION_E2LINK_NEARRTRICFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_F1CLINK_OCUCPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ODUFUNCTION_F1CLINK_OCUCPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_F1ULINK_OCUUPFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ODUFUNCTION_F1ULINK_OCUUPFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ODUFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ODUFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
                     {
                         "name": "ODUFUNCTION_PROVIDES_NRCELLDU",
                         "relationships": {
@@ -492,6 +846,42 @@ import org.springframework.cloud.contract.spec.Contract
                             "href": "/domains/TEIV/relationship-types/ODUFUNCTION_PROVIDES_NRSECTORCARRIER/relationships"
                         }
                     },
+                    {
+                        "name": "ORUFUNCTION_O1LINK_SMO",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ORUFUNCTION_O1LINK_SMO/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHCLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ORUFUNCTION_OFHCLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHMLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ORUFUNCTION_OFHMLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHMLINK_SMO",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ORUFUNCTION_OFHMLINK_SMO/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHSLINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ORUFUNCTION_OFHSLINK_ODUFUNCTION/relationships"
+                        }
+                    },
+                    {
+                        "name": "ORUFUNCTION_OFHULINK_ODUFUNCTION",
+                        "relationships": {
+                            "href": "/domains/TEIV/relationship-types/ORUFUNCTION_OFHULINK_ODUFUNCTION/relationships"
+                        }
+                    },
                     {
                         "name": "PHYSICALAPPLIANCE_INSTALLEDAT_SITE",
                         "relationships": {
@@ -550,7 +940,7 @@ import org.springframework.cloud.contract.spec.Contract
                 "last": {
                     "href": "/domains/TEIV/relationship-types?offset=0&limit=500"
                 },
-                "totalCount": 35
+                "totalCount": 50
             }''')
         }
     },
index 8f754b0..68418bd 100644 (file)
@@ -127,7 +127,7 @@ import org.springframework.cloud.contract.spec.Contract
                     {
                         "name": "o-ran-smo-teiv-ran",
                         "domain": "RAN",
-                        "revision": "2025-03-20",
+                        "revision": "2025-04-01",
                         "content": {
                             "href": "/schemas/o-ran-smo-teiv-ran/content"
                         }
@@ -463,7 +463,7 @@ import org.springframework.cloud.contract.spec.Contract
                     {
                         "name": "o-ran-smo-teiv-ran",
                         "domain": "RAN",
-                        "revision": "2025-03-20",
+                        "revision": "2025-04-01",
                         "content": {
                             "href": "/schemas/o-ran-smo-teiv-ran/content"
                         }
index eab4cc3..a12da27 100644 (file)
@@ -152,6 +152,15 @@ import org.springframework.cloud.contract.spec.Contract
             }
             body ('''{
                 "items": [
+                    {
+                        "o-ran-smo-teiv-rel-oam-ran:MANAGEDELEMENT_MANAGES_ODUFUNCTION": [
+                            {
+                                "bSide": "urn:3gpp:dn:SubNetwork=Europe,SubNetwork=Hungary,MeContext=1,ManagedElement=9,ODUFunction=9",
+                                "aSide": "urn:3gpp:dn:SubNetwork=Europe,SubNetwork=Hungary,MeContext=1,ManagedElement=9",
+                                "id": "urn:o-ran:smo:teiv:sha512:MANAGEDELEMENT_MANAGES_ODUFUNCTION=9243B48F7D6A6CF471226915C74CF5FE4BDA6FA3CF7D897473007B46DF7FC50230BD6B8B4256116A6AFBF4D822CF9379EB56DE9490C1C0B54238263F2574B426"
+                            }
+                        ]
+                    },
                     {
                         "o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRSECTORCARRIER": [
                             {
@@ -206,15 +215,6 @@ import org.springframework.cloud.contract.spec.Contract
                             }
                         ]
                     },
-                    {
-                        "o-ran-smo-teiv-rel-oam-ran:MANAGEDELEMENT_MANAGES_ODUFUNCTION": [
-                            {
-                                "bSide": "urn:3gpp:dn:SubNetwork=Europe,SubNetwork=Hungary,MeContext=1,ManagedElement=9,ODUFunction=9",
-                                "aSide": "urn:3gpp:dn:SubNetwork=Europe,SubNetwork=Hungary,MeContext=1,ManagedElement=9",
-                                "id": "urn:o-ran:smo:teiv:sha512:MANAGEDELEMENT_MANAGES_ODUFUNCTION=9243B48F7D6A6CF471226915C74CF5FE4BDA6FA3CF7D897473007B46DF7FC50230BD6B8B4256116A6AFBF4D822CF9379EB56DE9490C1C0B54238263F2574B426"
-                            }
-                        ]
-                    },
                     {
                         "o-ran-smo-teiv-rel-physical-ran:PHYSICALAPPLIANCE_SERVES_ODUFUNCTION": [
                             {
@@ -246,13 +246,13 @@ import org.springframework.cloud.contract.spec.Contract
                 jsonPath('$.items', byType {
                     occurrence(8)
                 })
-                jsonPath('$.items[0].o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRSECTORCARRIER[0].id', byEquality())
+                jsonPath('$.items[0].o-ran-smo-teiv-rel-oam-ran:MANAGEDELEMENT_MANAGES_ODUFUNCTION[0].id', byEquality())
                 jsonPath('$.items[1].o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRSECTORCARRIER[0].id', byEquality())
                 jsonPath('$.items[2].o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRSECTORCARRIER[0].id', byEquality())
-                jsonPath('$.items[3].o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRCELLDU[0].id', byEquality())
+                jsonPath('$.items[3].o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRSECTORCARRIER[0].id', byEquality())
                 jsonPath('$.items[4].o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRCELLDU[0].id', byEquality())
                 jsonPath('$.items[5].o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRCELLDU[0].id', byEquality())
-                jsonPath('$.items[6].o-ran-smo-teiv-rel-oam-ran:MANAGEDELEMENT_MANAGES_ODUFUNCTION[0].id', byEquality())
+                jsonPath('$.items[6].o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRCELLDU[0].id', byEquality())
                 jsonPath('$.items[7].o-ran-smo-teiv-rel-physical-ran:PHYSICALAPPLIANCE_SERVES_ODUFUNCTION[0].id', byEquality())
             }
         }
index 8ca5fd2..0ea942c 100644 (file)
@@ -612,7 +612,13 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                     jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                   jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                    jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                 jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                 jsonb,
+       "REL_FK_nearRTRICFunction-o1-linked-smo"                        TEXT,
+       "REL_ID_NEARRTRICFUNCTION_O1LINK_SMO"                   TEXT,
+       "REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO"                 jsonb,
+       "REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO"                        jsonb,
+       "REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO"                     jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -627,6 +633,12 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" (
        "id"                    TEXT,
        "gNBCUName"                     TEXT,
@@ -642,7 +654,25 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                 jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                       jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                        jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                     jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                     jsonb,
+       "REL_FK_ocucpFunction-e2-linked-ocuupFunction"                  TEXT,
+       "REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                     TEXT,
+       "REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                   jsonb,
+       "REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                 jsonb,
+       "REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                  jsonb,
+       "REL_metadata_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                       jsonb,
+       "REL_FK_ocucpFunction-e2-linked-nearRTRICFunction"                      TEXT,
+       "REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                 TEXT,
+       "REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                       jsonb,
+       "REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                      jsonb,
+       "REL_metadata_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                   jsonb,
+       "REL_FK_ocucpFunction-o1-linked-smo"                    TEXT,
+       "REL_ID_OCUCPFUNCTION_O1LINK_SMO"                       TEXT,
+       "REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO"                   jsonb,
+       "REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO"                    jsonb,
+       "REL_metadata_OCUCPFUNCTION_O1LINK_SMO"                 jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -657,6 +687,24 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" (
        "id"                    TEXT,
        "gNBId"                 BIGINT,
@@ -671,7 +719,13 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                 jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                       jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                        jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                     jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                     jsonb,
+       "REL_FK_ocuupFunction-e2-linked-nearRTRICFunction"                      TEXT,
+       "REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                 TEXT,
+       "REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                       jsonb,
+       "REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                      jsonb,
+       "REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                   jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -686,6 +740,12 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ODUFunction" (
        "id"                    TEXT,
        "dUpLMNId"                      jsonb,
@@ -701,7 +761,31 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ODUFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                   jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                 jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                  jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                       jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                       jsonb,
+       "REL_FK_oduFunction-e2-linked-nearRTRICFunction"                        TEXT,
+       "REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                   TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                 jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                       jsonb,
+       "REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                        jsonb,
+       "REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_FK_oduFunction-f1-c-linked-ocucpFunction"                  TEXT,
+       "REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                      TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                    jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                  jsonb,
+       "REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                   jsonb,
+       "REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                        jsonb,
+       "REL_FK_oduFunction-f1-u-linked-ocuupFunction"                  TEXT,
+       "REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                      TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                    jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                  jsonb,
+       "REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                   jsonb,
+       "REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                        jsonb,
+       "REL_FK_oduFunction-o1-linked-smo"                      TEXT,
+       "REL_ID_ODUFUNCTION_O1LINK_SMO"                 TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_decorators_ODUFUNCTION_O1LINK_SMO"                      jsonb,
+       "REL_metadata_ODUFUNCTION_O1LINK_SMO"                   jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -716,6 +800,30 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ORUFunction" (
        "id"                    TEXT,
        "oruId"                 BIGINT,
@@ -728,7 +836,43 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ORUFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                   jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                 jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                  jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                       jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                       jsonb,
+       "REL_FK_oruFunction-o1-linked-smo"                      TEXT,
+       "REL_ID_ORUFUNCTION_O1LINK_SMO"                 TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_decorators_ORUFUNCTION_O1LINK_SMO"                      jsonb,
+       "REL_metadata_ORUFUNCTION_O1LINK_SMO"                   jsonb,
+       "REL_FK_oruFunction-ofhc-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhm-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhm-linked-smo"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHMLINK_SMO"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHMLINK_SMO"                 jsonb,
+       "REL_FK_oruFunction-ofhs-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhu-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION"                 jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -743,6 +887,57 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_SMO" (
+       "id"                    TEXT,
+       "smoName"                       TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_Sector" (
        "id"                    TEXT,
        "azimuth"                       DECIMAL,
@@ -992,6 +1187,12 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "PK_o-ran-smo-teiv-ran_ORUFunction_id" PRIMARY KEY ("id");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_SMO',
+ 'PK_o-ran-smo-teiv-ran_SMO_id',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_SMO" ADD CONSTRAINT "PK_o-ran-smo-teiv-ran_SMO_id" PRIMARY KEY ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_Sector',
  'PK_o-ran-smo-teiv-ran_Sector_id',
@@ -1286,6 +1487,18 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "UNIQUE_E020461673334EB824643649B6B31670FB064EC8" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_NearRTRICFunction',
+ 'FK_38EF935E0C374C18F1865F231A3EA230FD743A91',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "FK_38EF935E0C374C18F1865F231A3EA230FD743A91" FOREIGN KEY ("REL_FK_nearRTRICFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_NearRTRICFunction',
+ 'UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0" UNIQUE ("REL_ID_NEARRTRICFUNCTION_O1LINK_SMO");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_OCUCPFunction',
  'FK_122DD9709032528D161177B3624AD7AAF6589005',
@@ -1298,6 +1511,42 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_2B7D3D49C1072E660047DE56843413CE628BF94A" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'FK_03B281BB0D7DB0CBC38DA02B76F4C5E8664040F0',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "FK_03B281BB0D7DB0CBC38DA02B76F4C5E8664040F0" FOREIGN KEY ("REL_FK_ocucpFunction-e2-linked-ocuupFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'UNIQUE_FB6281E267F316F3D288BFEF96319FFD5FF2E9CF',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_FB6281E267F316F3D288BFEF96319FFD5FF2E9CF" UNIQUE ("REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'FK_92C27CC7666DB694835211BBAB9639C4FECAA639',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "FK_92C27CC7666DB694835211BBAB9639C4FECAA639" FOREIGN KEY ("REL_FK_ocucpFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'UNIQUE_636E8949BC041514E4F592F7B65FC701773C6067',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_636E8949BC041514E4F592F7B65FC701773C6067" UNIQUE ("REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275" FOREIGN KEY ("REL_FK_ocucpFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B" UNIQUE ("REL_ID_OCUCPFUNCTION_O1LINK_SMO");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_OCUUPFunction',
  'FK_8062AF50E5EE5543FBCC68D66FDFF673E31E081D',
@@ -1310,6 +1559,18 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ADD CONSTRAINT "UNIQUE_DF85FE7809B5527CB4A6028DD1A599DBBD5AF214" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUUPFunction',
+ 'FK_E8131DF616156B9C91CA7C5A68AE261FA00A89BA',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ADD CONSTRAINT "FK_E8131DF616156B9C91CA7C5A68AE261FA00A89BA" FOREIGN KEY ("REL_FK_ocuupFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUUPFunction',
+ 'UNIQUE_90EB740B5632402F115555B7387BC0A218B9A19F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ADD CONSTRAINT "UNIQUE_90EB740B5632402F115555B7387BC0A218B9A19F" UNIQUE ("REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_ODUFunction',
  'FK_B6F0A4F9024FB47DA39C9A4F1DFFF78330222A80',
@@ -1322,6 +1583,54 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_D570291C9E28A2AF73387B7A8B0F4C70130EEDB4" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87" FOREIGN KEY ("REL_FK_oduFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9" UNIQUE ("REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE" FOREIGN KEY ("REL_FK_oduFunction-f1-c-linked-ocucpFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB" UNIQUE ("REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7" FOREIGN KEY ("REL_FK_oduFunction-f1-u-linked-ocuupFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5" UNIQUE ("REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F" FOREIGN KEY ("REL_FK_oduFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E" UNIQUE ("REL_ID_ODUFUNCTION_O1LINK_SMO");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_ORUFunction',
  'FK_B497A8C3DC2D647938E6DB4C7E691509DD8C90DE',
@@ -1334,6 +1643,78 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_4E6F008B82605A806EED04B2315A1FEE095A9241" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_DBE4275001B5740ED355F64F62F181489A4E398A',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_DBE4275001B5740ED355F64F62F181489A4E398A" FOREIGN KEY ("REL_FK_oruFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA" UNIQUE ("REL_ID_ORUFUNCTION_O1LINK_SMO");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333" FOREIGN KEY ("REL_FK_oruFunction-ofhc-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F" UNIQUE ("REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B" FOREIGN KEY ("REL_FK_oruFunction-ofhm-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F" UNIQUE ("REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA" FOREIGN KEY ("REL_FK_oruFunction-ofhm-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_9967840981340189977B88AA138C3773F21122C7',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_9967840981340189977B88AA138C3773F21122C7" UNIQUE ("REL_ID_ORUFUNCTION_OFHMLINK_SMO");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB" FOREIGN KEY ("REL_FK_oruFunction-ofhs-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A" UNIQUE ("REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266" FOREIGN KEY ("REL_FK_oruFunction-ofhu-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D" UNIQUE ("REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION',
  'FK_2B4B09AF7CC9C877B1140BB127B4CB4DA438195D',
@@ -1618,6 +1999,12 @@ CREATE INDEX IF NOT EXISTS "IDX_0ECC814A408874C9F8E73EEE3968984A6345A606" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_B10FD045A6C3E169953CCC38CC2D801FCE15A75F" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_6B3AF742DAE59FE0E798E67C7E2417783464FD8D" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN (("REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F2F838B3DBDF4E0EFC3FC2096F7549740976B346" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN (("REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_218EB3FA277F4E7F72EC345841246A5BB3402E28" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN ("REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO");
+
 CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("pLMNId");
 
 CREATE INDEX IF NOT EXISTS "IDX_84A29F8571860AC5A7BD1A99923485ECB6A3939D" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
@@ -1632,6 +2019,24 @@ CREATE INDEX IF NOT EXISTS "IDX_21F2560C8330A795E8AFB54C6D31CDCF6CCD3070" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_D856E84F300B6711E81931AE1CBC8AD905FA384F" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_13597F9B767DD22A86305D13FF5B050BFE06B14D" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_4D7E42AC9DF388919712322B7C0169A370E56ADF" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_7F7A8AE3E6B3F57A5D1273A1243A79CABA4753C0" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_48341F480087D5BD4C2A19DCA0083184B7178A43" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_090E0962B4064F2ECF7C3256325BF2A30BCE85B8" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_C470E73FA66AEA37FBC2C25AEFB2B959BEA0FBB2" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_2F4FCB18A717B38224F5BAA484D2EFE26A458CC7" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_D9ADFBBC5360F5D511E0E67A0D13622A4BBD78E1" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_FC018070572BA39A4683CBDDCAAA16D3A9129DB8" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO");
+
 CREATE INDEX IF NOT EXISTS "IDX_9122DAA7A60DB585BE5ECA68A2EDB9ABF1E7156A" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("pLMNIdList"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_6C81B2BBFCFE94C87598869A2099E04571202BA7" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
@@ -1646,6 +2051,12 @@ CREATE INDEX IF NOT EXISTS "IDX_3346DFB8C2B7D6EEA12B7C1DE4A84B058C24A657" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_ADD3393C27589066C4993A3491436C6FB57A539F" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_7B8C47A1FD2FCA75DED85825317147EE0831A1C7" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_5E92F3864ACD360810BD006484337B25B5C64004" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_CEFE5F65D4553C67E4494FCDE9E0E44549171577" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN ("REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
 CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("dUpLMNId");
 
 CREATE INDEX IF NOT EXISTS "IDX_73790DA8FF6365B752DC8B399893AC6DE8CF26C4" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
@@ -1660,6 +2071,30 @@ CREATE INDEX IF NOT EXISTS "IDX_5DD192861541E0EB2776C6BFE34B327FF27F93C3" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_0B9AC962B1E07740CE43D912B5FBC54E0B39DD24" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_5F2DC68F0CE9A176F79C9DEF6752556C38C7A8DF" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_AFD9E48ECC8E81DCD5F3A10199B7936A894D75F1" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_714284D19884BC9E2A594B6B5010D429E12F5AE7" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_4C7915C1CD9395FE91ED0474B1235393063920BA" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F784968DE38F941EB1D9E2845576B5F93ED1E18B" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_9A1D505BA4542318211ECF2569A0CEA390AAB52D" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_0C48537C4C2C125C6B188375EC62CBA0984B3D8B" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_91CC0F89EAA44A400D822FCFDC9AB8AE0285499C" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_090DF573B5D8AFDA2478C3B4BA551FEC2CD48585" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_F8F72994228550E6DA79A2E336AFF745CF5B13A8" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_166E643CA7B58B57DC9CA292E233C033DA771649" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_0A7B8671FF4C6943209D81A0351DE1CAEFB55629" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_O1LINK_SMO");
+
 CREATE INDEX IF NOT EXISTS "IDX_D0D11CFAA917F4FA12748A041A34D2B39A3AD707" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_2A5AAAD13FDCFF7F2958005C22937366F6604A0D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1672,6 +2107,48 @@ CREATE INDEX IF NOT EXISTS "IDX_DA79A3F946C1F4E8D05B4D6ADEF5E4C65E47635E" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_7B916E1753D2860DF434831CF1E9697ED9973C8F" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_C650BB0BAF5EF02FB2A7CBF9D89379DB446443F3" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_583EAFCC8FB5174AB69184076C2EC75E85F44402" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_DE327F0FC00996B5856EE87C424E2E70C39475CA" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_O1LINK_SMO");
+
+CREATE INDEX IF NOT EXISTS "IDX_DEC190D478DCFE7B4974DFE067136180DC4F98D2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_913D348FC7569F1B3054A7F11583A8E826C44C4D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_2C350ECD1561367CFE3C6ECE240110B0CFBE691E" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_70B09AD99FFFEC82C50E21709F65D759CD306CC2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_10F981F841A1BEAC998725703500D2AAFF92C615" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_091099E01E22A69CF5FBD13F6BE31A590A12DFEB" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_8D607F7CBEE96E7D2F0D0E2399E1DF2D4A4D2DE1" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_C5EF805B2EF19761349A03D3CD3CF6C12818C98B" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_0F1592A3DE78629D65D3FED257905832BF2C42EA" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO");
+
+CREATE INDEX IF NOT EXISTS "IDX_1EF8E086BAB9488EA6AD191B6082977A76CD2BD9" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_2E9527C8D166D7A31FE2F2B26EEED8202FC33B14" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_21586E874FC18901720393534E189FB50B0825AC" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_544CBFFD146034E3AA9C2EAF6B8770C8CF8740DF" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_7B224280C4E1CD6248628CAF23CB06FE50AA838D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F3DE945424D3435D889B06D0080CFC8C26F76CF2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_F34E4B2CD5D3DEC7271D5FA89AFC34BCF424D636" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_E528335C63DF74D690BADBF0ED2134E2BE5EC147" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN ("CD_decorators");
+
 CREATE INDEX IF NOT EXISTS "IDX_E234B43A7CD7843672F08F2197AB46A2A50BECB0" ON teiv_data."o-ran-smo-teiv-ran_Sector" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_19C19556F9714850389595E0A16218FA229205FE" ON teiv_data."o-ran-smo-teiv-ran_Sector" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1730,6 +2207,8 @@ ANALYZE teiv_data."o-ran-smo-teiv-ran_NRCellDU";
 
 ANALYZE teiv_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU";
 
+ANALYZE teiv_data."o-ran-smo-teiv-ran_SMO";
+
 ANALYZE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction";
 
 ANALYZE teiv_data."o-ran-smo-teiv-cloud_CloudifiedNF";
index 352976a..f184dd8 100644 (file)
@@ -98,10 +98,25 @@ FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_provided-by-oduFunction        FK_9B73B9E2
 FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-antennaCapability    FK_65D538D54EB33081C808540235FEB28823428E64     CONSTRAINT
 FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-by-nrCellDu  FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-by-nrCellDu   CONSTRAINT
 FK_o-ran-smo-teiv-ran_NearRTRICFunction_REL_FK_managed-by-managedElement       FK_32BDE0334EA6AD74ABB3958A2B163F63A3F05203     CONSTRAINT
+FK_o-ran-smo-teiv-ran_NearRTRICFunction_REL_FK_nearRTRICFunction-o1-linked-smo FK_38EF935E0C374C18F1865F231A3EA230FD743A91     CONSTRAINT
 FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_managed-by-managedElement   FK_122DD9709032528D161177B3624AD7AAF6589005     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_ocucpFunction-e2-linked-nearRTRICFunction   FK_92C27CC7666DB694835211BBAB9639C4FECAA639     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_ocucpFunction-e2-linked-ocuupFunction       FK_03B281BB0D7DB0CBC38DA02B76F4C5E8664040F0     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_ocucpFunction-o1-linked-smo FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275     CONSTRAINT
 FK_o-ran-smo-teiv-ran_OCUUPFunction_REL_FK_managed-by-managedElement   FK_8062AF50E5EE5543FBCC68D66FDFF673E31E081D     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUUPFunction_REL_FK_ocuupFunction-e2-linked-nearRTRICFunction   FK_E8131DF616156B9C91CA7C5A68AE261FA00A89BA     CONSTRAINT
 FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_managed-by-managedElement     FK_B6F0A4F9024FB47DA39C9A4F1DFFF78330222A80     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-e2-linked-nearRTRICFunction       FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-f1-c-linked-ocucpFunction FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-f1-u-linked-ocuupFunction FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-o1-linked-smo     FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F     CONSTRAINT
 FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_managed-by-managedElement     FK_B497A8C3DC2D647938E6DB4C7E691509DD8C90DE     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-o1-linked-smo     FK_DBE4275001B5740ED355F64F62F181489A4E398A     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhc-linked-oduFunction   FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhm-linked-oduFunction   FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhm-linked-smo   FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhs-linked-oduFunction   FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhu-linked-oduFunction   FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_aSide_NFDeployment       FK_BE847E738902EA979AC709D5A3D0CCD3FD8911CA     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_bSide_NearRTRICFunction  FK_CCC0DEA6E4ABAB8614332070E83D953254D5A3A5     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_aSide_NFDeployment   FK_2B4B09AF7CC9C877B1140BB127B4CB4DA438195D     CONSTRAINT
@@ -187,24 +202,56 @@ IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_sour
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_CD_classifiers  IDX_8BCCF388DFC8652AD5CD0675C64F49D2D2EDC7A1    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_CD_sourceIds    IDX_E4E40B26C322AF63A662706AF8B0B36E1043B793    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION     IDX_0ECC814A408874C9F8E73EEE3968984A6345A606    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO IDX_F2F838B3DBDF4E0EFC3FC2096F7549740976B346    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION       IDX_B608D8F6B8A79097EA61A1B4777A96CD3D2D1E98    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO   IDX_6B3AF742DAE59FE0E798E67C7E2417783464FD8D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_CD_classifiers      IDX_8D9862DBF6A721FABAEA4204E04B374692C1C5B8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_CD_sourceIds        IDX_84A29F8571860AC5A7BD1A99923485ECB6A3939D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION     IDX_21F2560C8330A795E8AFB54C6D31CDCF6CCD3070    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION       IDX_4D7E42AC9DF388919712322B7C0169A370E56ADF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION   IDX_090E0962B4064F2ECF7C3256325BF2A30BCE85B8    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO IDX_D9ADFBBC5360F5D511E0E67A0D13622A4BBD78E1    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION       IDX_4C6B5CB5CF018656DC8191CE6FE3B9DA2CD0C819    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION IDX_13597F9B767DD22A86305D13FF5B050BFE06B14D    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION     IDX_48341F480087D5BD4C2A19DCA0083184B7178A43    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO   IDX_2F4FCB18A717B38224F5BAA484D2EFE26A458CC7    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_CD_classifiers      IDX_25E4BCFBF8F5344DFC60BCB159FA873FFC8109E9    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_CD_sourceIds        IDX_6C81B2BBFCFE94C87598869A2099E04571202BA7    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION     IDX_3346DFB8C2B7D6EEA12B7C1DE4A84B058C24A657    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION   IDX_5E92F3864ACD360810BD006484337B25B5C64004    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION       IDX_50209F1FF59B49F79FF194887B631994F2B5148A    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION     IDX_7B8C47A1FD2FCA75DED85825317147EE0831A1C7    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_pLMNIdList  IDX_9122DAA7A60DB585BE5ECA68A2EDB9ABF1E7156A    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_CD_classifiers        IDX_5CE9EDE1F25AB2D880A41BC5D297FDBE668182E8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_CD_sourceIds  IDX_73790DA8FF6365B752DC8B399893AC6DE8CF26C4    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION IDX_5DD192861541E0EB2776C6BFE34B327FF27F93C3    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION       IDX_AFD9E48ECC8E81DCD5F3A10199B7936A894D75F1    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION  IDX_F784968DE38F941EB1D9E2845576B5F93ED1E18B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION  IDX_91CC0F89EAA44A400D822FCFDC9AB8AE0285499C    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO     IDX_166E643CA7B58B57DC9CA292E233C033DA771649    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION   IDX_0E5C91A3252FBAFA72DB644D4E949A379F0CB910    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION IDX_5F2DC68F0CE9A176F79C9DEF6752556C38C7A8DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    IDX_4C7915C1CD9395FE91ED0474B1235393063920BA    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    IDX_0C48537C4C2C125C6B188375EC62CBA0984B3D8B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO       IDX_F8F72994228550E6DA79A2E336AFF745CF5B13A8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_CD_classifiers        IDX_2A5AAAD13FDCFF7F2958005C22937366F6604A0D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_CD_sourceIds  IDX_D0D11CFAA917F4FA12748A041A34D2B39A3AD707    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION IDX_DA79A3F946C1F4E8D05B4D6ADEF5E4C65E47635E    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO     IDX_583EAFCC8FB5174AB69184076C2EC75E85F44402    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION   IDX_913D348FC7569F1B3054A7F11583A8E826C44C4D    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION   IDX_10F981F841A1BEAC998725703500D2AAFF92C615    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO   IDX_C5EF805B2EF19761349A03D3CD3CF6C12818C98B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION   IDX_2E9527C8D166D7A31FE2F2B26EEED8202FC33B14    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION   IDX_7B224280C4E1CD6248628CAF23CB06FE50AA838D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION   IDX_AF235FB2C9CCA99D94CC4038669EDD1BB6C7B2DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO       IDX_C650BB0BAF5EF02FB2A7CBF9D89379DB446443F3    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION     IDX_DEC190D478DCFE7B4974DFE067136180DC4F98D2    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION     IDX_70B09AD99FFFEC82C50E21709F65D759CD306CC2    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO     IDX_8D607F7CBEE96E7D2F0D0E2399E1DF2D4A4D2DE1    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION     IDX_1EF8E086BAB9488EA6AD191B6082977A76CD2BD9    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION     IDX_544CBFFD146034E3AA9C2EAF6B8770C8CF8740DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_SMO_CD_classifiers        IDX_E528335C63DF74D690BADBF0ED2134E2BE5EC147    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_SMO_CD_sourceIds  IDX_F34E4B2CD5D3DEC7271D5FA89AFC34BCF424D636    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_Sector_CD_classifiers     IDX_19C19556F9714850389595E0A16218FA229205FE    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_Sector_CD_sourceIds       IDX_E234B43A7CD7843672F08F2197AB46A2A50BECB0    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_CD_classifiers    IDX_F52FEEDBAF1B04D2D22EBAE051BB5125DF6A6968    INDEX
@@ -260,17 +307,33 @@ IDX_GIN_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_decorators_NRSECTORCARRIER_USE
 IDX_GIN_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER      IDX_5AB1D780E57D940C42BAD29772E9E2B6C63498A0    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_CD_decorators     IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_CD_decorators      INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION        IDX_B10FD045A6C3E169953CCC38CC2D801FCE15A75F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO    IDX_218EB3FA277F4E7F72EC345841246A5BB3402E28    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_pLMNId    IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_pLMNId     INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_CD_decorators  INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION        IDX_D856E84F300B6711E81931AE1CBC8AD905FA384F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION  IDX_7F7A8AE3E6B3F57A5D1273A1243A79CABA4753C0    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION      IDX_C470E73FA66AEA37FBC2C25AEFB2B959BEA0FBB2    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO    IDX_FC018070572BA39A4683CBDDCAAA16D3A9129DB8    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId        IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_CD_decorators  INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION        IDX_ADD3393C27589066C4993A3491436C6FB57A539F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION      IDX_CEFE5F65D4553C67E4494FCDE9E0E44549171577    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION    IDX_0B9AC962B1E07740CE43D912B5FBC54E0B39DD24    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  IDX_714284D19884BC9E2A594B6B5010D429E12F5AE7    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     IDX_9A1D505BA4542318211ECF2569A0CEA390AAB52D    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     IDX_090DF573B5D8AFDA2478C3B4BA551FEC2CD48585    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_O1LINK_SMO        IDX_0A7B8671FF4C6943209D81A0351DE1CAEFB55629    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId        IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION    IDX_7B916E1753D2860DF434831CF1E9697ED9973C8F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_O1LINK_SMO        IDX_DE327F0FC00996B5856EE87C424E2E70C39475CA    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION      IDX_2C350ECD1561367CFE3C6ECE240110B0CFBE691E    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION      IDX_091099E01E22A69CF5FBD13F6BE31A590A12DFEB    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO      IDX_0F1592A3DE78629D65D3FED257905832BF2C42EA    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION      IDX_21586E874FC18901720393534E189FB50B0825AC    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION      IDX_F3DE945424D3435D889B06D0080CFC8C26F76CF2    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators        IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators INDEX
 IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_CD_decorators       IDX_D333FA5882890B7CD3599712FFFB2641B9E04C80    INDEX
 IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_CD_decorators   IDX_0867A1E865A904F4BB513948DAEB60412BE67DF3    INDEX
@@ -304,6 +367,7 @@ PK_o-ran-smo-teiv-ran_OCUCPFunction_id      PK_o-ran-smo-teiv-ran_OCUCPFunction_id  CO
 PK_o-ran-smo-teiv-ran_OCUUPFunction_id PK_o-ran-smo-teiv-ran_OCUUPFunction_id  CONSTRAINT
 PK_o-ran-smo-teiv-ran_ODUFunction_id   PK_o-ran-smo-teiv-ran_ODUFunction_id    CONSTRAINT
 PK_o-ran-smo-teiv-ran_ORUFunction_id   PK_o-ran-smo-teiv-ran_ORUFunction_id    CONSTRAINT
+PK_o-ran-smo-teiv-ran_SMO_id   PK_o-ran-smo-teiv-ran_SMO_id    CONSTRAINT
 PK_o-ran-smo-teiv-ran_Sector_id        PK_o-ran-smo-teiv-ran_Sector_id CONSTRAINT
 PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_id       PK_82A1C5618438FF6DF7CDD48FD71E0A584E6D052A     CONSTRAINT
 PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_id   PK_2D854968CB74C42C534D8E7C2A53E93F6B7F001F     CONSTRAINT
@@ -323,13 +387,28 @@ REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION   REL_CD_classifiers_MANAG
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION        REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION  REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION   COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION  REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION   COLUMN
+REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO        REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO COLUMN
 REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT  REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT   COLUMN
 REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER       REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER        COLUMN
 REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY      REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY       COLUMN
 REL_CD_classifiers_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER     REL_CD_classifiers_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER      COLUMN
+REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION  REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION   COLUMN
+REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO    REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO     COLUMN
 REL_CD_classifiers_OCUCPFUNCTION_PROVIDES_NRCELLCU     REL_CD_classifiers_OCUCPFUNCTION_PROVIDES_NRCELLCU      COLUMN
+REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION        REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION COLUMN
+REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION   REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    COLUMN
+REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION   REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    COLUMN
+REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO      REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO       COLUMN
 REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRCELLDU       REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRCELLDU        COLUMN
 REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRSECTORCARRIER        REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRSECTORCARRIER COLUMN
+REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO      REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO       COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO    REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION     COLUMN
 REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE  COLUMN
 REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU      REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU       COLUMN
 REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE      REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE       COLUMN
@@ -340,13 +419,28 @@ REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION    REL_CD_decorators_MANAGED
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION  COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION   REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION    COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION   REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION    COLUMN
+REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO  COLUMN
 REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT   REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT    COLUMN
 REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER        REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER COLUMN
 REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY       REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY        COLUMN
 REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER      REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER       COLUMN
+REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION   REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION    COLUMN
+REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION       REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION        COLUMN
+REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO     REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO      COLUMN
 REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU      REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU       COLUMN
+REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION       REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION        COLUMN
+REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  COLUMN
+REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     COLUMN
+REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     COLUMN
+REL_CD_decorators_ODUFUNCTION_O1LINK_SMO       REL_CD_decorators_ODUFUNCTION_O1LINK_SMO        COLUMN
 REL_CD_decorators_ODUFUNCTION_PROVIDES_NRCELLDU        REL_CD_decorators_ODUFUNCTION_PROVIDES_NRCELLDU COLUMN
 REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  COLUMN
+REL_CD_decorators_ORUFUNCTION_O1LINK_SMO       REL_CD_decorators_ORUFUNCTION_O1LINK_SMO        COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO     REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION      COLUMN
 REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE  REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE   COLUMN
 REL_CD_decorators_SECTOR_GROUPS_NRCELLDU       REL_CD_decorators_SECTOR_GROUPS_NRCELLDU        COLUMN
 REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE       REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE        COLUMN
@@ -357,13 +451,28 @@ REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION     REL_CD_sourceIds_MANAGEDEL
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION  REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION   COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION    REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION     COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION    REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION     COLUMN
+REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO  REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO   COLUMN
 REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT    REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT     COLUMN
 REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER  COLUMN
 REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY        REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY COLUMN
 REL_CD_sourceIds_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER       REL_CD_sourceIds_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER        COLUMN
+REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION    REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION     COLUMN
+REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION        REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION COLUMN
+REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO      REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO       COLUMN
 REL_CD_sourceIds_OCUCPFUNCTION_PROVIDES_NRCELLCU       REL_CD_sourceIds_OCUCPFUNCTION_PROVIDES_NRCELLCU        COLUMN
+REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION        REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION COLUMN
+REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION   COLUMN
+REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION      COLUMN
+REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION      COLUMN
+REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO        REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO COLUMN
 REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRCELLDU REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRCELLDU  COLUMN
 REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRSECTORCARRIER   COLUMN
+REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO        REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO      REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION       COLUMN
 REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE   REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE    COLUMN
 REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU        REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU COLUMN
 REL_FK_comprised-by-cloudifiedNF       REL_FK_comprised-by-cloudifiedNF        COLUMN
@@ -372,6 +481,21 @@ REL_FK_deployed-on-nodeCluster     REL_FK_deployed-on-nodeCluster  COLUMN
 REL_FK_grouped-by-sector       REL_FK_grouped-by-sector        COLUMN
 REL_FK_installed-at-site       REL_FK_installed-at-site        COLUMN
 REL_FK_managed-by-managedElement       REL_FK_managed-by-managedElement        COLUMN
+REL_FK_nearRTRICFunction-o1-linked-smo REL_FK_nearRTRICFunction-o1-linked-smo  COLUMN
+REL_FK_ocucpFunction-e2-linked-nearRTRICFunction       REL_FK_ocucpFunction-e2-linked-nearRTRICFunction        COLUMN
+REL_FK_ocucpFunction-e2-linked-ocuupFunction   REL_FK_ocucpFunction-e2-linked-ocuupFunction    COLUMN
+REL_FK_ocucpFunction-o1-linked-smo     REL_FK_ocucpFunction-o1-linked-smo      COLUMN
+REL_FK_ocuupFunction-e2-linked-nearRTRICFunction       REL_FK_ocuupFunction-e2-linked-nearRTRICFunction        COLUMN
+REL_FK_oduFunction-e2-linked-nearRTRICFunction REL_FK_oduFunction-e2-linked-nearRTRICFunction  COLUMN
+REL_FK_oduFunction-f1-c-linked-ocucpFunction   REL_FK_oduFunction-f1-c-linked-ocucpFunction    COLUMN
+REL_FK_oduFunction-f1-u-linked-ocuupFunction   REL_FK_oduFunction-f1-u-linked-ocuupFunction    COLUMN
+REL_FK_oduFunction-o1-linked-smo       REL_FK_oduFunction-o1-linked-smo        COLUMN
+REL_FK_oruFunction-o1-linked-smo       REL_FK_oruFunction-o1-linked-smo        COLUMN
+REL_FK_oruFunction-ofhc-linked-oduFunction     REL_FK_oruFunction-ofhc-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhm-linked-oduFunction     REL_FK_oruFunction-ofhm-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhm-linked-smo     REL_FK_oruFunction-ofhm-linked-smo      COLUMN
+REL_FK_oruFunction-ofhs-linked-oduFunction     REL_FK_oruFunction-ofhs-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhu-linked-oduFunction     REL_FK_oruFunction-ofhu-linked-oduFunction      COLUMN
 REL_FK_provided-by-ocucpFunction       REL_FK_provided-by-ocucpFunction        COLUMN
 REL_FK_provided-by-oduFunction REL_FK_provided-by-oduFunction  COLUMN
 REL_FK_serviced-managedElement REL_FK_serviced-managedElement  COLUMN
@@ -385,13 +509,28 @@ REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION       REL_ID_MANAGEDELEMENT_MANAGES_OCUCPF
 REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION    REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION     COLUMN
 REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION      REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION       COLUMN
 REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION      REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION       COLUMN
+REL_ID_NEARRTRICFUNCTION_O1LINK_SMO    REL_ID_NEARRTRICFUNCTION_O1LINK_SMO     COLUMN
 REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT      REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT       COLUMN
 REL_ID_NRCELLDU_USES_NRSECTORCARRIER   REL_ID_NRCELLDU_USES_NRSECTORCARRIER    COLUMN
 REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY  REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY   COLUMN
 REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER  COLUMN
+REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION      REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION       COLUMN
+REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION  REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION   COLUMN
+REL_ID_OCUCPFUNCTION_O1LINK_SMO        REL_ID_OCUCPFUNCTION_O1LINK_SMO COLUMN
 REL_ID_OCUCPFUNCTION_PROVIDES_NRCELLCU REL_ID_OCUCPFUNCTION_PROVIDES_NRCELLCU  COLUMN
+REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION  REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION   COLUMN
+REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION    REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION     COLUMN
+REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION       REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION        COLUMN
+REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION       REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION        COLUMN
+REL_ID_ODUFUNCTION_O1LINK_SMO  REL_ID_ODUFUNCTION_O1LINK_SMO   COLUMN
 REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU   REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU    COLUMN
 REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER    REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER     COLUMN
+REL_ID_ORUFUNCTION_O1LINK_SMO  REL_ID_ORUFUNCTION_O1LINK_SMO   COLUMN
+REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHMLINK_SMO        REL_ID_ORUFUNCTION_OFHMLINK_SMO COLUMN
+REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION COLUMN
 REL_ID_SECTOR_GROUPS_ANTENNAMODULE     REL_ID_SECTOR_GROUPS_ANTENNAMODULE      COLUMN
 REL_ID_SECTOR_GROUPS_NRCELLDU  REL_ID_SECTOR_GROUPS_NRCELLDU   COLUMN
 REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE   REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE    COLUMN
@@ -402,13 +541,28 @@ REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION REL_metadata_MANAGEDELEMENT_MA
 REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION      REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION       COLUMN
 REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION        REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION COLUMN
 REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION        REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION COLUMN
+REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO      REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO       COLUMN
 REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT        REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT COLUMN
 REL_metadata_NRCELLDU_USES_NRSECTORCARRIER     REL_metadata_NRCELLDU_USES_NRSECTORCARRIER      COLUMN
 REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY    REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY     COLUMN
 REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER   REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER    COLUMN
+REL_metadata_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION        REL_metadata_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION COLUMN
+REL_metadata_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION    REL_metadata_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION     COLUMN
+REL_metadata_OCUCPFUNCTION_O1LINK_SMO  REL_metadata_OCUCPFUNCTION_O1LINK_SMO   COLUMN
 REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU   REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU    COLUMN
+REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION    REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION     COLUMN
+REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION  COLUMN
+REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION  COLUMN
+REL_metadata_ODUFUNCTION_O1LINK_SMO    REL_metadata_ODUFUNCTION_O1LINK_SMO     COLUMN
 REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU     REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU      COLUMN
 REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER      REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER       COLUMN
+REL_metadata_ORUFUNCTION_O1LINK_SMO    REL_metadata_ORUFUNCTION_O1LINK_SMO     COLUMN
+REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHMLINK_SMO  REL_metadata_ORUFUNCTION_OFHMLINK_SMO   COLUMN
+REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION   COLUMN
 REL_metadata_SECTOR_GROUPS_ANTENNAMODULE       REL_metadata_SECTOR_GROUPS_ANTENNAMODULE        COLUMN
 REL_metadata_SECTOR_GROUPS_NRCELLDU    REL_metadata_SECTOR_GROUPS_NRCELLDU     COLUMN
 UNIQUE_o-ran-smo-teiv-cloud_NFDeployment_REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT    UNIQUE_A5A8418B6BE911F281E6E2AA640D7D9F777471DC CONSTRAINT
@@ -424,10 +578,25 @@ UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER    U
 UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY        UNIQUE_A799EC9DA6624651081E1DA21B5F0C2D38F6A192 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  UNIQUE_D5D35955594A6EB48640425529F7DE44BED00B62 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_NearRTRICFunction_REL_ID_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION    UNIQUE_E020461673334EB824643649B6B31670FB064EC8 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_NearRTRICFunction_REL_ID_NEARRTRICFUNCTION_O1LINK_SMO        UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION    UNIQUE_2B7D3D49C1072E660047DE56843413CE628BF94A CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION      UNIQUE_FB6281E267F316F3D288BFEF96319FFD5FF2E9CF CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION  UNIQUE_636E8949BC041514E4F592F7B65FC701773C6067 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_OCUCPFUNCTION_O1LINK_SMO        UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_OCUUPFunction_REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION    UNIQUE_DF85FE7809B5527CB4A6028DD1A599DBBD5AF214 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUUPFunction_REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION  UNIQUE_90EB740B5632402F115555B7387BC0A218B9A19F CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION        UNIQUE_D570291C9E28A2AF73387B7A8B0F4C70130EEDB4 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION      UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_O1LINK_SMO    UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION        UNIQUE_4E6F008B82605A806EED04B2315A1FEE095A9241 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_O1LINK_SMO    UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION  UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION  UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHMLINK_SMO  UNIQUE_9967840981340189977B88AA138C3773F21122C7 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION  UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION  UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D CONSTRAINT
 aSide_AntennaModule    aSide_AntennaModule     COLUMN
 aSide_NFDeployment     aSide_NFDeployment      COLUMN
 aSide_NodeCluster      aSide_NodeCluster       COLUMN
@@ -493,6 +662,7 @@ o-ran-smo-teiv-ran_OCUCPFunction    o-ran-smo-teiv-ran_OCUCPFunction        TABLE
 o-ran-smo-teiv-ran_OCUUPFunction       o-ran-smo-teiv-ran_OCUUPFunction        TABLE
 o-ran-smo-teiv-ran_ODUFunction o-ran-smo-teiv-ran_ODUFunction  TABLE
 o-ran-smo-teiv-ran_ORUFunction o-ran-smo-teiv-ran_ORUFunction  TABLE
+o-ran-smo-teiv-ran_SMO o-ran-smo-teiv-ran_SMO  TABLE
 o-ran-smo-teiv-ran_Sector      o-ran-smo-teiv-ran_Sector       TABLE
 o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION     3C2E2CE7BDF8321BC824B6318B190690F58DBB82        TABLE
 o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION  TABLE
@@ -512,6 +682,7 @@ positionWithinSector        positionWithinSector    COLUMN
 sectorId       sectorId        COLUMN
 siteLocation   siteLocation    COLUMN
 siteName       siteName        COLUMN
+smoName        smoName COLUMN
 totalTilt      totalTilt       COLUMN
 vendorName     vendorName      COLUMN
 verticalBeamWidth      verticalBeamWidth       COLUMN
@@ -529,7 +700,7 @@ o-ran-smo-teiv-common-yang-types    urn:o-ran:smo-teiv-common-yang-types    \N      []      2025
 o-ran-smo-teiv-equipment       urn:o-ran:smo-teiv-equipment    EQUIPMENT       []      2024-10-21      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gRXF1aXBtZW50IGRvbWFpbiwgd2hpY2ggaXMgbW9kZWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwKICAgIGxvY2F0aW9uIG9mIGVxdWlwbWVudCBzdWNoIGFzIGFudGVubmFzIGFzc29jaWF0ZWQgd2l0aCBhIGNlbGwvY2FycmllcgogICAgYW5kIHRoZWlyIHJlbGV2YW50IHByb3BlcnRpZXMgZS5nLiB0aWx0LCBtYXggcG93ZXIgZXRjLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMjEiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiRGVwcmVjYXRlIEFudGVubmFNb2R1bGUgYXR0cmlidXRlIGFudGVubmFCZWFtV2lkdGguCiAgICAgICAgVG8gYmUgcmVwbGFjZWQgYnkgaG9yaXpvbnRhbEJlYW1XaWR0aCBhbmQgdmVydGljYWxCZWFtV2lkdGguIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC42LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDgiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgYXppbXV0aCBhdHRyaWJ1dGUgZm9yIEFudGVubmFNb2R1bGUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmdzLCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIG9yIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAKICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB0b3BvbG9neSBvYmplY3RzLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBFUVVJUE1FTlQ7CgogICAgbGlzdCBBbnRlbm5hTW9kdWxlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQW4gQW50ZW5uYSBNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYXNwZWN0IG9mIGFuCiAgICAgICAgYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwgaWRlbnRpZmllci4gVGhpcwogICAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubwogICAgICAgICAgICAgICAgb3BlcmF0aW9uYWwgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBtZWNoYW5pY2FsQW50ZW5uYUJlYXJpbmcgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgYmVhcmluZyBvbiBhbnRlbm5hIHN1YnVuaXQgd2hlcmUgYW50ZW5uYQogICAgICAgICAgICAgICAgdW5pdCBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZml4ZWQgYW50ZW5uYSB0aWx0IG9mIHRoZSBpbnN0YWxsYXRpb24sIGRlZmluZWQKICAgICAgICAgICAgICAgIGFzIHRoZSBpbmNsaW5hdGlvbiBvZiB0aGUgYW50ZW5uYSBlbGVtZW50IHJlc3BlY3QgdG8gdGhlCiAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBwbGFuZS4gSXQgaXMgYSBzaWduZWQgdmFsdWUuIFBvc2l0aXZlIGluZGljYXRlcwogICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHBvc2l0aW9uV2l0aGluU2VjdG9yIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIHVuaXQgcG9zaXRpb24gd2l0aGluIHNlY3Rvci4gVGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubyBvcGVyYXRpb25hbAogICAgICAgICAgICAgICAgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiB0b3RhbFRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRvdGFsIGFudGVubmEgZWxldmF0aW9uIGluY2x1ZGluZyB0aGUgaW5zdGFsbGVkCiAgICAgICAgICAgICAgICB0aWx0IGFuZCB0aGUgdGlsdCBhcHBsaWVkIGJ5IHRoZSBSZW1vdGUgRWxlY3RyaWNhbAogICAgICAgICAgICAgICAgVGlsdCAoUkVUKS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlbGVjdHJpY2FsQW50ZW5uYVRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVsZWN0cmljYWxseS1jb250cm9sbGVkIHRpbHQgb2YgbWFpbiBiZWFtIG1heGltdW0KICAgICAgICAgICAgICAgIHdpdGggcmVzcGVjdCB0byBkaXJlY3Rpb24gb3J0aG9nb25hbCB0byBhbnRlbm5hIGVsZW1lbnQKICAgICAgICAgICAgICAgIGF4aXMgKHNlZSAzR1BQIFRTIDI1LjQ2NikuIFZhbHVlIGlzIHNpZ25lZDsgdGlsdCBkb3duIGlzCiAgICAgICAgICAgICAgICBwb3NpdGl2ZSwgdGlsdCB1cCBpcyBuZWdhdGl2ZS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGFudGVubmFCZWFtV2lkdGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIE1lYXN1cmVkIGluCiAgICAgICAgICAgICAgICBkZWdyZWVzLgoKICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6IFNpbmNlIDI0LlE0LiBSZXBsYWNlZCBieSBBbnRlbm5hTW9kdWxlOjpob3Jpem9udGFsQmVhbVdpZHRoCiAgICAgICAgICAgICAgICBhbmQgQW50ZW5uYU1vZHVsZTo6dmVydGljYWxCZWFtV2lkdGguIFBsYW5uZWQgdG8gYmUgcmVtb3ZlZC4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgaG9yaXpvbnRhbEJlYW1XaWR0aCAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHZlcnRpY2FsQmVhbVdpZHRoICAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIHZlcnRpY2FsIHBsYW5lLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhemltdXRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgdmFsdWUgb2YgdGhlIGF6aW11dGggb2YgdGhlIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBlcXVpcG1lbnQgY2FuIGJlCiAgICAgICAgaW5zdGFsbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9JTlNUQUxMRURfQVRfU0lURSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2l0ZSB0eXBlLgogICAgICAgICAgICBUaGUgU2l0ZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSB0aGUgQW50ZW5uYU1vZHVsZSBpcyBpbnN0YWxsZWQuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGF0IG9uZSBTaXRlLgogICAgICAgICAgICBBIFNpdGUgaW5zdGFuY2UgY2FuIGhhdmUgbWFueSBpbnN0YWxsZWQgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGluc3RhbGxlZC1hdC1zaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSB3aGVyZSBBbnRlbm5hIE1vZHVsZSBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
 o-ran-smo-teiv-oam     urn:o-ran:smo-teiv-oam  OAM     []      2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHsgcHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTyZNIGRvbWFpbiwgd2hpY2ggYXJlIGludGVuZGVkIHRvIHJlcHJlc2VudCBtYW5hZ2VtZW50IHN5c3RlbXMKICAgIGFuZCBtYW5hZ2VtZW50IGludGVyZmFjZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gT0FNOwoKICAgIGxpc3QgTWFuYWdlZEVsZW1lbnQgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE1hbmFnZWQgRWxlbWVudCAoTUUpIGlzIGEgbm9kZSBpbnRvIGEgdGVsZWNvbW11bmljYXRpb24KICAgICAgICBuZXR3b3JrIHByb3ZpZGluZyBzdXBwb3J0IGFuZC9vciBzZXJ2aWNlIHRvIHN1YnNjcmliZXJzLiBBbiBNRQogICAgICAgIGNvbW11bmljYXRlcyB3aXRoIGEgbWFuYWdlciBhcHBsaWNhdGlvbiAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKICAgICAgICBvdmVyIG9uZSBvciBtb3JlIGludGVyZmFjZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGJlaW5nIG1vbml0b3JlZAogICAgICAgIGFuZC9vciBjb250cm9sbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgfQp9
 o-ran-smo-teiv-physical        urn:o-ran:smo-teiv-physical     PHYSICAL        []      2025-04-14      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXBoeXNpY2FsIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXBoeXNpY2FsIjsKICBwcmVmaXggb3ItdGVpdi1waHlzaWNhbDsKCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHtwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICBvcmdhbml6YXRpb24gIk8tUkFOIEFsbGlhbmNlIjsKCiAgY29udGFjdAogICAgInd3dy5vLXJhbi5vcmciOwoKICBkZXNjcmlwdGlvbgogICAgIlBoeXNpY2FsIGRvbWFpbiB0b3BvbG9neSBtb2RlbC4KICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBQaHlzaWNhbCBkb21haW4uCgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjUgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCiAgICBDb3B5cmlnaHQgMjAyNSB0aGUgTy1SQU4gQWxsaWFuY2UuCgogICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAnQVMgSVMnCiAgICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAgICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogICAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQogICAgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgogICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKICAgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwogICAgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KICAgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCiAgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQogICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgYWJvdmUgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBhYm92ZSBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgICogTmVpdGhlciB0aGUgTWVtYmVycyBvZiB0aGUgTy1SQU4gQWxsaWFuY2Ugbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiI7CgogIHJldmlzaW9uICIyMDI1LTA0LTE0IiB7CiAgICBkZXNjcmlwdGlvbiAiQWRkZWQgYXR0cmlidXRlcyBjb250YWluZXIgdG8gU2l0ZSI7CiAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4xLjA7CiAgfQoKICByZXZpc2lvbiAiMjAyNS0wMi0xMCIgewogICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMi4wMCI7CiAgfQoKICBvci10ZWl2LXlleHQ6ZG9tYWluIFBIWVNJQ0FMOwoKICBsaXN0IFBoeXNpY2FsQXBwbGlhbmNlIHsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKCiAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgUGh5c2ljYWwgQXBwbGlhbmNlIGluIHRoZSBQaHlzaWNhbCBkb21haW4iOwoKICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgUGh5c2ljYWwgQXBwbGlhbmNlIGF0dHJpYnV0ZXMiOwogICAgICBsZWFmIHZlbmRvck5hbWUgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIHRoZSBwaHlzaWNhbCBhcHBsaWFuY2UgdmVuZG9yIjsKICAgICAgfQoKICAgICAgbGVhZiBtb2RlbE5hbWUgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIHRoZSBwaHlzaWNhbCBhcHBsaWFuY2UgbW9kZWwiOwogICAgICB9CiAgICB9CiAgfQoKICBsaXN0IFNpdGUgewogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAga2V5IGlkOwoKICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIHRoZSBTaXRlIGluIHRoZSBQaHlzaWNhbCBkb21haW4iOwoKICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgY29udGFpbmVyIHNpdGVMb2NhdGlvbiB7CiAgICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50YXRpb24gb2YgcGh5c2ljYWwgc2l0ZSBsb2NhdGlvbiI7CiAgICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6R2VvSW5mb3JtYXRpb247CiAgICAgIH0KICAgICAgbGVhZiBzaXRlTmFtZSB7CiAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgZGVzY3JpcHRpb24gIkh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgdGhlIHBoeXNpY2FsIHNpdGUgYXMgaWRlbnRpZmllZCBieSB0aGUgbW9iaWxlIG5ldHdvcmsgb3BlcmF0b3IiOwogICAgICB9CiAgICB9CiAgfQoKICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMQVBQTElBTkNFX0lOU1RBTExFREFUX1NJVEUgeyAvLyAxLi5uIHRvIDEuLm0KICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKICAgIGRlc2NyaXB0aW9uICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFBoeXNpY2FsQXBwbGlhbmNlIHR5cGUuCiAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNpdGUgdHlwZS4iOwoKICAgIGxlYWYtbGlzdCBpbnN0YWxsaW5nLXNpdGUgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSBpbnN0YWxsaW5nIFBoeXNpY2FsQXBwbGlhbmNlLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIFBoeXNpY2FsQXBwbGlhbmNlOyAKICAgIH0KCiAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLXBoeXNpY2FsQXBwbGlhbmNlIHsKICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgZGVzY3JpcHRpb24gIlBoeXNpY2FsQXBwbGlhbmNlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7ICAKICAgIH0KICB9Cn0K
-o-ran-smo-teiv-ran     urn:o-ran:smo-teiv-ran  RAN     []      2025-03-20      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAiUkFOIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICAgICAgUkFOIExvZ2ljYWwgZG9tYWluLCB3aGljaCByZXByZXNlbnRzIHRoZSBmdW5jdGlvbmFsIGNhcGFiaWxpdHkKICAgICAgICBvZiB0aGUgZGVwbG95ZWQgUkFOIHRoYXQgYXJlIHJlbGV2YW50IHRvIHJBcHBzIHVzZSBjYXNlcy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNSBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI1LTAzLTIwIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlByb3Bvc2VkIGVudGl0aWVzLCByZWxhdGlvbnNoaXBzIGFuZCBhdHRyaWJ1dGVzIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4xLjE7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjUtMDItMTQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmV2aXNpb24gdG8gcmVuYW1lIGFkYXB0ZXIgZ3JvdXAgdG8gb3JpZ2luIGdyb3VwLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAyLjAwIjsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0xMC0xMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAxLjAwIjsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJBTjsKCiAgICBsaXN0IE9EVUZ1bmN0aW9uIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgTy1EVSBpcyBhbiBPLVJBTiBORiBpbiB0aGUgTy1SQU4gQXJjaGl0ZWN0dXJlLiBBbiBPLURVLCBjb21iaW5lZCB3aXRoCiAgICAgICAgb25lIG9yIG1vcmUgTy1SVShzKSBjb25uZWN0ZWQgdG8gaXQsIHN1cHBvcnRzIGFuZCBpcyBmdWxseSBjb21wYXRpYmxlCiAgICAgICAgd2l0aCB0aGUgZnVuY3Rpb25zIG9mIGEgZ05CLURVIGFzIGRlZmluZWQgYnkgM0dQUCBUUyAzOC40MDEuCgogICAgICAgIFRoZSBPLURVIHRlcm1pbmF0ZXMgdGhlIEUyIGFuZCB0aGUgRjEgaW50ZXJmYWNlLCBhbmQgdGhlIE9wZW4gRnJvbnRoYXVsCiAgICAgICAgaW50ZXJmYWNlIChhbHNvIGtub3duIGFzIExMUyBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgdGhlIFJMQywgTUFDLCBhbmQKICAgICAgICBIaWdoLVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIHRoZSBVRS4KCiAgICAgICAgTm90ZTogTy1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLURVIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLURVIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5IHRoZQogICAgICAgIElPQyBHTkJEVUZ1bmN0aW9uIGFzIHNwZWNpZmllZCBpbiAzR1BQIE5SIE5STSBtb2RlbCwgYXMgcGVyIDNHUFAgVFMgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKSBhdHRyaWJ1dGVzIjsKCiAgICAgICAgICAgIGxlYWYgZ05CRFVJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRFUgd2l0aGluIGEgZ05vZGVCIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGRVcExNTklkIHsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdXNlZCBhcyBwYXJ0IG9mIFBNIEV2ZW50cyBkYXRhIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVUNQRnVuY3Rpb24gewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIENlbnRyYWwgVW5pdCDigJMgQ29udHJvbCBQbGFuZSAoTy1DVS1DUCkKCiAgICAgICAgVGhlIE8tQ1UtQ1AgdGVybWluYXRlcyB0aGUgTkctYywgWDItYywgWG4tYywgRjEtYywgYW5kIEUxIGludGVyZmFjZXMgYXMKICAgICAgICB3ZWxsIGFzIHRoZSBSUkMgYW5kIFBEQ1AgKGZvciBTUkIpIHByb3RvY29scyB0b3dhcmRzIHRoZSBVRSBhcyBkZWZpbmVkIGJ5CiAgICAgICAgM0dQUCBUUyAzOC40MDEuIFRoZSBPLUNVLUNQIHRlcm1pbmF0ZXMgRTIgaW50ZXJmYWNlIHRvIE5lYXItUlQgUklDIGFuZCBpcwogICAgICAgIG1hbmFnZWQgdmlhIE8xIGludGVyZmFjZSBieSB0aGUgU01PLgoKICAgICAgICBOb3RlOiBPLUNVLUNQIGlzIGEgY29uY3JldGUgY2xhc3MgdGhhdCBleHRlbmRzIHRoZSBPUkFOTmV0d29ya0Z1bmN0aW9uCiAgICAgICAgYWJzdHJhY3QgY2xhc3MuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHRoZQogICAgICAgIE8tQ1UtQ1Agb2JqZWN0LgogICAgICAgICAgICAKICAgICAgICBUaGUgbWFuYWdlbWVudCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIE8tQ1UtQ1AgTy1SQU4gTkYgaXMgcmVwcmVzZW50ZWQgYnkKICAgICAgICB0aGUgSU9DIEdOQkNVQ1BGdW5jdGlvbiBhcyBzcGVjaWZpZWQgaW4gM0dQUCBOUiBOUk0gbW9kZWwsIGFzIHBlciAzR1BQIFRTCiAgICAgICAgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBDZW50cmFsIFVuaXQg4oCTIENvbnRyb2wgUGxhbmUgKE8tQ1UtQ1ApIGF0dHJpYnV0ZXMiOwogICAgICAgICAgICBsZWFmIGdOQkNVTmFtZSB7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwTE1OSWQgewogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB0byBiZSB1c2VkIGFzIHBhcnQgb2YgZ2xvYmFsIFJBTiBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVVVQRnVuY3Rpb24geyAgICAgICAgCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IFVzZXIgUGxhbmUgKE8tQ1UtVVApCgogICAgICAgIFRoZSBPLUNVLVVQIHRlcm1pbmF0ZXMgdGhlIE5HLXUsIFgyLXUsIFhuLXUsIEYxLXUsIGFuZCBFMSBpbnRlcmZhY2VzIGFzCiAgICAgICAgd2VsbCBhcyB0aGUgUERDUCBhbmQgU0RBUCBwcm90b2NvbHMgdG93YXJkcyB0aGUgVUUgYXMgZGVmaW5lZCBieSAzR1BQIFRTCiAgICAgICAgMzguNDAxLiBUaGUgTy1DVS1VUCB0ZXJtaW5hdGVzIEUyIGludGVyZmFjZSB0byBOZWFyLVJUIFJJQyBhbmQgaXMgbWFuYWdlZAogICAgICAgIHZpYSBPMSBpbnRlcmZhY2UgYnkgdGhlIFNNTy4KCiAgICAgICAgTm90ZTogTy1DVS1VUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLUNVLVVQIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLUNVLVVQIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5CiAgICAgICAgdGhlIElPQyBHTkJDVVVQRnVuY3Rpb24gYXMgc3BlY2lmaWVkIGluIDNHUFAgTlIgTlJNIG1vZGVsLCBhcyBwZXIgM0dQUCBUUwogICAgICAgIDI4LjU0MSI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gQ2VudHJhbCBVbml0IOKAkyBVc2VyIFBsYW5lIChPLUNVLVVQKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGlzdCBwTE1OSWRMaXN0IHsKICAgICAgICAgICAgICAgIGtleSAibWNjIG1uYyI7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiB1bmlxdWUgaWRlbnRpdGllcyBmb3IgUExNTiI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJOZWFyLVJlYWwtVGltZSBSQU4gSW50ZWxsaWdlbnQgQ29udHJvbGxlciAoTmVhci1SVCBSSUMpLgoKICAgICAgICBOZWFyLVJUIFJJQyBpcyBhbiBPLVJBTiBORiB0aGF0IGVuYWJsZXMgbmVhciByZWFsLXRpbWUgY29udHJvbCBhbmQKICAgICAgICBvcHRpbWl6YXRpb24gb2Ygc2VydmljZXMgYW5kIHJlc291cmNlcyBvZiBFMiBOb2RlcyB2aWEgZmluZS1ncmFpbmVkIGRhdGEKICAgICAgICBjb2xsZWN0aW9uIGFuZCBhY3Rpb25zIG92ZXIgdGhlIEUyIGludGVyZmFjZSB3aXRoIGNvbnRyb2wgbG9vcHMgaW4gdGhlCiAgICAgICAgb3JkZXIgb2YgMTAgbXMtMXMuIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTmVhci1SZWFsLVRpbWUgUkFOIEludGVsbGlnZW50IENvbnRyb2xsZXIgKE5lYXItUlQgUklDKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5lYXJSdFJpY0lkIHsKICAgICAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGlmaWVyIG9mIE5lYXItUlQgUklDIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT1JVRnVuY3Rpb24gewoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIFJhZGlvIFVuaXQgKE8tUlUpCgogICAgICAgIFRoZSBPLVJVIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIGludGVyZmFjZSAoYWxzbyBrbm93biBhcyBMTFMKICAgICAgICBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgTG93LVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIAogICAgICAgIHRoZSBVRS4gVGhpcyBpcyBkZXBsb3llZCBhcyBhIFBORi4KCiAgICAgICAgVGhlIE8tUlUgdGVybWluYXRlcyB0aGUgT3BlbiBGcm9udGhhdWwgTS1QbGFuZSBpbnRlcmZhY2UgdG93YXJkcyB0aGUgTy1EVQogICAgICAgIGFuZCBTTU8uIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gUmFkaW8gVW5pdCAoTy1SVSkgYXR0cmlidXRlcyI7CiAgICAgICAgICAgIGxlYWYgb3J1SWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiB0aGUgTy1SVSBhcyBkaXNjb3ZlcmVkIGZyb20gdGhlIHNvdXJjZSBkb21haW4gYmFzZWQgb24gTS1QbGFuZSBhcmNoaXRlY3R1cmUgbW9kZWwiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsQ1UgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1DVS4KCiAgICAgICAgNUcgTlIgaXMgYSBuZXcgcmFkaW8gYWNjZXNzIHRlY2hub2xvZ3kgKFJBVCkgZGV2ZWxvcGVkIGJ5IDNHUFAgZm9yCiAgICAgICAgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKSBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlCiAgICAgICAgZ2xvYmFsIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgNUcgTlIgaGFzIHN5bmNocm9uaXphdGlvbiBzaWduYWwgdGhhdCBpcyBrbm93biBhcyBQcmltYXJ5CiAgICAgICAgU3luY2hyb25pemF0aW9uIFNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5IFN5bmNocm9uaXphdGlvbgogICAgICAgIFNpZ25hbCAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUgc3BlY2lmaWMgdG8gTlIgcGh5c2ljYWwgbGF5ZXIgYW5kCiAgICAgICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5IFVFIGZvciBkb3dubGluawogICAgICAgIHN5bmNocm9uaXphdGlvbjogUFNTIHByb3ZpZGVzIFJhZGlvIEZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QKICAgICAgICBTeW1ib2wgaW4gYSBSYWRpbyBmcmFtZSkgU1NTIHByb3ZpZGVzIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZgogICAgICAgIDFzdCBTeW1ib2wgaW4gYSBTdWJmcmFtZSkgUGh5c2ljYWwgTGF5ZXIgQ2VsbCBJRCAoUENJKSBpbmZvcm1hdGlvbgogICAgICAgIHVzaW5nIGJvdGggUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcGxtbklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIElEIGZvciBOUiBDR0kuIElmIGVtcHR5LAogICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uOjpwTE1OSWQgaXMgdXNlZCBmb3IgUExNTiBJRCBpbiBOUiBDR0kiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItRFUuCgogICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikgbW9iaWxlIG5ldHdvcmsuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHRoZQogICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgIFN5bmNocm9uaXphdGlvbiBzaWduYWwgKFBTUykgYW5kIFNlY29uZGFyeSBTeW5jaHJvbml6YXRpb24gc2lnbmFsCiAgICAgICAgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZCBwcm92aWRlCiAgICAgICAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0CiAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICB1c2luZyBib3RoIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICBjZWxsIGluIFBMTU4uIFVzZWQgdG9nZXRoZXIgd2l0aCBnTkJJZCB0byBmb3JtIE5DSS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUlNlY3RvckNhcnJpZXIgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIE5SIFNlY3RvciBDYXJyaWVyIG9iamVjdCBwcm92aWRlcyB0aGUgYXR0cmlidXRlcyBmb3IKICAgICAgICBkZWZpbmluZyB0aGUgbG9naWNhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBjYXJyaWVyIChjZWxsKSBpbiBhCiAgICAgICAgc2VjdG9yLiBBIHNlY3RvciBpcyBhIGNvdmVyYWdlIGFyZWEgYXNzb2NpYXRlZCB3aXRoIGEgYmFzZSBzdGF0aW9uCiAgICAgICAgaGF2aW5nIGl0cyBvd24gYW50ZW5uYXMsIHJhZGlvIHBvcnRzLCBhbmQgY29udHJvbCBjaGFubmVscy4gVGhlCiAgICAgICAgY29uY2VwdCBvZiBzZWN0b3JzIHdhcyBkZXZlbG9wZWQgdG8gaW1wcm92ZSBjby1jaGFubmVsIGludGVyZmVyZW5jZQogICAgICAgIGluIGNlbGx1bGFyIHN5c3RlbXMsIGFuZCBtb3N0IHdpcmVsZXNzIHN5c3RlbXMgdXNlIHRocmVlIHNlY3RvcgogICAgICAgIGNlbGxzLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBhcmZjbkRMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBGcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIGRvd25saW5rIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYXJmY25VTCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gZnJlcXVlbmN5IENoYW5uZWwgTnVtYmVyCiAgICAgICAgICAgICAgICAoTlItQVJGQ04pIGZvciB1cGxpbmsuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGZyZXF1ZW5jeVVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSRiBSZWZlcmVuY2UgRnJlcXVlbmN5IG9mIHVwbGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYlNDaGFubmVsQndETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQlMgQ2hhbm5lbCBiYW5kd2lkdGggaW4gTUh6IGZvciBkb3dubGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgTU8gc2VydmVzIGFzIGEgbWFwcGluZyBiZXR3ZWVuIHRoZSBjZWxsIGFuZCB0aGUgUkJTCiAgICAgICAgZXF1aXBtZW50IHVzZWQgdG8gcHJvdmlkZSBjb3ZlcmFnZSBpbiBhIGNlcnRhaW4gZ2VvZ3JhcGhpY2FsIGFyZWEuCiAgICAgICAgVGhlIE1PIGFsc28gY29udHJvbHMgdGhlIG1heGltdW0gb3V0cHV0IHBvd2VyIG9mIHRoZSBzZWN0b3IuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmLWxpc3QgZVV0cmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBMVEUgZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBnZXJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgR0VSQU4gZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBuUkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgTlIgZnJlcXVlbmN5IGJhbmRzIGFzc29jaWF0ZWQgaGFyZHdhcmUKICAgICAgICAgICAgICAgIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgU2VjdG9yIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIkEgZ3JvdXAgb2YgY28tbG9jYXRlZCBDZWxscyB0aGF0IGhhdmUgYSBzaGFyZWQKICAgICAgICBjb3ZlcmFnZSBhcmVhLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUgc2VjdG9yJ3MKICAgICAgICAgICAgICAgIGRpc2NvdmVyeSBtZWNoYW5pc20uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CgogICAgICAgICAgICBsZWFmIGF6aW11dGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkF2ZXJhZ2UgdmFsdWUgb2YgdGhlIGF6aW11dGhzIG9mIHRoZSBjZWxscwogICAgICAgICAgICAgICAgY29tcHJpc2luZyB0aGUgc2VjdG9yLCBkZXRlcm1pbmVkIGR1cmluZyBzZWN0b3IgZGlzY292ZXJ5LiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9EVUZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTERVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJDZWxsRFUgdHlwZS4KICAgICAgICAgICAgVGhlIE9EVUZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIERVIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQSBPRFVGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBieSBhbiBPRFVGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fUFJPVklERVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIHR5cGUuCiAgICAgICAgICAgIFRoZSBPRFVGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBEVSBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJTZWN0b3JDYXJyaWVyLgogICAgICAgICAgICBBIE9EVUZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgYnkgYW4gT0RVRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHByb3ZpZGVkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ1VDUEZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTENVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxDVSB0eXBlLgogICAgICAgICAgICBUaGUgT0NVQ1BGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBDVS1DUCBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJDZWxsQ1UuCiAgICAgICAgICAgIEEgT0NVQ1BGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbENVLgogICAgICAgICAgICBBbiBOUkNlbGxDVSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFuIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJDZWxsQ3UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBwcm92aWRlcyBOUiBDZWxsLUNVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9jdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1DVSBwcm92aWRlZCBieSBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxDVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUkNFTExEVV9VU0VTX05SU0VDVE9SQ0FSUklFUiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SU2VjdG9yQ2FycmllciB0eXBlLgogICAgICAgICAgICBUaGUgTlJDZWxsRFUgcmVwcmVzZW50cyB0aGUgY2VsbCB0aGF0IHVzZXMgdGhlIE5SU2VjdG9yQ2Fycmllci4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIHVzZSBtYW55IE5SU2VjdG9yQ2FycmllcnMuCiAgICAgICAgICAgIEFuIE5SU2VjdG9yQ2FycmllciBpbnN0YW5jZSBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBOUkNlbGxEVS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLW5yU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHVzZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5SQ2VsbERVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHVzZWQtYnktbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgdXNlZCBieSBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUlNFQ1RPUkNBUlJJRVJfVVNFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUlNlY3RvckNhcnJpZXIgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eSB0eXBlLgogICAgICAgICAgICBUaGUgTlJTZWN0b3JDYXJyaWVyIHJlcHJlc2VudHMgdGhlIGNhcnJpZXIgdGhhdCB1c2VzIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eS4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIGNhbiB1c2Ugb25seSBvbmUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFDYXBhYmlsaXR5IGluc3RhbmNlIGNhbiBiZSB1c2VkIGJ5IG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19OUkNFTExEVSB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBTZWN0b3IgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEEgU2VjdG9yIGluc3RhbmNlIGNhbiBncm91cCBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
+o-ran-smo-teiv-ran     urn:o-ran:smo-teiv-ran  RAN     []      2025-04-01      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAiUkFOIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICAgICAgUkFOIExvZ2ljYWwgZG9tYWluLCB3aGljaCByZXByZXNlbnRzIHRoZSBmdW5jdGlvbmFsIGNhcGFiaWxpdHkKICAgICAgICBvZiB0aGUgZGVwbG95ZWQgUkFOIHRoYXQgYXJlIHJlbGV2YW50IHRvIHJBcHBzIHVzZSBjYXNlcy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNSBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI1LTA0LTAxIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gaW50cm9kdWNlcyBTTU8gYW5kIE8xIGludGVyZmFjZSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4zOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI1LTAzLTI4IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gaW50cm9kdWNlcyBFMiBhbmQgT3BlbiBGcm9udGhhdWwgaW50ZXJmYWNlcyI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4yOwogICAgfQogICAgCiAgICByZXZpc2lvbiAiMjAyNS0wMy0yMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJQcm9wb3NlZCBlbnRpdGllcywgcmVsYXRpb25zaGlwcyBhbmQgYXR0cmlidXRlcyI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4xOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI1LTAyLTE0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJldmlzaW9uIHRvIHJlbmFtZSBhZGFwdGVyIGdyb3VwIHRvIG9yaWdpbiBncm91cC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAxLjEuMDsKICAgICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMi4wMCI7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMTAiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAxLjAuMDsKICAgICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMS4wMCI7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSQU47CgogICAgbGlzdCBTTU8gewogICAgICAgIGRlc2NyaXB0aW9uICJTZXJ2aWNlIE1hbmFnZW1lbnQgYW5kIE9yY2hlc3RyYXRpb24gKFNNTykuCgogICAgICAgIEEgY2VudHJhbGl6ZWQgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciB0aGUgbWFuYWdlbWVudCwgb3JjaGVzdHJhdGlvbiwKICAgICAgICBhbmQgYXV0b21hdGlvbiBvZiB0aGUgZW50aXJlIFJBTiBpbmZyYXN0cnVjdHVyZS4gU01PIGVuYWJsZXMgZmxleGlibGUsCiAgICAgICAgc29mdHdhcmUtZHJpdmVuIG5ldHdvcmsgY29udHJvbCBhbmQgaXMgY3JpdGljYWwgZm9yIGVuYWJsaW5nIHRoZSBvcGVuLAogICAgICAgIGludGVyb3BlcmFibGUsIGFuZCBkaXNhZ2dyZWdhdGVkIGFwcHJvYWNoIHRoYXQgZGVmaW5lcyBPLVJBTi4KCiAgICAgICAgSW4gdGhlIE8tUkFOIGFyY2hpdGVjdHVyZSwgdGhlIFNNTyBpcyBwYXJ0IG9mIHRoZSBtYW5hZ2VtZW50IGFuZAogICAgICAgIG9yY2hlc3RyYXRpb24gbGF5ZXIsIHNpdHRpbmcgYWJvdmUgdGhlIFJBTiBlbGVtZW50cyBsaWtlIHRoZSBSVSwgRFUsCiAgICAgICAgYW5kIENVLiBJdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgUkFOIHVzaW5nIG9wZW4gaW50ZXJmYWNlcywKICAgICAgICBwYXJ0aWN1bGFybHkgTzEgYW5kIEExIGludGVyZmFjZXMiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIHNtb05hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgdGhlIFNNTyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9EVUZ1bmN0aW9uIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgTy1EVSBpcyBhbiBPLVJBTiBORiBpbiB0aGUgTy1SQU4gQXJjaGl0ZWN0dXJlLiBBbiBPLURVLCBjb21iaW5lZCB3aXRoCiAgICAgICAgb25lIG9yIG1vcmUgTy1SVShzKSBjb25uZWN0ZWQgdG8gaXQsIHN1cHBvcnRzIGFuZCBpcyBmdWxseSBjb21wYXRpYmxlCiAgICAgICAgd2l0aCB0aGUgZnVuY3Rpb25zIG9mIGEgZ05CLURVIGFzIGRlZmluZWQgYnkgM0dQUCBUUyAzOC40MDEuCgogICAgICAgIFRoZSBPLURVIHRlcm1pbmF0ZXMgdGhlIEUyIGFuZCB0aGUgRjEgaW50ZXJmYWNlLCBhbmQgdGhlIE9wZW4gRnJvbnRoYXVsCiAgICAgICAgaW50ZXJmYWNlIChhbHNvIGtub3duIGFzIExMUyBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgdGhlIFJMQywgTUFDLCBhbmQKICAgICAgICBIaWdoLVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIHRoZSBVRS4KCiAgICAgICAgTm90ZTogTy1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLURVIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLURVIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5IHRoZQogICAgICAgIElPQyBHTkJEVUZ1bmN0aW9uIGFzIHNwZWNpZmllZCBpbiAzR1BQIE5SIE5STSBtb2RlbCwgYXMgcGVyIDNHUFAgVFMgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKSBhdHRyaWJ1dGVzIjsKCiAgICAgICAgICAgIGxlYWYgZ05CRFVJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRFUgd2l0aGluIGEgZ05vZGVCIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGRVcExNTklkIHsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdXNlZCBhcyBwYXJ0IG9mIFBNIEV2ZW50cyBkYXRhIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVUNQRnVuY3Rpb24gewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIENlbnRyYWwgVW5pdCDigJMgQ29udHJvbCBQbGFuZSAoTy1DVS1DUCkKCiAgICAgICAgVGhlIE8tQ1UtQ1AgdGVybWluYXRlcyB0aGUgTkctYywgWDItYywgWG4tYywgRjEtYywgYW5kIEUxIGludGVyZmFjZXMgYXMKICAgICAgICB3ZWxsIGFzIHRoZSBSUkMgYW5kIFBEQ1AgKGZvciBTUkIpIHByb3RvY29scyB0b3dhcmRzIHRoZSBVRSBhcyBkZWZpbmVkIGJ5CiAgICAgICAgM0dQUCBUUyAzOC40MDEuIFRoZSBPLUNVLUNQIHRlcm1pbmF0ZXMgRTIgaW50ZXJmYWNlIHRvIE5lYXItUlQgUklDIGFuZCBpcwogICAgICAgIG1hbmFnZWQgdmlhIE8xIGludGVyZmFjZSBieSB0aGUgU01PLgoKICAgICAgICBOb3RlOiBPLUNVLUNQIGlzIGEgY29uY3JldGUgY2xhc3MgdGhhdCBleHRlbmRzIHRoZSBPUkFOTmV0d29ya0Z1bmN0aW9uCiAgICAgICAgYWJzdHJhY3QgY2xhc3MuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHRoZQogICAgICAgIE8tQ1UtQ1Agb2JqZWN0LgogICAgICAgICAgICAKICAgICAgICBUaGUgbWFuYWdlbWVudCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIE8tQ1UtQ1AgTy1SQU4gTkYgaXMgcmVwcmVzZW50ZWQgYnkKICAgICAgICB0aGUgSU9DIEdOQkNVQ1BGdW5jdGlvbiBhcyBzcGVjaWZpZWQgaW4gM0dQUCBOUiBOUk0gbW9kZWwsIGFzIHBlciAzR1BQIFRTCiAgICAgICAgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBDZW50cmFsIFVuaXQg4oCTIENvbnRyb2wgUGxhbmUgKE8tQ1UtQ1ApIGF0dHJpYnV0ZXMiOwogICAgICAgICAgICBsZWFmIGdOQkNVTmFtZSB7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwTE1OSWQgewogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB0byBiZSB1c2VkIGFzIHBhcnQgb2YgZ2xvYmFsIFJBTiBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVVVQRnVuY3Rpb24geyAgICAgICAgCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IFVzZXIgUGxhbmUgKE8tQ1UtVVApCgogICAgICAgIFRoZSBPLUNVLVVQIHRlcm1pbmF0ZXMgdGhlIE5HLXUsIFgyLXUsIFhuLXUsIEYxLXUsIGFuZCBFMSBpbnRlcmZhY2VzIGFzCiAgICAgICAgd2VsbCBhcyB0aGUgUERDUCBhbmQgU0RBUCBwcm90b2NvbHMgdG93YXJkcyB0aGUgVUUgYXMgZGVmaW5lZCBieSAzR1BQIFRTCiAgICAgICAgMzguNDAxLiBUaGUgTy1DVS1VUCB0ZXJtaW5hdGVzIEUyIGludGVyZmFjZSB0byBOZWFyLVJUIFJJQyBhbmQgaXMgbWFuYWdlZAogICAgICAgIHZpYSBPMSBpbnRlcmZhY2UgYnkgdGhlIFNNTy4KCiAgICAgICAgTm90ZTogTy1DVS1VUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLUNVLVVQIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLUNVLVVQIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5CiAgICAgICAgdGhlIElPQyBHTkJDVVVQRnVuY3Rpb24gYXMgc3BlY2lmaWVkIGluIDNHUFAgTlIgTlJNIG1vZGVsLCBhcyBwZXIgM0dQUCBUUwogICAgICAgIDI4LjU0MSI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gQ2VudHJhbCBVbml0IOKAkyBVc2VyIFBsYW5lIChPLUNVLVVQKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGlzdCBwTE1OSWRMaXN0IHsKICAgICAgICAgICAgICAgIGtleSAibWNjIG1uYyI7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiB1bmlxdWUgaWRlbnRpdGllcyBmb3IgUExNTiI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJOZWFyLVJlYWwtVGltZSBSQU4gSW50ZWxsaWdlbnQgQ29udHJvbGxlciAoTmVhci1SVCBSSUMpLgoKICAgICAgICBOZWFyLVJUIFJJQyBpcyBhbiBPLVJBTiBORiB0aGF0IGVuYWJsZXMgbmVhciByZWFsLXRpbWUgY29udHJvbCBhbmQKICAgICAgICBvcHRpbWl6YXRpb24gb2Ygc2VydmljZXMgYW5kIHJlc291cmNlcyBvZiBFMiBOb2RlcyB2aWEgZmluZS1ncmFpbmVkIGRhdGEKICAgICAgICBjb2xsZWN0aW9uIGFuZCBhY3Rpb25zIG92ZXIgdGhlIEUyIGludGVyZmFjZSB3aXRoIGNvbnRyb2wgbG9vcHMgaW4gdGhlCiAgICAgICAgb3JkZXIgb2YgMTAgbXMtMXMuIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTmVhci1SZWFsLVRpbWUgUkFOIEludGVsbGlnZW50IENvbnRyb2xsZXIgKE5lYXItUlQgUklDKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5lYXJSdFJpY0lkIHsKICAgICAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGlmaWVyIG9mIE5lYXItUlQgUklDIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT1JVRnVuY3Rpb24gewoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIFJhZGlvIFVuaXQgKE8tUlUpCgogICAgICAgIFRoZSBPLVJVIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIGludGVyZmFjZSAoYWxzbyBrbm93biBhcyBMTFMKICAgICAgICBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgTG93LVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIAogICAgICAgIHRoZSBVRS4gVGhpcyBpcyBkZXBsb3llZCBhcyBhIFBORi4KCiAgICAgICAgVGhlIE8tUlUgdGVybWluYXRlcyB0aGUgT3BlbiBGcm9udGhhdWwgTS1QbGFuZSBpbnRlcmZhY2UgdG93YXJkcyB0aGUgTy1EVQogICAgICAgIGFuZCBTTU8uIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gUmFkaW8gVW5pdCAoTy1SVSkgYXR0cmlidXRlcyI7CiAgICAgICAgICAgIGxlYWYgb3J1SWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiB0aGUgTy1SVSBhcyBkaXNjb3ZlcmVkIGZyb20gdGhlIHNvdXJjZSBkb21haW4gYmFzZWQgb24gTS1QbGFuZSBhcmNoaXRlY3R1cmUgbW9kZWwiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsQ1UgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1DVS4KCiAgICAgICAgNUcgTlIgaXMgYSBuZXcgcmFkaW8gYWNjZXNzIHRlY2hub2xvZ3kgKFJBVCkgZGV2ZWxvcGVkIGJ5IDNHUFAgZm9yCiAgICAgICAgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKSBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlCiAgICAgICAgZ2xvYmFsIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgNUcgTlIgaGFzIHN5bmNocm9uaXphdGlvbiBzaWduYWwgdGhhdCBpcyBrbm93biBhcyBQcmltYXJ5CiAgICAgICAgU3luY2hyb25pemF0aW9uIFNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5IFN5bmNocm9uaXphdGlvbgogICAgICAgIFNpZ25hbCAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUgc3BlY2lmaWMgdG8gTlIgcGh5c2ljYWwgbGF5ZXIgYW5kCiAgICAgICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5IFVFIGZvciBkb3dubGluawogICAgICAgIHN5bmNocm9uaXphdGlvbjogUFNTIHByb3ZpZGVzIFJhZGlvIEZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QKICAgICAgICBTeW1ib2wgaW4gYSBSYWRpbyBmcmFtZSkgU1NTIHByb3ZpZGVzIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZgogICAgICAgIDFzdCBTeW1ib2wgaW4gYSBTdWJmcmFtZSkgUGh5c2ljYWwgTGF5ZXIgQ2VsbCBJRCAoUENJKSBpbmZvcm1hdGlvbgogICAgICAgIHVzaW5nIGJvdGggUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcGxtbklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIElEIGZvciBOUiBDR0kuIElmIGVtcHR5LAogICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uOjpwTE1OSWQgaXMgdXNlZCBmb3IgUExNTiBJRCBpbiBOUiBDR0kiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItRFUuCgogICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikgbW9iaWxlIG5ldHdvcmsuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHRoZQogICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgIFN5bmNocm9uaXphdGlvbiBzaWduYWwgKFBTUykgYW5kIFNlY29uZGFyeSBTeW5jaHJvbml6YXRpb24gc2lnbmFsCiAgICAgICAgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZCBwcm92aWRlCiAgICAgICAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0CiAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICB1c2luZyBib3RoIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICBjZWxsIGluIFBMTU4uIFVzZWQgdG9nZXRoZXIgd2l0aCBnTkJJZCB0byBmb3JtIE5DSS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUlNlY3RvckNhcnJpZXIgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIE5SIFNlY3RvciBDYXJyaWVyIG9iamVjdCBwcm92aWRlcyB0aGUgYXR0cmlidXRlcyBmb3IKICAgICAgICBkZWZpbmluZyB0aGUgbG9naWNhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBjYXJyaWVyIChjZWxsKSBpbiBhCiAgICAgICAgc2VjdG9yLiBBIHNlY3RvciBpcyBhIGNvdmVyYWdlIGFyZWEgYXNzb2NpYXRlZCB3aXRoIGEgYmFzZSBzdGF0aW9uCiAgICAgICAgaGF2aW5nIGl0cyBvd24gYW50ZW5uYXMsIHJhZGlvIHBvcnRzLCBhbmQgY29udHJvbCBjaGFubmVscy4gVGhlCiAgICAgICAgY29uY2VwdCBvZiBzZWN0b3JzIHdhcyBkZXZlbG9wZWQgdG8gaW1wcm92ZSBjby1jaGFubmVsIGludGVyZmVyZW5jZQogICAgICAgIGluIGNlbGx1bGFyIHN5c3RlbXMsIGFuZCBtb3N0IHdpcmVsZXNzIHN5c3RlbXMgdXNlIHRocmVlIHNlY3RvcgogICAgICAgIGNlbGxzLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBhcmZjbkRMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBGcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIGRvd25saW5rIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYXJmY25VTCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gZnJlcXVlbmN5IENoYW5uZWwgTnVtYmVyCiAgICAgICAgICAgICAgICAoTlItQVJGQ04pIGZvciB1cGxpbmsuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGZyZXF1ZW5jeVVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSRiBSZWZlcmVuY2UgRnJlcXVlbmN5IG9mIHVwbGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYlNDaGFubmVsQndETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQlMgQ2hhbm5lbCBiYW5kd2lkdGggaW4gTUh6IGZvciBkb3dubGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgTU8gc2VydmVzIGFzIGEgbWFwcGluZyBiZXR3ZWVuIHRoZSBjZWxsIGFuZCB0aGUgUkJTCiAgICAgICAgZXF1aXBtZW50IHVzZWQgdG8gcHJvdmlkZSBjb3ZlcmFnZSBpbiBhIGNlcnRhaW4gZ2VvZ3JhcGhpY2FsIGFyZWEuCiAgICAgICAgVGhlIE1PIGFsc28gY29udHJvbHMgdGhlIG1heGltdW0gb3V0cHV0IHBvd2VyIG9mIHRoZSBzZWN0b3IuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmLWxpc3QgZVV0cmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBMVEUgZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBnZXJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgR0VSQU4gZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBuUkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgTlIgZnJlcXVlbmN5IGJhbmRzIGFzc29jaWF0ZWQgaGFyZHdhcmUKICAgICAgICAgICAgICAgIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgU2VjdG9yIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIkEgZ3JvdXAgb2YgY28tbG9jYXRlZCBDZWxscyB0aGF0IGhhdmUgYSBzaGFyZWQKICAgICAgICBjb3ZlcmFnZSBhcmVhLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUgc2VjdG9yJ3MKICAgICAgICAgICAgICAgIGRpc2NvdmVyeSBtZWNoYW5pc20uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CgogICAgICAgICAgICBsZWFmIGF6aW11dGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkF2ZXJhZ2UgdmFsdWUgb2YgdGhlIGF6aW11dGhzIG9mIHRoZSBjZWxscwogICAgICAgICAgICAgICAgY29tcHJpc2luZyB0aGUgc2VjdG9yLCBkZXRlcm1pbmVkIGR1cmluZyBzZWN0b3IgZGlzY292ZXJ5LiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9EVUZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTERVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJDZWxsRFUgdHlwZS4KICAgICAgICAgICAgVGhlIE9EVUZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIERVIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQSBPRFVGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBieSBhbiBPRFVGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fUFJPVklERVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIHR5cGUuCiAgICAgICAgICAgIFRoZSBPRFVGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBEVSBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJTZWN0b3JDYXJyaWVyLgogICAgICAgICAgICBBIE9EVUZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgYnkgYW4gT0RVRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHByb3ZpZGVkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ1VDUEZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTENVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxDVSB0eXBlLgogICAgICAgICAgICBUaGUgT0NVQ1BGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBDVS1DUCBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJDZWxsQ1UuCiAgICAgICAgICAgIEEgT0NVQ1BGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbENVLgogICAgICAgICAgICBBbiBOUkNlbGxDVSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFuIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJDZWxsQ3UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBwcm92aWRlcyBOUiBDZWxsLUNVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9jdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1DVSBwcm92aWRlZCBieSBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxDVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUkNFTExEVV9VU0VTX05SU0VDVE9SQ0FSUklFUiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SU2VjdG9yQ2FycmllciB0eXBlLgogICAgICAgICAgICBUaGUgTlJDZWxsRFUgcmVwcmVzZW50cyB0aGUgY2VsbCB0aGF0IHVzZXMgdGhlIE5SU2VjdG9yQ2Fycmllci4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIHVzZSBtYW55IE5SU2VjdG9yQ2FycmllcnMuCiAgICAgICAgICAgIEFuIE5SU2VjdG9yQ2FycmllciBpbnN0YW5jZSBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBOUkNlbGxEVS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLW5yU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHVzZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5SQ2VsbERVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHVzZWQtYnktbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgdXNlZCBieSBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUlNFQ1RPUkNBUlJJRVJfVVNFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUlNlY3RvckNhcnJpZXIgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eSB0eXBlLgogICAgICAgICAgICBUaGUgTlJTZWN0b3JDYXJyaWVyIHJlcHJlc2VudHMgdGhlIGNhcnJpZXIgdGhhdCB1c2VzIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eS4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIGNhbiB1c2Ugb25seSBvbmUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFDYXBhYmlsaXR5IGluc3RhbmNlIGNhbiBiZSB1c2VkIGJ5IG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19OUkNFTExEVSB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBTZWN0b3IgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEEgU2VjdG9yIGluc3RhbmNlIGNhbiBncm91cCBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ1VDUEZVTkNUSU9OX0UxTElOS19PQ1VVUEZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRTEgbGluayBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9jdWNwRnVuY3Rpb24tZTItbGlua2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVUNQIEZ1bmN0aW9uIGxpbmtzIE8tQ1VVUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG9jdXVwRnVuY3Rpb24tZTItbGlua2VkLWJ5LW9jdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVVVQIEZ1bmN0aW9uIGxpbmtlZCBieSBPLUNVQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9FMkxJTktfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOZWFyUlRSSUNGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIEUyIGxpbmsgYmV0d2VlbiB0aGUKICAgICAgICAgICAgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1lMi1saW5rZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rcyBOZWFyIFJUIFJJQyBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBuZWFyUlRSSUNGdW5jdGlvbi1lMi1saW5rZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0NVQ1BGVU5DVElPTl9FMkxJTktfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGVU5DVElPTiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRTIgbGluayBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9jdWNwRnVuY3Rpb24tZTItbGlua2VkLW5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1VDUCBGdW5jdGlvbiBsaW5rcyBOZWFyIFJUIFJJQyBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG5lYXJSVFJJQ0Z1bmN0aW9uLWUyLWxpbmtlZC1ieS1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5lYXIgUlQgUklDIEZ1bmN0aW9uIGxpbmtlZCBieSBPLUNVQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0NVVVBGVU5DVElPTl9FMkxJTktfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVVVBGVU5DVElPTiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRTIgbGluayBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9jdXVwRnVuY3Rpb24tZTItbGlua2VkLW5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1VVUCBGdW5jdGlvbiBsaW5rcyBOZWFyIFJUIFJJQyBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0NVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG5lYXJSVFJJQ0Z1bmN0aW9uLWUyLWxpbmtlZC1ieS1vY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5lYXIgUlQgUklDIEZ1bmN0aW9uIGxpbmtlZCBieSBPLUNVVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT1JVRlVOQ1RJT05fT0ZITUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBNLVBsYW5lIEludGVyZmFjZSBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9ydUZ1bmN0aW9uLW9maG0tbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIFNNTy4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzbW8tb2ZobS1saW5rZWQtYnktb3J1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU01PIGxpbmtlZCBieSBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PRkhNTElOS19PRFVGVU5DVElPTiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBNLVBsYW5lIEludGVyZmFjZSBiZXR3ZWVuCiAgICAgICAgICAgIHRoZSBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9ydUZ1bmN0aW9uLW9maG0tbGlua2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tUlUgRnVuY3Rpb24gbGlua3MgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBvZHVGdW5jdGlvbi1vZmhtLWxpbmtlZC1ieS1vcnVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIGxpbmtlZCBieSBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPRFVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9SVUZVTkNUSU9OX09GSENMSU5LX09EVUZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lcyBhbiBPcGVuIEZIIChGcm9udGhhdWwpIENvbnRyb2wgSW50ZXJmYWNlIGJldHdlZW4KICAgICAgICAgICAgdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tb2ZoYy1saW5rZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBsaW5rcyBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPUlVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG9kdUZ1bmN0aW9uLW9maGMtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua2VkIGJ5IE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT1JVRlVOQ1RJT05fT0ZIVUxJTktfT0RVRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT1JVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPRFVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIE9wZW4gRkggKEZyb250aGF1bCkgVXNlciBJbnRlcmZhY2UgYmV0d2VlbgogICAgICAgICAgICB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvcnVGdW5jdGlvbi1vZmh1LWxpbmtlZC1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk9SVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgb2R1RnVuY3Rpb24tb2ZodS1saW5rZWQtYnktb3J1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rZWQgYnkgTy1SVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PRkhTTElOS19PRFVGVU5DVElPTiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBTeW5jaHJvbml6YXRpb24gSW50ZXJmYWNlCiAgICAgICAgICAgIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tb2Zocy1saW5rZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBsaW5rcyBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPUlVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG9kdUZ1bmN0aW9uLW9maHMtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua2VkIGJ5IE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fTzFMSU5LX1NNTyB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPRFVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNNTyB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIE8xIEludGVyZmFjZSBiZXR3ZWVuIHRoZSBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9kdUZ1bmN0aW9uLW8xLWxpbmtlZC1zbW8gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rcyBTTU8uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTTU8gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOlNNTzsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9DVUNQRlVOQ1RJT05fTzFMSU5LX1NNTyB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VDUEZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb2N1Y3BGdW5jdGlvbi1vMS1saW5rZWQtc21vIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtQ1AgRnVuY3Rpb24gbGlua3MgU01PLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNNTyBsaW5rZWQgYnkgTmVhciBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PMUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tbzEtbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIFNNTy4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzbW8tbzEtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNNTyBsaW5rcyBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORUFSUlRSSUNGVU5DVElPTl9PMUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgbmVhclJUUklDRnVuY3Rpb24tbzEtbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOZWFyIFJUIFJJQyBGdW5jdGlvbiBsaW5rcyBTTU8uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTTU8gbGlua2VkIGJ5IE5lYXIgUlQgUklDIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9GMVVMSU5LX09DVVVQRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRjEtdSBJbnRlcmZhY2UgYmV0d2VlbiB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1mMS11LWxpbmtlZC1vY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua3MgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBvY3V1cEZ1bmN0aW9uLWYxLXUtbGlua2VkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtVVAgRnVuY3Rpb24gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9GMUNMSU5LX09DVUNQRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLjEKCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VDUEZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRjEtYyBJbnRlcmZhY2UgYmV0d2VlbiB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1mMS1jLWxpbmtlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua3MgTy1DVS1DUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgb2N1Y3BGdW5jdGlvbi1mMS1jLWxpbmtlZC1ieS1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIGxpbmtlZCBieSBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQp9
 o-ran-smo-teiv-rel-cloud-ran   urn:o-ran:smo-teiv-rel-cloud-ran        REL_CLOUD_RAN   ["o-ran-smo-teiv-cloud", "o-ran-smo-teiv-ran"]  2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1jbG91ZC1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1jbG91ZC1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtY2xvdWR0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0xMC0wNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJBZGRlZCBncm91cGluZywgT3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycCB0byB0aGUgdG9wb2xvZ3kgb2JqZWN0LiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX0NMT1VEX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfT0RVRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX09DVUNQRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtQ1AgRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19PQ1VVUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2N1dXBGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOZWFyUlRSSUNGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE5lYXJSVFJJQ0Z1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOZWFyUlRSSUNGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
 o-ran-smo-teiv-rel-equipment-ran       urn:o-ran:smo-teiv-rel-equipment-ran    REL_EQUIPMENT_RAN       ["o-ran-smo-teiv-equipment", "o-ran-smo-teiv-ran"]      2024-10-08      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1lcXVpcG1lbnQtcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtZXF1aXBtZW50LXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtZXF1aXByYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHsgcHJlZml4IG9yLXRlaXYtZXF1aXA7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtcmFuIHsgcHJlZml4IG9yLXRlaXYtcmFuOyB9CgoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gRXF1aXBtZW50IHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA4IiB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFkZGVkIG5ldyByZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9TRVJWRVNfTlJDRUxMRFUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX0VRVUlQTUVOVF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBBTlRFTk5BTU9EVUxFX1NFUlZFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYUNhcGFiaWxpdHkgdHlwZS4KICAgICAgICAgICAgVGhlIEFudGVubmFNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYW50ZW5uYSB0aGF0IHNlcnZlcyB0aGUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIHNlcnZlIG1hbnkgQW50ZW5uYUNhcGFiaWxpdGllcy4KICAgICAgICAgICAgQW4gQW50ZW5uYUNhcGFiaWxpdHkgaW5zdGFuY2UgY2FuIGJlIHNlcnZlZCBieSBtYW55IEFudGVubmFNb2R1bGVzLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgQ2FwYWJpbGl0eSBzZXJ2aWNlZCBieSB0aGlzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWVxdWlwOkFudGVubmFNb2R1bGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgc2VydmVzIHRoaXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpBbnRlbm5hQ2FwYWJpbGl0eTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEFOVEVOTkFNT0RVTEVfU0VSVkVTX05SQ0VMTERVIHsgLy8gMS4ubiB0byAwLi5tCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFudGVubmFNb2R1bGUgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgQW50ZW5uYU1vZHVsZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBhbnRlbm5hIHRoYXQgc2VydmVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQW4gQW50ZW5uYU1vZHVsZSBpbnN0YW5jZSBjYW4gc2VydmUgbWFueSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEFuIE5SQ2VsbERVIGluc3RhbmNlIGNhbiBiZSBzZXJ2ZWQgYnkgbWFueSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHNlcnZpY2VkIGJ5IHRoaXMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBzZXJ2ZXMgdGhpcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX0FOVEVOTkFNT0RVTEUgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2VjdG9yIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYU1vZHVsZSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgQSBTZWN0b3IgaW5zdGFuY2UgY2FuIGdyb3VwIG1hbnkgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTZWN0b3IgZ3JvdXBzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgZ3JvdXBlZCBieSBTZWN0b3IuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
 o-ran-smo-teiv-rel-oam-cloud   urn:o-ran:smo-teiv-rel-oam-cloud        REL_OAM_CLOUD   ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-cloud"]  2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tY2xvdWQgewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1vYW0tY2xvdWQiOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtb2FtIHtwcmVmaXggb3ItdGVpdi1vYW07IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA3LTE1IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gYWxpZ25zIE8tUkFOIFdvcmsgR3JvdXAgMTAgU3RhZ2UgMiBTcGVjaWZpY2F0aW9uIChPLVJBTi5XRzEwLlRFJklWLUNJTUkuMC1SMDA0LnYwMi4wMCkiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9PQU1fQ0xPVUQ7CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9ERVBMT1lFRF9BU19DTE9VRElGSUVETkYgeyAgLy8gMC4uMSB0byAxCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGRlcGxveWVkLWFzLWNsb3VkaWZpZWRORiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgZGVwbG95ZWQgYXMgQ2xvdWRpZmllZCBORi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZGVwbG95ZWQtbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWRpZmllZCBORiBkZXBsb3lzIE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1jbG91ZDpDbG91ZGlmaWVkTkY7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19NQU5BR0VERUxFTUVOVCB7IC8vIDEuLm4gdG8gMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBzZXJ2aWNlZC1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LW9hbTpNYW5hZ2VkRWxlbWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9Cn0=
@@ -557,6 +728,7 @@ o-ran-smo-teiv-ran_OCUCPFunction    OCUCPFunction   o-ran-smo-teiv-ran      ["gNBCUName",
 o-ran-smo-teiv-ran_OCUUPFunction       OCUUPFunction   o-ran-smo-teiv-ran      ["gNBId", "gNBIdLength", "pLMNIdList"]
 o-ran-smo-teiv-ran_ODUFunction ODUFunction     o-ran-smo-teiv-ran      ["dUpLMNId", "gNBDUId", "gNBId", "gNBIdLength"]
 o-ran-smo-teiv-ran_ORUFunction ORUFunction     o-ran-smo-teiv-ran      ["oruId"]
+o-ran-smo-teiv-ran_SMO SMO     o-ran-smo-teiv-ran      ["smoName"]
 o-ran-smo-teiv-ran_Sector      Sector  o-ran-smo-teiv-ran      ["azimuth", "geo-location", "sectorId"]
 \.
 
@@ -571,6 +743,7 @@ MANAGEDELEMENT_MANAGES_OCUCPFUNCTION        managed-ocucpFunction   ManagedElement  o-ran-
 MANAGEDELEMENT_MANAGES_OCUUPFUNCTION   managed-ocuupFunction   ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       OCUUPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_OCUUPFunction        o-ran-smo-teiv-rel-oam-ran
 MANAGEDELEMENT_MANAGES_ODUFUNCTION     managed-oduFunction     ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-rel-oam-ran
 MANAGEDELEMENT_MANAGES_ORUFUNCTION     managed-oruFunction     ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-rel-oam-ran
+NEARRTRICFUNCTION_O1LINK_SMO   nearRTRICFunction-o1-linked-smo NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-nearRTRICFunction      SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_NearRTRICFunction    o-ran-smo-teiv-ran
 NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE       deployed-on-ocloudNamespace     NFDeployment    o-ran-smo-teiv-cloud    1       9223372036854775807     deployed-nFDeployment   OCloudNamespace o-ran-smo-teiv-cloud    1       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE   o-ran-smo-teiv-cloud
 NFDEPLOYMENT_SERVES_MANAGEDELEMENT     serviced-managedElement NFDeployment    o-ran-smo-teiv-cloud    1       9223372036854775807     serving-nFDeployment    ManagedElement  o-ran-smo-teiv-oam      1       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-cloud_NFDeployment       o-ran-smo-teiv-rel-oam-cloud
 NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION  serviced-nearRTRICFunction      NFDeployment    o-ran-smo-teiv-cloud    0       9223372036854775807     serving-nFDeployment    NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION      o-ran-smo-teiv-rel-cloud-ran
@@ -581,9 +754,23 @@ NODECLUSTER_LOCATED_AT_OCLOUDSITE  located-at-ocloudSite   NodeCluster     o-ran-smo-te
 NRCELLDU_USES_NRSECTORCARRIER  used-nrSectorCarrier    NRCellDU        o-ran-smo-teiv-ran      0       1       used-by-nrCellDu        NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
 NRSECTORCARRIER_USES_ANTENNACAPABILITY used-antennaCapability  NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     used-by-nrSectorCarrier AntennaCapability       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
 OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER        deployed-on-nodeCluster OCloudNamespace o-ran-smo-teiv-cloud    1       9223372036854775807     deployed-ocloudNamespace        NodeCluster     o-ran-smo-teiv-cloud    1       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-cloud_OCloudNamespace    o-ran-smo-teiv-cloud
+OCUCPFUNCTION_E1LINK_OCUUPFUNCTION     ocucpFunction-e2-linked-ocuupFunction   OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     ocuupFunction-e2-linked-by-ocucpFunction        OCUUPFunction   o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPFunction        o-ran-smo-teiv-ran
+OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION ocucpFunction-e2-linked-nearRTRICFunction       OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-ocucpFunction    NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPFunction        o-ran-smo-teiv-ran
+OCUCPFUNCTION_O1LINK_SMO       ocucpFunction-o1-linked-smo     OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-ocucpFunction  SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPFunction        o-ran-smo-teiv-ran
 OCUCPFUNCTION_PROVIDES_NRCELLCU        provided-nrCellCu       OCUCPFunction   o-ran-smo-teiv-ran      1       1       provided-by-ocucpFunction       NRCellCU        o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRCellCU     o-ran-smo-teiv-ran
+OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION ocuupFunction-e2-linked-nearRTRICFunction       OCUUPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-ocuupFunction    NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUUPFunction        o-ran-smo-teiv-ran
+ODUFUNCTION_E2LINK_NEARRTRICFUNCTION   oduFunction-e2-linked-nearRTRICFunction ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-oduFunction      NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_F1CLINK_OCUCPFUNCTION      oduFunction-f1-c-linked-ocucpFunction   ODUFunction     o-ran-smo-teiv-ran      0       1       ocucpFunction-f1-c-linked-by-oduFunction        OCUCPFunction   o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_F1ULINK_OCUUPFUNCTION      oduFunction-f1-u-linked-ocuupFunction   ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     ocuupFunction-f1-u-linked-by-oduFunction        OCUUPFunction   o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_O1LINK_SMO oduFunction-o1-linked-smo       ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-oduFunction    SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
 ODUFUNCTION_PROVIDES_NRCELLDU  provided-nrCellDu       ODUFunction     o-ran-smo-teiv-ran      1       1       provided-by-oduFunction NRCellDU        o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRCellDU     o-ran-smo-teiv-ran
 ODUFUNCTION_PROVIDES_NRSECTORCARRIER   provided-nrSectorCarrier        ODUFunction     o-ran-smo-teiv-ran      1       1       provided-by-oduFunction NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
+ORUFUNCTION_O1LINK_SMO oruFunction-o1-linked-smo       ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-oruFunction    SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHCLINK_ODUFUNCTION       oruFunction-ofhc-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhc-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHMLINK_ODUFUNCTION       oruFunction-ofhm-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhm-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHMLINK_SMO       oruFunction-ofhm-linked-smo     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-ofhm-linked-by-oruFunction  SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHSLINK_ODUFUNCTION       oruFunction-ofhs-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhs-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHULINK_ODUFUNCTION       oruFunction-ofhu-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhu-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
 PHYSICALAPPLIANCE_INSTALLEDAT_SITE     installing-site PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     installed-physicalAppliance     Site    o-ran-smo-teiv-physical 0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE      o-ran-smo-teiv-physical
 PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION     served-nearRTRICFunction        PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION      o-ran-smo-teiv-rel-physical-ran
 PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION served-ocucpFunction    PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION  o-ran-smo-teiv-rel-physical-ran