From 96768a02f4e0a7d13fa46afc06a1ba8ffd2bdf06 Mon Sep 17 00:00:00 2001 From: BBF Tools Date: Thu, 5 Nov 2020 10:07:16 +0000 Subject: [PATCH] 2020-11-05: TR-106 Amendment 10 --- .gitignore | 1 - CHANGELOG.md | 58 + CONTRIBUTING.md | 3 + LICENSE | 40 + README.md | 23 +- defs.mk | 48 - docs/.nojekyll | 0 docs/00-index-contents.htmf | 349 ++ docs/00-index-contents.html | 560 +++ docs/00-index-contents.yaml | 6 + docs/01-index-executive-summary.htmf | 35 + docs/01-index-executive-summary.html | 217 + docs/01-index-executive-summary.yaml | 6 + docs/02-index-introduction.htmf | 296 ++ docs/02-index-introduction.html | 430 ++ docs/02-index-introduction.yaml | 6 + docs/03-index-architecture.htmf | 451 ++ docs/03-index-architecture.html | 425 ++ docs/03-index-architecture.yaml | 6 + docs/04-index-object-definitions.htmf | 210 + docs/04-index-object-definitions.html | 272 ++ docs/04-index-object-definitions.yaml | 6 + docs/05-index-normative-references.htmf | 46 + docs/05-index-normative-references.html | 250 + docs/05-index-normative-references.yaml | 6 + ...cwmp-data-model-definition-xml-schema.htmf | 2300 +++++++++ ...cwmp-data-model-definition-xml-schema.html | 2411 ++++++++++ ...cwmp-data-model-definition-xml-schema.yaml | 6 + .../07-index-cwmp-device-type-xml-schema.htmf | 150 + .../07-index-cwmp-device-type-xml-schema.html | 294 ++ .../07-index-cwmp-device-type-xml-schema.yaml | 6 + ...irements-for-bbf-standard-data-models.htmf | 271 ++ ...irements-for-bbf-standard-data-models.html | 370 ++ ...irements-for-bbf-standard-data-models.yaml | 6 + docs/09-index-html-data-model-reports.htmf | 137 + docs/09-index-html-data-model-reports.html | 328 ++ docs/09-index-html-data-model-reports.yaml | 6 + docs/96-index-tocfull.htmf | 112 + docs/96-index-tocfull.html | 305 ++ docs/96-index-tocfull.yaml | 6 + docs/97-index-metadata.yaml | 318 ++ docs/98-index-navigation.htmf | 15 + docs/98-index-navigation.html | 209 + docs/98-index-navigation.yaml | 6 + docs/CNAME | 1 + docs/bbf.css | 355 ++ docs/bbflogo-bw.png | Bin 0 -> 19281 bytes docs/broadband-forum-logo.png | Bin 0 -> 27862 bytes docs/extra.css | 176 + docs/github.css | 685 +++ {specification => docs/images}/figure-1.png | Bin {specification => docs/images}/figure-2.png | Bin {specification => docs/images}/figure-3.png | Bin {specification => docs/images}/figure-4.png | Bin docs/index.htf | 4132 +++++++++++++++++ docs/index.htm | 3359 ++++++++++++++ docs/index.htmf | 349 ++ docs/index.html | 560 +++ docs/index.pdf | Bin 0 -> 956506 bytes docs/index.yaml | 318 ++ docs/index.yml | 317 ++ docs/pencil.png | Bin 0 -> 2655 bytes docs/permalink.png | Bin 0 -> 3279 bytes docs/toc.css | 72 + makefile | 47 - rules.mk | 41 - schemas/cwmp-datamodel-1.xsd | 211 +- schemas/cwmp-datamodel-report.xsd | 28 +- schemas/cwmp-devicetype-1.xsd | 146 +- schemas/makefile | 47 - specification/CNAME | 1 + specification/images/figure-1.png | Bin 0 -> 163812 bytes specification/images/figure-2.png | Bin 0 -> 159144 bytes specification/images/figure-3.png | Bin 0 -> 94356 bytes specification/images/figure-4.png | Bin 0 -> 272434 bytes specification/index.html | 2750 ----------- specification/index.md | 2250 +++++---- support/docs/tr-069-biblio.html | 1775 +++++++ support/docs/tr-106-types.html | 461 ++ support/makefile | 72 - support/tr-069-biblio.xml | 60 + support/tr-106-types.xml | 2 +- test/makefile | 64 - 83 files changed, 25190 insertions(+), 4095 deletions(-) delete mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE delete mode 100644 defs.mk create mode 100644 docs/.nojekyll create mode 100644 docs/00-index-contents.htmf create mode 100644 docs/00-index-contents.html create mode 100644 docs/00-index-contents.yaml create mode 100644 docs/01-index-executive-summary.htmf create mode 100644 docs/01-index-executive-summary.html create mode 100644 docs/01-index-executive-summary.yaml create mode 100644 docs/02-index-introduction.htmf create mode 100644 docs/02-index-introduction.html create mode 100644 docs/02-index-introduction.yaml create mode 100644 docs/03-index-architecture.htmf create mode 100644 docs/03-index-architecture.html create mode 100644 docs/03-index-architecture.yaml create mode 100644 docs/04-index-object-definitions.htmf create mode 100644 docs/04-index-object-definitions.html create mode 100644 docs/04-index-object-definitions.yaml create mode 100644 docs/05-index-normative-references.htmf create mode 100644 docs/05-index-normative-references.html create mode 100644 docs/05-index-normative-references.yaml create mode 100644 docs/06-index-cwmp-data-model-definition-xml-schema.htmf create mode 100644 docs/06-index-cwmp-data-model-definition-xml-schema.html create mode 100644 docs/06-index-cwmp-data-model-definition-xml-schema.yaml create mode 100644 docs/07-index-cwmp-device-type-xml-schema.htmf create mode 100644 docs/07-index-cwmp-device-type-xml-schema.html create mode 100644 docs/07-index-cwmp-device-type-xml-schema.yaml create mode 100644 docs/08-index-requirements-for-bbf-standard-data-models.htmf create mode 100644 docs/08-index-requirements-for-bbf-standard-data-models.html create mode 100644 docs/08-index-requirements-for-bbf-standard-data-models.yaml create mode 100644 docs/09-index-html-data-model-reports.htmf create mode 100644 docs/09-index-html-data-model-reports.html create mode 100644 docs/09-index-html-data-model-reports.yaml create mode 100644 docs/96-index-tocfull.htmf create mode 100644 docs/96-index-tocfull.html create mode 100644 docs/96-index-tocfull.yaml create mode 100644 docs/97-index-metadata.yaml create mode 100644 docs/98-index-navigation.htmf create mode 100644 docs/98-index-navigation.html create mode 100644 docs/98-index-navigation.yaml create mode 100644 docs/CNAME create mode 100644 docs/bbf.css create mode 100644 docs/bbflogo-bw.png create mode 100644 docs/broadband-forum-logo.png create mode 100644 docs/extra.css create mode 100644 docs/github.css rename {specification => docs/images}/figure-1.png (100%) rename {specification => docs/images}/figure-2.png (100%) rename {specification => docs/images}/figure-3.png (100%) rename {specification => docs/images}/figure-4.png (100%) create mode 100644 docs/index.htf create mode 100644 docs/index.htm create mode 100644 docs/index.htmf create mode 100644 docs/index.html create mode 100644 docs/index.pdf create mode 100644 docs/index.yaml create mode 100644 docs/index.yml create mode 100644 docs/pencil.png create mode 100644 docs/permalink.png create mode 100644 docs/toc.css delete mode 100644 makefile delete mode 100644 rules.mk delete mode 100644 schemas/makefile create mode 100644 specification/CNAME create mode 100644 specification/images/figure-1.png create mode 100644 specification/images/figure-2.png create mode 100644 specification/images/figure-3.png create mode 100644 specification/images/figure-4.png delete mode 100644 specification/index.html create mode 100644 support/docs/tr-069-biblio.html create mode 100644 support/docs/tr-106-types.html delete mode 100644 support/makefile delete mode 100644 test/makefile diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 77f12ae..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -docs/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4a7f7c0 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,58 @@ +# TR-106 Change Log + +*The latest TR-106 specification can be found at https://data-model-template.broadband-forum.org.* + +## 2020-11-05: [TR-106 Amendment 10](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.10.0) + +* Converted document to markdown +* Various editorial improvements + +## 2019-09-04: [TR-106 Amendment 9](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.9.0) + +* Schema updates; document not updated + +## 2018-05-10: [TR-106 Amendment 8](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.8.0) + +* Added support of USP (mountable objects) +* Removed references to obsolete data models +* Moved device requirements to TR-069 + +## 2014-09-17: [TR-106 Amendment 7+](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.7.0+) + +* Support file updates; document not updated + +## 2013-10-07: [TR-106 Amendment 7](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.7.0) + +* Added descriptions of new features in DM Schema (v1.4 & v1.5) and DT Schema (v1.2 & v1.3) +* Added Annex defining additional requirements for BBF standard data models + +## 2011-07-01: [TR-106 Amendment 6](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.6.0) + +* Removed definition of proxying, now defined in TR-069 +* Removed Common objects +* Alias Parameter Requirements added + +## 2010-11-01: [TR-106 Amendment 5](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.5.0) + +* Replaced definitions of named data types such as IPAddress with references to normative XML +* Minor changes to DM Schema (v1.3) and DT Schema (v1.1) + +## 2010-11-01: [TR-106 Amendment 4](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.4.0) + +* Moved data model definitions to TR-181 Issue 1 + +## 2010-02-01: [TR-106 Amendment 3](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.3.0) + +* Addition of device type XML Schema + +## 2008-11-01: [TR-106 Amendment 2](https://github.com/BroadbandForum/data-model-template/releases/tag/v1.2.0) + +* Addition of data model definition XML Schema and normative XML common object and component definitions + +## 2006-11-01: [TR-106 Amendment 1](https://www.broadband-forum.org/technical/download/TR-106_Amendment-1.pdf) + +* Clarification of original document (link is to PDF) + +## 2005-09-01: TR-106 Amendment 0 + +* Original (PDF no longer available) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..4cc37a9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,3 @@ +# Contributing to the TR-106 project + +Only [Broadband Forum](https://www.broadband-forum.org) members can contribute directly to this project. However, everyone is welcome to report bugs or add comments and suggestions by creating an issue or by emailing info@broadband-forum.org. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..37298f7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,40 @@ +Copyright (c) 2008-2020, Broadband Forum +All rights reserved. + +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The above license is used as a license under copyright only. +Please reference the Forum IPR Policy for patent licensing terms +. + +Any moral rights which are necessary to exercise under the above +license grant are also deemed granted under this license. diff --git a/README.md b/README.md index 4f29213..1e1ef3b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,19 @@ -# WT-106 -Data Model Template for TR-069-Enabled Devices +# TR-106 -- Data Model Template for CWMP Endpoints and USP Agents -This repository contains WT-106 schemas, i.e. the DM (cwmp-datamodel) -and DT (cwmp-devicetype) schemas, and their DMR (cwmp-datamodel-report) -and DTF (cwmp-devicetype-features) friends. +*The latest TR-106 specification can be found at https://data-model-template.broadband-forum.org.* + +TR-106 defines the [Broadband Forum](https://www.broadband-forum.org)'s [CWMP](https://www.broadband-forum.org/technical/download/TR-069.pdf) (TR-069) and [USP](https://usp.technology) (TR-369) data modeling framework, including: + +* Structural requirements for the data hierarchy +* Requirements for versioning of data models +* Requirements for defining profiles + +As part of this data modeling framework, TR-106 defines two XML Schemas: + +* The *Data Modeling (DM) Schema*, which is used for defining all CWMP and USP data models. This makes data model definitions rigorous, and helps to reduce the danger that different implementations will interpret data model definitions in different ways + +* The *Device Type (DT) Schema*, that allows a device to describe its supported CWMP data models. Note that USP uses a different mechanism (the `GetSupportedDM` message) for this purpose + +This repository contains [the above schemas](schemas), [support files](support) (e.g., common bibliographic references and data types), and the [TR-106 specification source](specification). The rendered GitHub Pages documentation can be found at https://data-model-template.broadband-forum.org. + +The TR-106 schemas and support files are also available at the [CWMP data models](https://cwmp-data-models.broadband-forum.org) and [USP data models](https://usp-data-models.broadband-forum.org). These sites present integrated views of the CWMP and USP versions of the standard data models, and provide a convenient way of viewing current and past versions of the schemas and support files in context. diff --git a/defs.mk b/defs.mk deleted file mode 100644 index 8b8ab1a..0000000 --- a/defs.mk +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (c) 2017, Broadband Forum -# -# Redistribution and use in source and binary forms, with or -# without modification, are permitted provided that the following -# conditions are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials -# provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The above license is used as a license under copyright only. -# Please reference the Forum IPR Policy for patent licensing terms -# . -# -# Any moral rights which are necessary to exercise under the above -# license grant are also deemed granted under this license. - -# XXX would like not to need to worry about multiple inclusion - -ifndef _DEFS_MK_ -_DEFS_MK_ = true - -include $(TOPDIR)/../../install/etc/defs.mk - -endif # _DEFS_MK_ diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/docs/00-index-contents.htmf b/docs/00-index-contents.htmf new file mode 100644 index 0000000..1b8df85 --- /dev/null +++ b/docs/00-index-contents.htmf @@ -0,0 +1,349 @@ +

Table of Contents

+ + + + + +

List of Tables

+ +
    +
  1. XML Description Markup
  2. +
  3. XML Description Templates
  4. +
  5. XML Named Data Types
  6. +
  7. XML Data Type Facets
  8. +
  9. Path Name Scope Definition
  10. +
  11. PathRef Facet Definition
  12. +
  13. InstanceRef Facet Definition
  14. +
  15. EnumerationRef Facet Definition
  16. +
  17. XML Facet Inheritance Rules
  18. +
  19. XML Glossary Items
  20. +
  21. XML Abbreviation Items
  22. +
  23. XML Bibliographic References
  24. +
  25. XML Template Elements
  26. +
  27. XML Component Definition
  28. +
  29. XML Root and Service Objects
  30. +
  31. XML Parameter Definition
  32. +
  33. XML Parameter Syntax
  34. +
  35. XML Command Definition
  36. +
  37. XML Command Input / Output Arguments Definition
  38. +
  39. XML Object Definition
  40. +
  41. XML Table Definition
  42. +
  43. XML Profile Definition
  44. +
  45. XML Parameter Modification
  46. +
  47. XML Command Modification
  48. +
  49. XML Event Modification
  50. +
  51. XML Object Modification
  52. +
  53. XML Profile Modification
  54. +
  55. XML Description Modification
  56. +
+ +

List of Figures

+ +
    +
  1. CWMP Positioning in the End-to-End Architecture
  2. +
  3. USP Architecture Overview
  4. +
  5. Specification Structure
  6. +
+ +

Notice

+ +

The Broadband Forum is a non-profit corporation organized to create guidelines +for broadband network system development and deployment. This Technical Report +has been approved by members of the Forum. This Technical Report is subject to +change. This Technical Report is owned and copyrighted by the Broadband Forum, +and all rights are reserved. Portions of this Technical Report may be owned +and/or copyrighted by Broadband Forum members.

+ +

Intellectual Property

+ +

Recipients of this Technical Report are requested to submit, with their +comments, notification of any relevant patent claims or other intellectual +property rights of which they may be aware that might be infringed by any +implementation of this Technical Report, or use of any software code +normatively referenced in this Technical Report, and to provide supporting +documentation.

+ +

Terms of Use

+ +

1. License

+ +

Broadband Forum hereby grants you the right, without charge, on a perpetual, +non-exclusive and worldwide basis, to utilize the Technical Report for the +purpose of developing, making, having made, using, marketing, importing, +offering to sell or license, and selling or licensing, and to otherwise +distribute, products complying with the Technical Report, in all cases subject +to the conditions set forth in this notice and any relevant patent and other +intellectual property rights of third parties (which may include members of +Broadband Forum). This license grant does not include the right to sublicense, +modify or create derivative works based upon the Technical Report except to the +extent this Technical Report includes text implementable in computer code, in +which case your right under this License to create and modify derivative works +is limited to modifying and creating derivative works of such code. For the +avoidance of doubt, except as qualified by the preceding sentence, products +implementing this Technical Report are not deemed to be derivative works of the +Technical Report.

+ +

2. NO WARRANTIES

+ +

THIS TECHNICAL REPORT IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN +PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT AND ANY IMPLIED WARRANTIES ARE +EXPRESSLY DISCLAIMED. ANY USE OF THIS TECHNICAL REPORT SHALL BE MADE ENTIRELY +AT THE USER’S OR IMPLEMENTER’S OWN RISK, AND NEITHER THE BROADBAND FORUM, NOR +ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY +USER, IMPLEMENTER, OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, +DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS TECHNICAL REPORT, +INCLUDING BUT NOT LIMITED TO, ANY CONSEQUENTIAL, SPECIAL, PUNITIVE, INCIDENTAL, +AND INDIRECT DAMAGES.

+ +

3. THIRD PARTY RIGHTS

+ +

Without limiting the generality of Section 2 above, BROADBAND FORUM ASSUMES NO +RESPONSIBILITY TO COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY +ASSERTIONS OF PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN +THE FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE TECHNICAL REPORT IN ITS +CURRENT, OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE +TECHNICAL REPORT, BROADBAND FORUM TAKES NO POSITION AS TO THE VALIDITY OR +INVALIDITY OF SUCH ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE +MADE ARE SO LISTED.

+ +

All copies of this Technical Report (or any portion hereof) must include the +notices, legends, and other provisions set forth on this page.

+ +

Issue History

+ +
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Issue NumberApproval DatePublication DateIssue EditorChanges
Issue 1September 2005Jeff Bernstein, 2Wire
Christele Bouchat, Alcatel
Tim Spets, Westell
Original
Issue 1 Amendment 1November 2006Jeff Bernstein, 2Wire
John Blackford, 2Wire
Mike Digdon, SupportSoft
Heather Kirksey, Motive
William Lupton, 2Wire
Anton Okmianski, Cisco
Clarification of original document
Issue 1 Amendment 2November 2008William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of data model definition XML Schema and normative XML common object and component definitions
Issue 1 Amendment 3September 2009William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of device type XML Schema
Issue 1 Amendment 4February 2010William Lupton, 2Wire
Paul Sigurdson, Broadband Forum
Moved data model definitions to TR-181 Issue 1
Issue 1 Amendment 5November 2010Paul Sigurdson, Broadband ForumReplaced definitions of named data types such as IPAddress with +references to normative XML.
Minor changes to DM Schema (v1.3) and DT Schema (v1.1).
Issue 1 Amendment 6July 2011Sarah Banks, Cisco
Andrea Colmegna, FASTWEB
Tim Spets, Motorola Mobility
Removed definition of proxying, now defined in TR-069.
Removed Common objects.
Alias Parameter Requirements added.
Issue 1 Amendment 7September 20137 October 2013William Lupton, CiscoAdded descriptions of new features in DM Schema (v1.4 & v1.5) and DT +Schema (v1.2 & v1.3).
Added Annex defining additional requirements for BBF standard data +models.
Issue 1 Amendment 816 March 201810 May 2018Jean-Didier Ott, Orange
William Lupton, Broadband Forum
Added support of USP (mountable objects).
Removed references to obsolete data models.
Moved device requirements to TR-069.
Issue 1 Amendment 9Schema updates; document not updated.
Issue 1 Amendment 105 November 20205 November 2020William Lupton, Broadband ForumConverted document to markdown.
Various editorial improvements.
+ +

Comments or questions about this Broadband Forum Technical Report should be +directed to info@broadband-forum.org.

+ +
+
+ +

Editors

+ +
+

William Lupton, Broadband Forum

+ +
+
+ +

Broadband User Services Work Area Director(s)

+ +
+

Jason Walls, QA Cafe
John Blackford, CommScope

+ +
+
+ +
+
+ +
+
+ +
+
+ diff --git a/docs/00-index-contents.html b/docs/00-index-contents.html new file mode 100644 index 0000000..51a5146 --- /dev/null +++ b/docs/00-index-contents.html @@ -0,0 +1,560 @@ + + + + + + + + + + BBF – TR-106 – Data Model Template for CWMP Endpoints and USP Agents + + + + + + + + + + + +
+ + + + +
+

TR-106 – Data Model Template for CWMP Endpoints and USP Agents

+

Issue: 1 Amendment 10

+

Issue Date: November 2020

+
+

Table of Contents

+ + + + + +

List of Tables

+ +
    +
  1. XML Description Markup
  2. +
  3. XML Description Templates
  4. +
  5. XML Named Data Types
  6. +
  7. XML Data Type Facets
  8. +
  9. Path Name Scope Definition
  10. +
  11. PathRef Facet Definition
  12. +
  13. InstanceRef Facet Definition
  14. +
  15. EnumerationRef Facet Definition
  16. +
  17. XML Facet Inheritance Rules
  18. +
  19. XML Glossary Items
  20. +
  21. XML Abbreviation Items
  22. +
  23. XML Bibliographic References
  24. +
  25. XML Template Elements
  26. +
  27. XML Component Definition
  28. +
  29. XML Root and Service Objects
  30. +
  31. XML Parameter Definition
  32. +
  33. XML Parameter Syntax
  34. +
  35. XML Command Definition
  36. +
  37. XML Command Input / Output Arguments Definition
  38. +
  39. XML Object Definition
  40. +
  41. XML Table Definition
  42. +
  43. XML Profile Definition
  44. +
  45. XML Parameter Modification
  46. +
  47. XML Command Modification
  48. +
  49. XML Event Modification
  50. +
  51. XML Object Modification
  52. +
  53. XML Profile Modification
  54. +
  55. XML Description Modification
  56. +
+ +

List of Figures

+ +
    +
  1. CWMP Positioning in the End-to-End Architecture
  2. +
  3. USP Architecture Overview
  4. +
  5. Specification Structure
  6. +
+ +

Notice

+ +

The Broadband Forum is a non-profit corporation organized to create guidelines + for broadband network system development and deployment. This Technical Report + has been approved by members of the Forum. This Technical Report is subject to + change. This Technical Report is owned and copyrighted by the Broadband Forum, + and all rights are reserved. Portions of this Technical Report may be owned + and/or copyrighted by Broadband Forum members.

+ +

Intellectual Property

+ +

Recipients of this Technical Report are requested to submit, with their + comments, notification of any relevant patent claims or other intellectual + property rights of which they may be aware that might be infringed by any + implementation of this Technical Report, or use of any software code + normatively referenced in this Technical Report, and to provide supporting + documentation.

+ +

Terms of Use

+ +

1. License

+ +

Broadband Forum hereby grants you the right, without charge, on a perpetual, + non-exclusive and worldwide basis, to utilize the Technical Report for the + purpose of developing, making, having made, using, marketing, importing, + offering to sell or license, and selling or licensing, and to otherwise + distribute, products complying with the Technical Report, in all cases subject + to the conditions set forth in this notice and any relevant patent and other + intellectual property rights of third parties (which may include members of + Broadband Forum). This license grant does not include the right to sublicense, + modify or create derivative works based upon the Technical Report except to the + extent this Technical Report includes text implementable in computer code, in + which case your right under this License to create and modify derivative works + is limited to modifying and creating derivative works of such code. For the + avoidance of doubt, except as qualified by the preceding sentence, products + implementing this Technical Report are not deemed to be derivative works of the + Technical Report.

+ +

2. NO WARRANTIES

+ +

THIS TECHNICAL REPORT IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN + PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT AND ANY IMPLIED WARRANTIES ARE + EXPRESSLY DISCLAIMED. ANY USE OF THIS TECHNICAL REPORT SHALL BE MADE ENTIRELY + AT THE USER’S OR IMPLEMENTER’S OWN RISK, AND NEITHER THE BROADBAND FORUM, NOR + ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY + USER, IMPLEMENTER, OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, + DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS TECHNICAL REPORT, + INCLUDING BUT NOT LIMITED TO, ANY CONSEQUENTIAL, SPECIAL, PUNITIVE, INCIDENTAL, + AND INDIRECT DAMAGES.

+ +

3. THIRD PARTY RIGHTS

+ +

Without limiting the generality of Section 2 above, BROADBAND FORUM ASSUMES NO + RESPONSIBILITY TO COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY + ASSERTIONS OF PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN + THE FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE TECHNICAL REPORT IN ITS + CURRENT, OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE + TECHNICAL REPORT, BROADBAND FORUM TAKES NO POSITION AS TO THE VALIDITY OR + INVALIDITY OF SUCH ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE + MADE ARE SO LISTED.

+ +

All copies of this Technical Report (or any portion hereof) must include the + notices, legends, and other provisions set forth on this page.

+ +

Issue History

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Issue NumberApproval DatePublication DateIssue EditorChanges
Issue 1September 2005Jeff Bernstein, 2Wire
Christele Bouchat, Alcatel
Tim Spets, Westell
Original
Issue 1 Amendment 1November 2006Jeff Bernstein, 2Wire
John Blackford, 2Wire
Mike Digdon, SupportSoft
Heather Kirksey, Motive
William Lupton, 2Wire
Anton Okmianski, Cisco
Clarification of original document
Issue 1 Amendment 2November 2008William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of data model definition XML Schema and normative XML common object and component definitions
Issue 1 Amendment 3September 2009William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of device type XML Schema
Issue 1 Amendment 4February 2010William Lupton, 2Wire
Paul Sigurdson, Broadband Forum
Moved data model definitions to TR-181 Issue 1
Issue 1 Amendment 5November 2010Paul Sigurdson, Broadband ForumReplaced definitions of named data types such as IPAddress with + references to normative XML.
Minor changes to DM Schema (v1.3) and DT Schema (v1.1).
Issue 1 Amendment 6July 2011Sarah Banks, Cisco
Andrea Colmegna, FASTWEB
Tim Spets, Motorola Mobility
Removed definition of proxying, now defined in TR-069.
Removed Common objects.
Alias Parameter Requirements added.
Issue 1 Amendment 7September 20137 October 2013William Lupton, CiscoAdded descriptions of new features in DM Schema (v1.4 & v1.5) and DT + Schema (v1.2 & v1.3).
Added Annex defining additional requirements for BBF standard data + models.
Issue 1 Amendment 816 March 201810 May 2018Jean-Didier Ott, Orange
William Lupton, Broadband Forum
Added support of USP (mountable objects).
Removed references to obsolete data models.
Moved device requirements to TR-069.
Issue 1 Amendment 9Schema updates; document not updated.
Issue 1 Amendment 105 November 20205 November 2020William Lupton, Broadband ForumConverted document to markdown.
Various editorial improvements.
+ +

Comments or questions about this Broadband Forum Technical Report should be + directed to info@broadband-forum.org.

+ +
+
+ +

Editors

+ +
+

William Lupton, Broadband Forum

+ +
+
+ +

Broadband User Services Work Area Director(s)

+ +
+

Jason Walls, QA Cafe
John Blackford, CommScope

+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+ +
+ + diff --git a/docs/00-index-contents.yaml b/docs/00-index-contents.yaml new file mode 100644 index 0000000..4e96a85 --- /dev/null +++ b/docs/00-index-contents.yaml @@ -0,0 +1,6 @@ +doctitle: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents' +date: 'Issue Date: November 2020' +subtitle: 'Issue: 1 Amendment 10 ' +title: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents' +author: [] +titleid: contents diff --git a/docs/01-index-executive-summary.htmf b/docs/01-index-executive-summary.htmf new file mode 100644 index 0000000..b744f73 --- /dev/null +++ b/docs/01-index-executive-summary.htmf @@ -0,0 +1,35 @@ + + +

TR-106 specifies data model guidelines to be followed by all CWMP [1] +Endpoints and USP [2] Agents. These guidelines include structural +requirements for the data hierarchy, requirements for versioning of data +models, and requirements for defining profiles.

+ +

In addition, TR-106 defines an XML Schema that as far as possible +embodies these guidelines, and which is used for defining all CWMP and +USP data models. This makes data model definitions rigorous, and helps +to reduce the danger that different implementations will interpret data +model definitions in different ways.

+ +

TR-106 also defines an XML Schema that allows a device to describe its +supported CWMP data models. This description is both specific and +detailed, allowing a Controller to know exactly what is supported by the +device, including any vendor-specific objects and parameters. Use of +this Schema enhances interoperability and significantly eases the +integration of new devices with a Controller. USP uses a different +mechanism (GetSupportedDM message) for the same purpose. That mechanism +is specified in TR-369 [2].

+ +
+

Important warning

+ +

The InternetGatewayDevice:1 (TR-098) and Device:1 (TR-181 Issue 1) Root +Data Models are now DEPRECATED and any reference to elements specific to +those models have been removed from this document.

+ +

The last revision of TR-106 to be used with those models is TR-106 +Amendment 7.

+ +

TR-157 data models Components have been incorporated into Device:2.12. +TR-157 is therefore also DEPRECATED.

+ diff --git a/docs/01-index-executive-summary.html b/docs/01-index-executive-summary.html new file mode 100644 index 0000000..2aca757 --- /dev/null +++ b/docs/01-index-executive-summary.html @@ -0,0 +1,217 @@ + + + + + + + + + + BBF – Executive Summary + + + + + + + + + + + +
+ + + + +
+

Executive Summary

+
+

TR-106 specifies data model guidelines to be followed by all CWMP [1] Endpoints and USP [2] Agents. These guidelines include structural requirements for the data hierarchy, requirements for versioning of data models, and requirements for defining profiles.

+

In addition, TR-106 defines an XML Schema that as far as possible embodies these guidelines, and which is used for defining all CWMP and USP data models. This makes data model definitions rigorous, and helps to reduce the danger that different implementations will interpret data model definitions in different ways.

+

TR-106 also defines an XML Schema that allows a device to describe its supported CWMP data models. This description is both specific and detailed, allowing a Controller to know exactly what is supported by the device, including any vendor-specific objects and parameters. Use of this Schema enhances interoperability and significantly eases the integration of new devices with a Controller. USP uses a different mechanism (GetSupportedDM message) for the same purpose. That mechanism is specified in TR-369 [2].

+
+

Important warning

+

The InternetGatewayDevice:1 (TR-098) and Device:1 (TR-181 Issue 1) Root Data Models are now DEPRECATED and any reference to elements specific to those models have been removed from this document.

+

The last revision of TR-106 to be used with those models is TR-106 Amendment 7.

+

TR-157 data models Components have been incorporated into Device:2.12. TR-157 is therefore also DEPRECATED.

+
+
+ +
+ + diff --git a/docs/01-index-executive-summary.yaml b/docs/01-index-executive-summary.yaml new file mode 100644 index 0000000..ed6cbda --- /dev/null +++ b/docs/01-index-executive-summary.yaml @@ -0,0 +1,6 @@ +doctitle: 'Executive Summary' +date: '' +subtitle: '' +title: 'Executive Summary' +author: [] +titleid: 'sec:executive-summary' diff --git a/docs/02-index-introduction.htmf b/docs/02-index-introduction.htmf new file mode 100644 index 0000000..2880596 --- /dev/null +++ b/docs/02-index-introduction.htmf @@ -0,0 +1,296 @@ + + +

CWMP

+ +

TR-069 [1] defines the generic requirements of the CPE WAN Management +Protocol (CWMP) methods which can be applied to any CWMP Endpoint. It is +intended to support a variety of different functionalities to manage a +collection of CPE, including the following primary capabilities:

+ +
    +
  • Auto-configuration and dynamic service provisioning

  • +
  • Software/firmware image management

  • +
  • Status and performance monitoring

  • +
  • Diagnostics

  • +
+ +

The ability to manage the home network remotely has a number of benefits +including reducing the costs associated with activation and support of +broadband services, improving time-to-market for new products and +services, and improving the user experience.

+ +

The following figure places TR-069 in the end-to-end management +architecture:

+ +
+ +
Figure 1: CWMP Positioning in the End-to-End Architecture
+
+ +

The ACS is a server that resides in the network and manages devices in +the subscriber premises. It uses the methods, or RPCs, defined in TR-069 +to get and set the state of the device, initiate diagnostic tests, +download and upload files, and manage events. Some portions of this +state are common across managed devices and some are relevant only to +certain device types or services.

+ +

USP

+ +

The User Services Platform is made of a network +of USP Controllers and USP Agents to allow applications to manipulate +service elements (i.e. objects). It represents the evolution of CWMP +into the following use cases:

+ +
    +
  • Improvements on TR-069 based on deployment experience

  • +
  • Multi-tenant management of a given endpoint (that is, manipulation +by multiple controllers)

  • +
  • Application to additional market spaces, including consumer +electronics and the Internet of Things

  • +
+ +

An agent exposes service elements to one or more controllers, either +directly or by proxy. An application could use a Controller to manage a +provider controlled system, as in a CWMP ACS, or to act as a user portal +in the cloud, on a gateway, or accessed through a smart phone. Agents +and controllers can also be used in tandem to create a peer-to-peer +network of smart applications, such as an automated smart home.

+ +
+ +
Figure 2: USP Architecture Overview
+
+ +

USP was designed in a modular manner, and can make use of the CWMP data +model and data model schema in order to represent an evolution of CWMP +into the world of consumer electronics, virtual services, and the +Internet of Things. As such, this document describes how to use the data +model schema in both the context of CWMP and USP.

+ +

Specification Structure

+ +

Figure 3 shows the overall specification structure for the CWMP [1] and +USP [2] family of standards (as currently defined). Please note that +this will gradually become out of date as new documents are published.

+ +
+ +
Figure 3: Specification Structure
+
+ +

TR-069 [1] defines the generic requirements of the CWMP methods which +can be applied to any CWMP Endpoint. TR-369 [2] does the same for USP +Agents. TR-106 (this document) specifies a baseline object structure to +be supported by any CWMP Endpoint or USP Agent (referred to generically +as an Agent). It specifies how to structure and define data models, +which are collections of objects and parameters on which the generic +methods act to configure, diagnose, and monitor the state of specific +devices and services. The actual data models are defined in their own +specifications.

+ +

For a particular type of device, it is expected that the baseline +defined in a document such as TR-181i2 [3] would be augmented with +additional objects and parameters specific to the device type. The data +model used in any Agent MUST follow the guidelines described in this +document. These guidelines include the following aspects:

+ +
    +
  • Structural requirements for the data hierarchy

  • +
  • Requirements for versioning of data models

  • +
  • Requirements for defining profiles

  • +
+ +

In addition, this document defines two XML Schemas:

+ +
    +
  • An XML Schema that as far as possible embodies these guidelines, and +which is used for defining all CWMP and USP data models. This makes +data model definitions rigorous, and helps to reduce the danger that +different implementations will interpret data model definitions in +different ways.

  • +
  • An XML Schema that allows a device to describe its supported CWMP +data models. This description is both specific and detailed, +allowing an ACS to know exactly what is supported by the CPE, +including any vendor-specific objects and parameters. Use of this +Schema enhances interoperability and significantly eases the +integration of new devices with an ACS.

    + +

    Please note that USP uses a different mechanism (GetSupportedDM +message) for the same purpose. It is specified in TR-369 [2].

  • +
+ +

1.1 Terminology

+ +

The following terminology is used throughout this Technical Report.

+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ACSAuto-Configuration Server. This is a component in the broadband network responsible for CWMP auto-configuration of the CPE for advanced services.
AgentA generic term that refers (as appropriate) to either a CWMP Endpoint or to a USP Agent.
BBFThe Broadband Forum.
Base Supported Data ModelThe Data Model that is supported by all CPE of a given make, model and firmware version. This refers to the Objects, Parameters, Commands and/or Events that have code support in the current firmware.
CPECustomer Premises Equipment; refers (as appropriate) to any CWMP-enabled [1] or USP-enabled [2] device and therefore covers both Internet Gateway devices and LAN-side end devices.
CommandA named element allowing a USP Controller to execute an operation on a USP Agent. This concept does not apply to CWMP, which uses Objects and/or Parameters to simulate operations.
ComponentA named collection of Objects, Parameters, Commands, Events and/or Profiles that can be included anywhere within a Data Model.
ControllerA generic term that refers (as appropriate) to either a CWMP ACS or a USP Controller.
Current Supported Data ModelThe Data Model that is currently supported by an individual CPE, i.e. the Base Supported Data Model plus any additional Objects, Parameters, Commands and/or Events supported by extra modules that have been installed on the CPE. This refers to the Objects, Parameters, Commands and/or Events that have code support in the CPE.
CWMPCPE WAN Management Protocol. Defined in TR-069 [1], CWMP is a communication protocol between an ACS and CWMP-enabled CPE that defines a mechanism for secure auto-configuration of a CPE and other CPE management functions in a common framework.
CWMP EndpointA CWMP termination point used by a CWMP-enabled CPE for communication with the ACS.
Data ModelA hierarchical set of Objects, Parameters, Commands and/or Events that define the managed Objects accessible via a particular Agent.
DeviceUsed here as a synonym for CPE.
DM InstanceData Model Schema instance document. This is an XML document that conforms to the DM Schema and to any additional rules specified in or referenced by the DM Schema.
DM SchemaData Model Schema. This is the XML Schema [4] that is used for defining data models for use with CWMP and USP.
DT InstanceDevice Type Schema instance document. This is an XML document that conforms to the DT Schema and to any additional rules specified in or referenced by the DT Schema. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).
DT SchemaDevice Type Schema. This is the XML Schema [4] that is used for describing a Device’s Supported Data Model. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).
EventAn indication that something of interest has happened that requires the Agent to notify the Controller.
Instantiated Data ModelThe Data Model that currently exists on an individual CPE. This refers to the Object instances, Parameters, Commands and/or Events that currently exist within the data model. It can be thought of as the Current Supported Data Model with all the “{i}” placeholders expanded to be the actual Instance Numbers. For example, “Device.Services.ABCService.{i}.” in the Current Supported Data Model might correspond to “Device.Services.ABCService.1.” and “Device.Services.ABCService.2.” in the Instantiated Data Model.
Instance AliasA writeable string that uniquely identifies an instance within a Multi-Instance Object
Instance IdentifierA value that uniquely identifies an instance within a Multi-Instance Object. It is either an Instance Number or an Instance Alias.
Instance NumberA read-only positive integer (>=1) that uniquely identifies an instance within a Multi-Instance Object.
Mountable ObjectAn Object that is defined in a DM Instance as a direct child of the Root Object, but that can also exist as a child of a Mount Point in the Instantiated Data Model of a USP Agent. This concept does not apply to CWMP.
Mount PointAn Object that is defined in a DM Instance as being able to have Mountable Objects as children in the Instantiated Data Model of a USP Agent. By extension, one of the instances of that object in the Instantiated Data Model. This concept does not apply to CWMP.
Multi-Instance ObjectAn Object that can have multiple instances, all of which are located at the same level within the name hierarchy. Each instance is identified by an Instance Identifier.
ObjectAn internal node in the name hierarchy, i.e., a node that can have Object, Parameter, Command and/or Event children. An Object name is a Path Name.
ParameterA name-value pair that represents part of a CPE or USP Agent’s configuration or status. A Parameter name is a Path Name.
Path NameA name that has a hierarchical structure similar to files in a directory, with each level separated by a “.” (dot). References an Object, Parameter, Command or Event.
ProfileA named collection of requirements relating to a given Root Object, Service Object or Component.
RPCRemote Procedure Call.
Root ObjectThe top-level Object of a CPE’s Data Model that contains all of the manageable Objects. The name of the Root Object is “Device.”.
Service ElementA Service Element represents a piece of service functionality that is exposed by an Agent, usually represented by one or more Objects.
Service ObjectThe top-most Object associated with a specific service within which all Objects, Parameters, Commands and Events associated with the service are contained.
Supported Data ModelRefers to either Base Supported Data Model or Current Supported Data Model, depending on the context.
URIUniform Resource Identifier.
URLUniform Resource Locator.
USPUniversal Service Platform. Defined in TR-369, USP is an evolution of CWMP that allows applications to manipulate Service Elements in a network of Controllers and Agents.
USP AgentA USP Agent is a USP Endpoint that exposes Service Elements to one or more USP Controllers.
USP ControllerA USP Controller is a USP Endpoint that manipulates Service Elements through one or more USP Agents.
USP EndpointA USP Endpoint is a termination point for a USP message.
+ +

1.2 Document Conventions

+ +

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL +NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and +“OPTIONAL” in this document are to be interpreted as described in [5].

+ diff --git a/docs/02-index-introduction.html b/docs/02-index-introduction.html new file mode 100644 index 0000000..4202045 --- /dev/null +++ b/docs/02-index-introduction.html @@ -0,0 +1,430 @@ + + + + + + + + + + BBF – 1 Introduction + + + + + + + + + + + +
+ + + + +
+

1 Introduction

+
+ +

CWMP

+

TR-069 [1] defines the generic requirements of the CPE WAN Management Protocol (CWMP) methods which can be applied to any CWMP Endpoint. It is intended to support a variety of different functionalities to manage a collection of CPE, including the following primary capabilities:

+
    +
  • Auto-configuration and dynamic service provisioning

  • +
  • Software/firmware image management

  • +
  • Status and performance monitoring

  • +
  • Diagnostics

  • +
+

The ability to manage the home network remotely has a number of benefits including reducing the costs associated with activation and support of broadband services, improving time-to-market for new products and services, and improving the user experience.

+

The following figure places TR-069 in the end-to-end management architecture:

+
+
Figure 1: CWMP Positioning in the End-to-End Architecture
+
+

The ACS is a server that resides in the network and manages devices in the subscriber premises. It uses the methods, or RPCs, defined in TR-069 to get and set the state of the device, initiate diagnostic tests, download and upload files, and manage events. Some portions of this state are common across managed devices and some are relevant only to certain device types or services.

+

USP

+

The User Services Platform is made of a network of USP Controllers and USP Agents to allow applications to manipulate service elements (i.e. objects). It represents the evolution of CWMP into the following use cases:

+
    +
  • Improvements on TR-069 based on deployment experience

  • +
  • Multi-tenant management of a given endpoint (that is, manipulation by multiple controllers)

  • +
  • Application to additional market spaces, including consumer electronics and the Internet of Things

  • +
+

An agent exposes service elements to one or more controllers, either directly or by proxy. An application could use a Controller to manage a provider controlled system, as in a CWMP ACS, or to act as a user portal in the cloud, on a gateway, or accessed through a smart phone. Agents and controllers can also be used in tandem to create a peer-to-peer network of smart applications, such as an automated smart home.

+
+
Figure 2: USP Architecture Overview
+
+

USP was designed in a modular manner, and can make use of the CWMP data model and data model schema in order to represent an evolution of CWMP into the world of consumer electronics, virtual services, and the Internet of Things. As such, this document describes how to use the data model schema in both the context of CWMP and USP.

+

Specification Structure

+

Figure 3 shows the overall specification structure for the CWMP [1] and USP [2] family of standards (as currently defined). Please note that this will gradually become out of date as new documents are published.

+
+
Figure 3: Specification Structure
+
+

TR-069 [1] defines the generic requirements of the CWMP methods which can be applied to any CWMP Endpoint. TR-369 [2] does the same for USP Agents. TR-106 (this document) specifies a baseline object structure to be supported by any CWMP Endpoint or USP Agent (referred to generically as an Agent). It specifies how to structure and define data models, which are collections of objects and parameters on which the generic methods act to configure, diagnose, and monitor the state of specific devices and services. The actual data models are defined in their own specifications.

+

For a particular type of device, it is expected that the baseline defined in a document such as TR-181i2 [3] would be augmented with additional objects and parameters specific to the device type. The data model used in any Agent MUST follow the guidelines described in this document. These guidelines include the following aspects:

+
    +
  • Structural requirements for the data hierarchy

  • +
  • Requirements for versioning of data models

  • +
  • Requirements for defining profiles

  • +
+

In addition, this document defines two XML Schemas:

+
    +
  • An XML Schema that as far as possible embodies these guidelines, and which is used for defining all CWMP and USP data models. This makes data model definitions rigorous, and helps to reduce the danger that different implementations will interpret data model definitions in different ways.

  • +
  • An XML Schema that allows a device to describe its supported CWMP data models. This description is both specific and detailed, allowing an ACS to know exactly what is supported by the CPE, including any vendor-specific objects and parameters. Use of this Schema enhances interoperability and significantly eases the integration of new devices with an ACS.

    +

    Please note that USP uses a different mechanism (GetSupportedDM message) for the same purpose. It is specified in TR-369 [2].

  • +
+

1.1 Terminology

+

The following terminology is used throughout this Technical Report.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ACSAuto-Configuration Server. This is a component in the broadband network responsible for CWMP auto-configuration of the CPE for advanced services.
AgentA generic term that refers (as appropriate) to either a CWMP Endpoint or to a USP Agent.
BBFThe Broadband Forum.
Base Supported Data ModelThe Data Model that is supported by all CPE of a given make, model and firmware version. This refers to the Objects, Parameters, Commands and/or Events that have code support in the current firmware.
CPECustomer Premises Equipment; refers (as appropriate) to any CWMP-enabled [1] or USP-enabled [2] device and therefore covers both Internet Gateway devices and LAN-side end devices.
CommandA named element allowing a USP Controller to execute an operation on a USP Agent. This concept does not apply to CWMP, which uses Objects and/or Parameters to simulate operations.
ComponentA named collection of Objects, Parameters, Commands, Events and/or Profiles that can be included anywhere within a Data Model.
ControllerA generic term that refers (as appropriate) to either a CWMP ACS or a USP Controller.
Current Supported Data ModelThe Data Model that is currently supported by an individual CPE, i.e. the Base Supported Data Model plus any additional Objects, Parameters, Commands and/or Events supported by extra modules that have been installed on the CPE. This refers to the Objects, Parameters, Commands and/or Events that have code support in the CPE.
CWMPCPE WAN Management Protocol. Defined in TR-069 [1], CWMP is a communication protocol between an ACS and CWMP-enabled CPE that defines a mechanism for secure auto-configuration of a CPE and other CPE management functions in a common framework.
CWMP EndpointA CWMP termination point used by a CWMP-enabled CPE for communication with the ACS.
Data ModelA hierarchical set of Objects, Parameters, Commands and/or Events that define the managed Objects accessible via a particular Agent.
DeviceUsed here as a synonym for CPE.
DM InstanceData Model Schema instance document. This is an XML document that conforms to the DM Schema and to any additional rules specified in or referenced by the DM Schema.
DM SchemaData Model Schema. This is the XML Schema [4] that is used for defining data models for use with CWMP and USP.
DT InstanceDevice Type Schema instance document. This is an XML document that conforms to the DT Schema and to any additional rules specified in or referenced by the DT Schema. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).
DT SchemaDevice Type Schema. This is the XML Schema [4] that is used for describing a Device’s Supported Data Model. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).
EventAn indication that something of interest has happened that requires the Agent to notify the Controller.
Instantiated Data ModelThe Data Model that currently exists on an individual CPE. This refers to the Object instances, Parameters, Commands and/or Events that currently exist within the data model. It can be thought of as the Current Supported Data Model with all the “{i}” placeholders expanded to be the actual Instance Numbers. For example, “Device.Services.ABCService.{i}.” in the Current Supported Data Model might correspond to “Device.Services.ABCService.1.” and “Device.Services.ABCService.2.” in the Instantiated Data Model.
Instance AliasA writeable string that uniquely identifies an instance within a Multi-Instance Object
Instance IdentifierA value that uniquely identifies an instance within a Multi-Instance Object. It is either an Instance Number or an Instance Alias.
Instance NumberA read-only positive integer (>=1) that uniquely identifies an instance within a Multi-Instance Object.
Mountable ObjectAn Object that is defined in a DM Instance as a direct child of the Root Object, but that can also exist as a child of a Mount Point in the Instantiated Data Model of a USP Agent. This concept does not apply to CWMP.
Mount PointAn Object that is defined in a DM Instance as being able to have Mountable Objects as children in the Instantiated Data Model of a USP Agent. By extension, one of the instances of that object in the Instantiated Data Model. This concept does not apply to CWMP.
Multi-Instance ObjectAn Object that can have multiple instances, all of which are located at the same level within the name hierarchy. Each instance is identified by an Instance Identifier.
ObjectAn internal node in the name hierarchy, i.e., a node that can have Object, Parameter, Command and/or Event children. An Object name is a Path Name.
ParameterA name-value pair that represents part of a CPE or USP Agent’s configuration or status. A Parameter name is a Path Name.
Path NameA name that has a hierarchical structure similar to files in a directory, with each level separated by a “.” (dot). References an Object, Parameter, Command or Event.
ProfileA named collection of requirements relating to a given Root Object, Service Object or Component.
RPCRemote Procedure Call.
Root ObjectThe top-level Object of a CPE’s Data Model that contains all of the manageable Objects. The name of the Root Object is “Device.”.
Service ElementA Service Element represents a piece of service functionality that is exposed by an Agent, usually represented by one or more Objects.
Service ObjectThe top-most Object associated with a specific service within which all Objects, Parameters, Commands and Events associated with the service are contained.
Supported Data ModelRefers to either Base Supported Data Model or Current Supported Data Model, depending on the context.
URIUniform Resource Identifier.
URLUniform Resource Locator.
USPUniversal Service Platform. Defined in TR-369, USP is an evolution of CWMP that allows applications to manipulate Service Elements in a network of Controllers and Agents.
USP AgentA USP Agent is a USP Endpoint that exposes Service Elements to one or more USP Controllers.
USP ControllerA USP Controller is a USP Endpoint that manipulates Service Elements through one or more USP Agents.
USP EndpointA USP Endpoint is a termination point for a USP message.
+

1.2 Document Conventions

+

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [5].

+
+ +
+ + diff --git a/docs/02-index-introduction.yaml b/docs/02-index-introduction.yaml new file mode 100644 index 0000000..b1c6b6d --- /dev/null +++ b/docs/02-index-introduction.yaml @@ -0,0 +1,6 @@ +doctitle: '1 Introduction' +date: '' +subtitle: '' +title: '1 Introduction' +author: [] +titleid: 'sec:introduction' diff --git a/docs/03-index-architecture.htmf b/docs/03-index-architecture.htmf new file mode 100644 index 0000000..0da0c78 --- /dev/null +++ b/docs/03-index-architecture.htmf @@ -0,0 +1,451 @@ + + +

All elements described hereunder apply to both CWMP and USP, unless +specifically mentioned otherwise.

+ +

2.1 Data Hierarchy

+ +

The data model for a Agent will follow a common set of structural +requirements. The detailed structure depends on the nature of the Agent.

+ +

An Agent’s data model will always have a single Root Object, which will +be called “Device.”.

+ +

The Root Object contains three types of sub-elements: the Objects +defined in TR-181i2 [3], Components defined in TR-181i2 or other +specifications such as TR-143 [6], and a single “Services” object that +contains all Service Objects associated with specific services.

+ +

A single Agent might include more than one Service Object. For example, +a device that serves both as a VoIP endpoint and a game device, might +include both VoIP-specific and game-specific Service Objects.

+ +

A single Agent might also include more than one instance of the same +type of Service Object. An example of when this might be appropriate is +an Agent that provides an instance of the TR-140 [7] StorageService +for each of the device’s attached disks.

+ +

2.1.1 Data Hierarchy Requirements

+ +

A CWMP or USP data model MUST adhere to the following structural +requirements:

+ +
    +
  1. A root data model definition MUST contain exactly one Root Object, +called “Device.”.

  2. +
  3. A Root Object definition MUST contain exactly one “Services.” +object.

  4. +
  5. A service data model definition MUST define an object hierarchy that +starts just under the “Device.Services.” object.

  6. +
  7. For each Multi-Instance Object defined, a data model MUST also +define a corresponding parameter indicating the number of instances +of the Multi-Instance Object. The name of this parameter MUST be the +name of the object concatenated with “NumberOfEntries”. This +parameter MUST appear in the same object as the Multi-Instance +Object it is related to.

  8. +
+ +

Formally, the top level of the data hierarchy is defined as follows:

+ +
    Element = "Device"
+            | "Device." TR-181DeviceObject
+            | "Device.Services." ServiceObject "NumberOfEntries"
+            | "Device.Services." ServiceObject ".{i}"
+
+    TR-181DeviceObject = // As defined in TR-181i2, e.g. "UserInterface" or "ManagementServer"
+
+    ServiceObject = // As defined in other specs, e.g. TR-140
+ +

2.1.2 The Supported Data Model and the Instantiated Data Model

+ +

There is a distinction between an Agent’s Supported Data Model and its +Instantiated Data Model.

+ +
    +
  • The Supported Data Model is those Objects and/or Parameters that +have code support in the Agent.

  • +
  • The Instantiated Data Model is those Object instances and/or +Parameters that currently exist.

  • +
+ +

TR-181i2 [3] defines a SupportedDataModel Object that allows an Agent +to indicate its Supported Data Model to a Controller, which assists the +Controller in managing that device.

+ +

The SupportedDataModel object has the following properties:

+ +
    +
  1. It contains a list of URLs, each of which allows the Controller to +determine details of part of the Supported Data Model.

  2. +
  3. When the Supported Data Model changes, e.g. because software is +loaded or unloaded, entries are added to or removed from this list +of URLs.

  4. +
+ +

This object is not used with USP. TR-369 [2] defines the +GetSupportedDM message to provide this information.

+ +

2.2 Object Versioning

+ +

To allow the definition of a Service Object or Root Object to change +over time, the definition of a Service Object or Root Object MUST have +an explicitly specified version.

+ +

Version numbering of Service Objects and Root Objects is defined to use +a major/minor version numbering convention. The object version is +defined as a pair of integers, where one integer represents the major +version, and the second integer represents the minor version. The +version MUST be written with the two integers separated by a dot +(Major.Minor).

+ +

The first version of a given object SHOULD be defined as version “1.0”.

+ +

For each subsequent version of the object, if the later version is +compatible with the previous version, then the major version SHOULD +remain unchanged, and the minor version SHOULD be incremented by one. +For example, the next compatible version after “2.17” would be “2.18”. +The requirements for a version to be considered compatible with an +earlier version are described in Section 2.2.1.

+ +

For each subsequent version of the object, if the later version is not +compatible with the previous version, then the major version MUST +increment by one, and the minor version MAY reset back to zero. For +example, the next incompatible version after “2.17” might be “3.0”.

+ +

2.2.1 Requirements for Compatible Versions

+ +

For one version of an object to be considered compatible with another +version, the later version MUST be a strict superset of the earlier +version. Using major/minor versioning, this requirement applies only +between minor versions that share the same major version.

+ +

More specifically, this requires the following of the later version with +respect to all earlier versions to which it is to be compatible:

+ +
    +
  • The later version MAY add objects and parameters not previously in +any earlier version, but MUST NOT remove objects or parameters +already defined in earlier versions.

  • +
  • The later version MUST NOT modify the definition of any parameter or +object already defined in an earlier version (unless the original +definition was clearly in error and has to be modified as an erratum +or clarified through a corrigendum process).

  • +
  • The later version MUST NOT require any of the objects or parameters +that have been added since the earliest compatible version to be +explicitly operated upon by the Controller to ensure proper +operation of the device (except those functions specifically +associated with functionality added in later versions). That is, the +later version will accommodate a Controller that knows nothing of +elements added in later versions.

  • +
+ +

The goal of the above definition of compatibility is intended to ensure +bi-directional compatibility between a Controller and Agent. +Specifically that:

+ +
    +
  • If a Controller supports only an earlier version of an object as +compared to the version supported by the Agent, the Controller can +successfully manage that object in the Agent as if it were the +earlier version.

  • +
  • If an Agent supports only an earlier version of an object as +compared to the version supported by a Controller, the Controller +can successfully manage that object in the Agent as if it were the +later version (without support for new components defined only in +later versions).

  • +
+ +

2.2.2 Version Notation

+ +

For objects, the following notation is defined to identify specific +versions:

+ + ++++ + + + + + + + + + + + + + + + + + + + +
NotationDescriptionExample
ObjectName:Major.MinorRefers to a specific +version of the object.Device:2.0
ObjectName:MajorRefers to any minor version +of the object with the specified +major version.Device:2
ObjectNameRefers to any version of the object.Device
+ +

Note that the version notation defined here is only to be used for +purposes of documentation. The actual names of objects and parameters in +the data model MUST NOT include version numbers.

+ +

2.3 Profiles

+ +

Note: Originally, profiles were seen as a means of limiting the +variability that a Controller needs to accommodate among various devices +that it might manage. This feature is now provided:

+ +
    +
  • For CWMP, by the TR-181i2 [3] SupportedDataModel object (see +Section 2.1.2) and associated Device Type XML documents (DT +Instances).

  • +
  • For USP, by the TR-369 [2] GetSupportedDM message.

  • +
+ +

A profile is a named collection of requirements associated with a given +object. An Agent can adhere to zero or more profiles. Adherence to a +profile means that the Agent supports all of the requirements defined by +that profile. The use of profiles gives Service Providers a shorthand +means of specifying data model support requirements.

+ +

The following sections define the conventions to be used when defining +profiles associated with Data Models.

+ +

2.3.1 Scope of Profiles

+ +

A given profile is defined only in the context of a specific Service +Object or Root Object with a specific major version. For each profile +definition, the specific object name and major version to which the +profile is to apply MUST be explicitly identified.

+ +

A profile’s name MUST be unique among profiles defined for the same +object and major version, but a name MAY be reused to define a different +profile for a distinct combination of object name and major version. For +example, if we define profile “A” associated with object “X:2” (major +version 2 of object X), the same name “A” might be used to define a +different profile for object “Y:1” or for object “X:3”.

+ +

A given profile is defined in association with a minimum minor version +of a given object. The minimum REQUIRED version of an object is the +minimum version that includes all of the REQUIRED elements defined by +the profile. For each profile definition, the specific minimum version +MUST be explicitly identified.

+ +

2.3.2 Multiple Profile Support

+ +

For a given type of Service Object or Root Object, multiple profiles MAY +be defined. Profiles MAY be defined that have either independent or +overlapping requirements.

+ +

2.3.3 Profile Versions

+ +

To allow the definition of a profile to change over time, the definition +of every profile MUST have an associated version number.

+ +

Version numbering of profiles is defined to use a minor-only version +numbering convention. That is, for a given profile name, each successive +version MUST be compatible with all earlier versions. Any incompatible +change to a profile MUST use a different profile name.

+ +

For one version of a profile to be considered compatible with another +version, the later version MUST be a strict superset of the earlier +version. This requires the following of the later version with respect +to all earlier versions to which it is to be compatible:

+ +
    +
  • The later version MAY add requirements that were not in earlier +versions of the profile, but MUST NOT remove requirements.

  • +
  • The later version MAY remove one or more conditions that had +previously been placed on a requirement. For example, if a previous +profile REQUIRED X only if condition A was True, then the later +profile might require X unconditionally.

  • +
+ +

For profiles, the following notation is defined to identify specific +versions:

+ + ++++ + + + + + + + + + + + + + + +
NotationDescriptionExample
ProfileName:VersionRefers to a specific version of the +profile.Baseline:1
ProfileNameRefers to any version of the profile.Baseline
+ +

ProfileName MUST start with a letter or underscore, and subsequent +characters MUST be letters, digits, underscores or hyphens. The terms +“letter” and “digit” are as defined in the XML +specification [Appendix B/8].

+ +

Hyphens can easily be confused with the discretionary hyphens that are +sometimes inserted by hyphenation algorithms. For this reason, +ProfileName SHOULD NOT include any hyphens. In BBF standards, ProfileName will +always start with an upper-case letter (or an underscore for an internal profile) and will never include any +hyphens (see C.3.1 for the corresponding normative +requirement).

+ +

2.3.4 Baseline Profiles

+ +

For every Service Object (and Root Object) there SHOULD be at least one +profile defined. In many cases it is desirable to define a Baseline +profile that indicates the minimum requirements REQUIRED for any device +that supports that Object.

+ +

2.3.5 Types of Requirements in a Profile

+ +

Because a profile is defined within the context of a single Object (and +major version), all of the requirements associated with the profile MUST +be specific to the data model associated with that object.

+ +

Profile requirements can include any of the following types of +requirements associated with an Object’s data model:

+ +
    +
  • A requirement for read support of a Parameter.

  • +
  • A requirement for write support of a Parameter.

  • +
  • A requirement for support of a Command.

  • +
  • A requirement for support of a sub-Object contained within the +overall Object.

  • +
  • A requirement for the ability to add or remove instances of a +sub-Object.

  • +
  • A requirement to support active notification for a Parameter.

  • +
  • A requirement to support access control for a given Parameter.

  • +
+ +

For each of the requirement categories listed above, a profile can +define the requirement unconditionally, or can place one or more +conditions on the requirement. For example, a profile might require that +a Parameter be supported for reading only if the device supports some +other Parameter or Object (one that is not itself REQUIRED by the +profile). Such conditions will be directly related to the data model of +the overall object associated with the profile.

+ +

Because a device has to be able to support multiple profiles, all +profiles MUST be defined such that they are non-contradictory. As a +result, profiles MUST only define minimum requirements to be met, and +MUST NOT specify negative requirements. That is, profiles will not +include requirements that specify something that is not to be supported +by the device, or requirements that exclude a range of values.

+ +

2.4 DEPRECATED and OBSOLETED Items

+ +

The key word “DEPRECATED” in a data model definition is to be +interpreted as follows: This term refers to an object, parameter or +parameter value that is defined in the current version of the standard +but is meaningless, inappropriate, or otherwise unnecessary. It is +intended that such objects, parameters or parameter values will be +removed from the next major version of the data model. Requirements on +how to interpret or implement deprecated objects, parameters or +parameter values are given below. For more information on how to +interpret or implement specific deprecated objects, parameters or +parameter values, refer to the definition of the object or parameter.

+ +

The key word “OBSOLETED” in a data model definition is to be interpreted +as follows: This term refers to an object, parameter or parameter value +that meets the requirements for being deprecated, and in addition is +obsolete. Such objects, parameters or parameter values can be removed +from a later minor version of a data model, or from a later version of a +profile, without this being regarded as breaking backwards compatibility +rules. Requirements on how to interpret or implement obsoleted objects, +parameters or parameter values are given below. For more information on +how to interpret or implement specific obsoleted objects, parameters or +parameter values, refer to the definition of the object or parameter.

+ +

2.4.1 Requirements for DEPRECATED Items

+ +

This section defines requirements that apply to all DEPRECATED objects, +parameters and parameter values unless specifically overridden by the +object or parameter definition.

+ +

Data model requirements:

+ +
    +
  1. The definition of a DEPRECATED parameter, object or parameter value +MUST include an explanation of why the item is deprecated.

  2. +
  3. The definition of a DEPRECATED parameter, object or parameter value +MAY specify further requirements relating to the item; such +requirements MAY override general Agent or Controller requirements +regarding DEPRECATED elements specified in TR-069 [1] or TR-369 +[2].

  4. +
+ +

Agent requirements:

+ +
    +
  1. A DEPRECATED parameter MUST have a value which is valid for its data +type and fulfils any range (for numeric parameters), length (for +string, base64 or hexBinary parameters) and enumerated value (for +string parameters) requirements.

  2. +
  3. Detailed behavioral requirements for a DEPRECATED parameter, e.g. +that its value is a unique key, MAY be ignored by the Agent.

  4. +
  5. The Agent MUST, if such operations are permitted by the data model +definition, permit creation of DEPRECATED objects, modification of +DEPRECATED parameters, and setting of DEPRECATED parameter values. +However, it MAY choose not to apply such changes to its operational +state.

  6. +
  7. Regardless of whether DEPRECATED changes are applied to the Agent’s +operational state, a read of a DEPRECATED writable parameter SHOULD +return the value that was last written, i.e. the Agent is expected +to store the value even if it chooses not to apply it to its +operational state.

  8. +
  9. The Agent MAY reject an attempt by a Controller to set any parameter +to a DEPRECATED value.

  10. +
+ +

Controller requirements:

+ +
    +
  1. The Controller SHOULD NOT create DEPRECATED objects, modify +DEPRECATED parameters, or set DEPRECATED parameter values.

  2. +
  3. The Controller SHOULD ignore DEPRECATED objects, parameters and +parameter values.

  4. +
  5. The Controller SHOULD NOT set a DEPRECATED parameter to a value that +is invalid for its data type or fails to fulfill any range (for +numeric parameters), length (for string, base64 or hexBinary +parameters) or enumerated value (for string parameters) +requirements.

  6. +
  7. The Controller SHOULD NOT set any parameter to a DEPRECATED value.

  8. +
+ +

2.4.2 Requirements for OBSOLETED Items

+ +

This section defines requirements that apply to all OBSOLETED objects, +parameters or parameter values unless specifically overridden by the +object or parameter definition.

+ +

An OBSOLETED object, parameter or parameter value MUST meet all the +requirements of the previous section. In addition, the following +requirements apply.

+ +
    +
  1. An OBSOLETED object, parameter or parameter value MAY be removed +from a later minor version of a data model without this being +regarded as breaking backwards compatibility rules.

  2. +
  3. An OBSOLETED object, parameter or parameter value MUST NOT be +removed from the current version of a profile, but MAY be removed +from a later version of a profile without this being regarded as +breaking backwards compatibility rules.

  4. +
  5. A data model definition MUST include a list of those OBSOLETED +objects, parameters or parameter values that have been removed from +the data model or from its profiles. This is to prevent future +namespace conflicts.

  6. +
+ diff --git a/docs/03-index-architecture.html b/docs/03-index-architecture.html new file mode 100644 index 0000000..9e2271b --- /dev/null +++ b/docs/03-index-architecture.html @@ -0,0 +1,425 @@ + + + + + + + + + + BBF – 2 Architecture + + + + + + + + + + + +
+ + + + +
+

2 Architecture

+
+ +

All elements described hereunder apply to both CWMP and USP, unless specifically mentioned otherwise.

+

2.1 Data Hierarchy

+

The data model for a Agent will follow a common set of structural requirements. The detailed structure depends on the nature of the Agent.

+

An Agent’s data model will always have a single Root Object, which will be called “Device.”.

+

The Root Object contains three types of sub-elements: the Objects defined in TR-181i2 [3], Components defined in TR-181i2 or other specifications such as TR-143 [6], and a single “Services” object that contains all Service Objects associated with specific services.

+

A single Agent might include more than one Service Object. For example, a device that serves both as a VoIP endpoint and a game device, might include both VoIP-specific and game-specific Service Objects.

+

A single Agent might also include more than one instance of the same type of Service Object. An example of when this might be appropriate is an Agent that provides an instance of the TR-140 [7] StorageService for each of the device’s attached disks.

+

2.1.1 Data Hierarchy Requirements

+

A CWMP or USP data model MUST adhere to the following structural requirements:

+
    +
  1. A root data model definition MUST contain exactly one Root Object, called “Device.”.

  2. +
  3. A Root Object definition MUST contain exactly one “Services.” object.

  4. +
  5. A service data model definition MUST define an object hierarchy that starts just under the “Device.Services.” object.

  6. +
  7. For each Multi-Instance Object defined, a data model MUST also define a corresponding parameter indicating the number of instances of the Multi-Instance Object. The name of this parameter MUST be the name of the object concatenated with “NumberOfEntries”. This parameter MUST appear in the same object as the Multi-Instance Object it is related to.

  8. +
+

Formally, the top level of the data hierarchy is defined as follows:

+
    Element = "Device"
+            | "Device." TR-181DeviceObject
+            | "Device.Services." ServiceObject "NumberOfEntries"
+            | "Device.Services." ServiceObject ".{i}"
+
+    TR-181DeviceObject = // As defined in TR-181i2, e.g. "UserInterface" or "ManagementServer"
+
+    ServiceObject = // As defined in other specs, e.g. TR-140
+

2.1.2 The Supported Data Model and the Instantiated Data Model

+

There is a distinction between an Agent’s Supported Data Model and its Instantiated Data Model.

+
    +
  • The Supported Data Model is those Objects and/or Parameters that have code support in the Agent.

  • +
  • The Instantiated Data Model is those Object instances and/or Parameters that currently exist.

  • +
+

TR-181i2 [3] defines a SupportedDataModel Object that allows an Agent to indicate its Supported Data Model to a Controller, which assists the Controller in managing that device.

+

The SupportedDataModel object has the following properties:

+
    +
  1. It contains a list of URLs, each of which allows the Controller to determine details of part of the Supported Data Model.

  2. +
  3. When the Supported Data Model changes, e.g. because software is loaded or unloaded, entries are added to or removed from this list of URLs.

  4. +
+

This object is not used with USP. TR-369 [2] defines the GetSupportedDM message to provide this information.

+

2.2 Object Versioning

+

To allow the definition of a Service Object or Root Object to change over time, the definition of a Service Object or Root Object MUST have an explicitly specified version.

+

Version numbering of Service Objects and Root Objects is defined to use a major/minor version numbering convention. The object version is defined as a pair of integers, where one integer represents the major version, and the second integer represents the minor version. The version MUST be written with the two integers separated by a dot (Major.Minor).

+

The first version of a given object SHOULD be defined as version “1.0”.

+

For each subsequent version of the object, if the later version is compatible with the previous version, then the major version SHOULD remain unchanged, and the minor version SHOULD be incremented by one. For example, the next compatible version after “2.17” would be “2.18”. The requirements for a version to be considered compatible with an earlier version are described in Section 2.2.1.

+

For each subsequent version of the object, if the later version is not compatible with the previous version, then the major version MUST increment by one, and the minor version MAY reset back to zero. For example, the next incompatible version after “2.17” might be “3.0”.

+

2.2.1 Requirements for Compatible Versions

+

For one version of an object to be considered compatible with another version, the later version MUST be a strict superset of the earlier version. Using major/minor versioning, this requirement applies only between minor versions that share the same major version.

+

More specifically, this requires the following of the later version with respect to all earlier versions to which it is to be compatible:

+
    +
  • The later version MAY add objects and parameters not previously in any earlier version, but MUST NOT remove objects or parameters already defined in earlier versions.

  • +
  • The later version MUST NOT modify the definition of any parameter or object already defined in an earlier version (unless the original definition was clearly in error and has to be modified as an erratum or clarified through a corrigendum process).

  • +
  • The later version MUST NOT require any of the objects or parameters that have been added since the earliest compatible version to be explicitly operated upon by the Controller to ensure proper operation of the device (except those functions specifically associated with functionality added in later versions). That is, the later version will accommodate a Controller that knows nothing of elements added in later versions.

  • +
+

The goal of the above definition of compatibility is intended to ensure bi-directional compatibility between a Controller and Agent. Specifically that:

+
    +
  • If a Controller supports only an earlier version of an object as compared to the version supported by the Agent, the Controller can successfully manage that object in the Agent as if it were the earlier version.

  • +
  • If an Agent supports only an earlier version of an object as compared to the version supported by a Controller, the Controller can successfully manage that object in the Agent as if it were the later version (without support for new components defined only in later versions).

  • +
+

2.2.2 Version Notation

+

For objects, the following notation is defined to identify specific versions:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NotationDescriptionExample
ObjectName:Major.MinorRefers to a specific version of the object.Device:2.0
ObjectName:MajorRefers to any minor version of the object with the specified major version.Device:2
ObjectNameRefers to any version of the object.Device
+

Note that the version notation defined here is only to be used for purposes of documentation. The actual names of objects and parameters in the data model MUST NOT include version numbers.

+

2.3 Profiles

+

Note: Originally, profiles were seen as a means of limiting the variability that a Controller needs to accommodate among various devices that it might manage. This feature is now provided:

+
    +
  • For CWMP, by the TR-181i2 [3] SupportedDataModel object (see Section 2.1.2) and associated Device Type XML documents (DT Instances).

  • +
  • For USP, by the TR-369 [2] GetSupportedDM message.

  • +
+

A profile is a named collection of requirements associated with a given object. An Agent can adhere to zero or more profiles. Adherence to a profile means that the Agent supports all of the requirements defined by that profile. The use of profiles gives Service Providers a shorthand means of specifying data model support requirements.

+

The following sections define the conventions to be used when defining profiles associated with Data Models.

+

2.3.1 Scope of Profiles

+

A given profile is defined only in the context of a specific Service Object or Root Object with a specific major version. For each profile definition, the specific object name and major version to which the profile is to apply MUST be explicitly identified.

+

A profile’s name MUST be unique among profiles defined for the same object and major version, but a name MAY be reused to define a different profile for a distinct combination of object name and major version. For example, if we define profile “A” associated with object “X:2” (major version 2 of object X), the same name “A” might be used to define a different profile for object “Y:1” or for object “X:3”.

+

A given profile is defined in association with a minimum minor version of a given object. The minimum REQUIRED version of an object is the minimum version that includes all of the REQUIRED elements defined by the profile. For each profile definition, the specific minimum version MUST be explicitly identified.

+

2.3.2 Multiple Profile Support

+

For a given type of Service Object or Root Object, multiple profiles MAY be defined. Profiles MAY be defined that have either independent or overlapping requirements.

+

2.3.3 Profile Versions

+

To allow the definition of a profile to change over time, the definition of every profile MUST have an associated version number.

+

Version numbering of profiles is defined to use a minor-only version numbering convention. That is, for a given profile name, each successive version MUST be compatible with all earlier versions. Any incompatible change to a profile MUST use a different profile name.

+

For one version of a profile to be considered compatible with another version, the later version MUST be a strict superset of the earlier version. This requires the following of the later version with respect to all earlier versions to which it is to be compatible:

+
    +
  • The later version MAY add requirements that were not in earlier versions of the profile, but MUST NOT remove requirements.

  • +
  • The later version MAY remove one or more conditions that had previously been placed on a requirement. For example, if a previous profile REQUIRED X only if condition A was True, then the later profile might require X unconditionally.

  • +
+

For profiles, the following notation is defined to identify specific versions:

+ +++++ + + + + + + + + + + + + + + + + + + + +
NotationDescriptionExample
ProfileName:VersionRefers to a specific version of the profile.Baseline:1
ProfileNameRefers to any version of the profile.Baseline
+

ProfileName MUST start with a letter or underscore, and subsequent characters MUST be letters, digits, underscores or hyphens. The terms “letter” and “digit” are as defined in the XML specification [Appendix B/8].

+

Hyphens can easily be confused with the discretionary hyphens that are sometimes inserted by hyphenation algorithms. For this reason, ProfileName SHOULD NOT include any hyphens. In BBF standards, ProfileName will always start with an upper-case letter (or an underscore for an internal profile) and will never include any hyphens (see C.3.1 for the corresponding normative requirement).

+

2.3.4 Baseline Profiles

+

For every Service Object (and Root Object) there SHOULD be at least one profile defined. In many cases it is desirable to define a Baseline profile that indicates the minimum requirements REQUIRED for any device that supports that Object.

+

2.3.5 Types of Requirements in a Profile

+

Because a profile is defined within the context of a single Object (and major version), all of the requirements associated with the profile MUST be specific to the data model associated with that object.

+

Profile requirements can include any of the following types of requirements associated with an Object’s data model:

+
    +
  • A requirement for read support of a Parameter.

  • +
  • A requirement for write support of a Parameter.

  • +
  • A requirement for support of a Command.

  • +
  • A requirement for support of a sub-Object contained within the overall Object.

  • +
  • A requirement for the ability to add or remove instances of a sub-Object.

  • +
  • A requirement to support active notification for a Parameter.

  • +
  • A requirement to support access control for a given Parameter.

  • +
+

For each of the requirement categories listed above, a profile can define the requirement unconditionally, or can place one or more conditions on the requirement. For example, a profile might require that a Parameter be supported for reading only if the device supports some other Parameter or Object (one that is not itself REQUIRED by the profile). Such conditions will be directly related to the data model of the overall object associated with the profile.

+

Because a device has to be able to support multiple profiles, all profiles MUST be defined such that they are non-contradictory. As a result, profiles MUST only define minimum requirements to be met, and MUST NOT specify negative requirements. That is, profiles will not include requirements that specify something that is not to be supported by the device, or requirements that exclude a range of values.

+

2.4 DEPRECATED and OBSOLETED Items

+

The key word “DEPRECATED” in a data model definition is to be interpreted as follows: This term refers to an object, parameter or parameter value that is defined in the current version of the standard but is meaningless, inappropriate, or otherwise unnecessary. It is intended that such objects, parameters or parameter values will be removed from the next major version of the data model. Requirements on how to interpret or implement deprecated objects, parameters or parameter values are given below. For more information on how to interpret or implement specific deprecated objects, parameters or parameter values, refer to the definition of the object or parameter.

+

The key word “OBSOLETED” in a data model definition is to be interpreted as follows: This term refers to an object, parameter or parameter value that meets the requirements for being deprecated, and in addition is obsolete. Such objects, parameters or parameter values can be removed from a later minor version of a data model, or from a later version of a profile, without this being regarded as breaking backwards compatibility rules. Requirements on how to interpret or implement obsoleted objects, parameters or parameter values are given below. For more information on how to interpret or implement specific obsoleted objects, parameters or parameter values, refer to the definition of the object or parameter.

+

2.4.1 Requirements for DEPRECATED Items

+

This section defines requirements that apply to all DEPRECATED objects, parameters and parameter values unless specifically overridden by the object or parameter definition.

+

Data model requirements:

+
    +
  1. The definition of a DEPRECATED parameter, object or parameter value MUST include an explanation of why the item is deprecated.

  2. +
  3. The definition of a DEPRECATED parameter, object or parameter value MAY specify further requirements relating to the item; such requirements MAY override general Agent or Controller requirements regarding DEPRECATED elements specified in TR-069 [1] or TR-369 [2].

  4. +
+

Agent requirements:

+
    +
  1. A DEPRECATED parameter MUST have a value which is valid for its data type and fulfils any range (for numeric parameters), length (for string, base64 or hexBinary parameters) and enumerated value (for string parameters) requirements.

  2. +
  3. Detailed behavioral requirements for a DEPRECATED parameter, e.g. that its value is a unique key, MAY be ignored by the Agent.

  4. +
  5. The Agent MUST, if such operations are permitted by the data model definition, permit creation of DEPRECATED objects, modification of DEPRECATED parameters, and setting of DEPRECATED parameter values. However, it MAY choose not to apply such changes to its operational state.

  6. +
  7. Regardless of whether DEPRECATED changes are applied to the Agent’s operational state, a read of a DEPRECATED writable parameter SHOULD return the value that was last written, i.e. the Agent is expected to store the value even if it chooses not to apply it to its operational state.

  8. +
  9. The Agent MAY reject an attempt by a Controller to set any parameter to a DEPRECATED value.

  10. +
+

Controller requirements:

+
    +
  1. The Controller SHOULD NOT create DEPRECATED objects, modify DEPRECATED parameters, or set DEPRECATED parameter values.

  2. +
  3. The Controller SHOULD ignore DEPRECATED objects, parameters and parameter values.

  4. +
  5. The Controller SHOULD NOT set a DEPRECATED parameter to a value that is invalid for its data type or fails to fulfill any range (for numeric parameters), length (for string, base64 or hexBinary parameters) or enumerated value (for string parameters) requirements.

  6. +
  7. The Controller SHOULD NOT set any parameter to a DEPRECATED value.

  8. +
+

2.4.2 Requirements for OBSOLETED Items

+

This section defines requirements that apply to all OBSOLETED objects, parameters or parameter values unless specifically overridden by the object or parameter definition.

+

An OBSOLETED object, parameter or parameter value MUST meet all the requirements of the previous section. In addition, the following requirements apply.

+
    +
  1. An OBSOLETED object, parameter or parameter value MAY be removed from a later minor version of a data model without this being regarded as breaking backwards compatibility rules.

  2. +
  3. An OBSOLETED object, parameter or parameter value MUST NOT be removed from the current version of a profile, but MAY be removed from a later version of a profile without this being regarded as breaking backwards compatibility rules.

  4. +
  5. A data model definition MUST include a list of those OBSOLETED objects, parameters or parameter values that have been removed from the data model or from its profiles. This is to prevent future namespace conflicts.

  6. +
+
+ +
+ + diff --git a/docs/03-index-architecture.yaml b/docs/03-index-architecture.yaml new file mode 100644 index 0000000..e4ae4fc --- /dev/null +++ b/docs/03-index-architecture.yaml @@ -0,0 +1,6 @@ +doctitle: '2 Architecture' +date: '' +subtitle: '' +title: '2 Architecture' +author: [] +titleid: 'sec:architecture' diff --git a/docs/04-index-object-definitions.htmf b/docs/04-index-object-definitions.htmf new file mode 100644 index 0000000..5f926f9 --- /dev/null +++ b/docs/04-index-object-definitions.htmf @@ -0,0 +1,210 @@ + + +

3.1 General Notation

+ +

Parameter names use a hierarchical form similar to a directory tree. The +name of a particular Parameter is represented by the concatenation of +each successive node in the hierarchy separated with a “.” (dot), +starting at the trunk of the hierarchy and leading to the leaves. When +specifying a partial path, indicating an intermediate node in the +hierarchy, the trailing “.” (dot) is always used as the last character.

+ +

Parameter names MUST be treated as case sensitive. The name of each node +in the hierarchy MUST start with a letter or underscore, and subsequent +characters MUST be letters, digits, underscores or hyphens. The terms +“letter” and “digit” are as defined in the XML +specification [Appendix B/8].

+ +

Hyphens can easily be confused with the discretionary hyphens that are +sometimes inserted by hyphenation algorithms. For this reason, the names +of nodes in the hierarchy SHOULD NOT include any hyphens. Additionally, +the names of nodes in the hierarchy SHOULD NOT start with underscores. +In BBF standards, the names of nodes in the hierarchy always start with +an upper-case letter and never include any hyphens or underscores (see +C.3.1 for the corresponding normative requirement).

+ +

Where multiple instances of an object can occur, the placeholder node +name {i} is shown. In actual use, this placeholder is to be replaced by +an Instance Identifier.

+ +

3.2 Data Types and Representation

+ +

Parameters make use of a limited subset of the default SOAP data types. +The supported data types are defined by the DM Schema and are +also listed in A.2.3.

+ +

The named data types that specify the representations of IP addresses, +MAC addresses etc, are defined in a DM Instance document (see Annex A). +The XML file with those definitions and the corresponding HTML file can +be found in the data model resources +page. +Note that this DM Instance defines named data types that are expected to +be used in several data model definitions; it is possible to define +local named data types in any DM Instance document.

+ +

The following sub-sections specify additional rules governing parameter +value representation within XML documents.

+ +

3.2.1 Date and Time Rules

+ +

All times MUST be expressed in UTC (Universal Coordinated Time) unless +explicitly stated otherwise in the definition of a parameter of this +type.

+ +

If absolute time is not available to the Agent, it SHOULD instead +indicate the relative time since boot, where the boot time is assumed to +be the beginning of the first day of January of year 1, or 0001 01 01T00:00:00. For example, 2 days, 3 hours, 4 minutes and 5 seconds since +boot would be expressed as 0001 01 03T03:04:05. Relative time since boot +MUST be expressed using an untimezoned representation. Any untimezoned +value with a year value less than 1000 MUST be interpreted as a relative +time since boot.

+ +

If the time is unknown or not applicable, the following value +representing “Unknown Time” MUST be used: 0001-01-01T00:00:00Z. For an +infinite timeline, the following value representing “Infinite Time” MUST +be used: 9999-12-31T23:59:59Z.

+ +

Any dateTime value other than one expressing relative time since boot +(as described above) MUST use UTC timezoned representation (that is, it +MUST include a timezone suffix of “Z”, “-00:00” or “+00:00”).

+ +

3.2.2 Comma-separated Lists

+ +

For strings that are defined to contain comma-separated lists, the +format is defined as follows. Between every pair of successive items in +a comma-separated list there MUST be a separator. The separator MUST +include exactly one comma character, and MAY also include one or more +whitespace characters before or after the comma. The entire separator, +including any whitespace characters, MUST NOT be considered part of the +list items it separates. The last item in a comma-separated list MUST +NOT be followed with a separator. Individual items in a comma-separated +list MUST NOT include a whitespace or comma character within them. Any +whitespace or comma characters within an item value MUST be escaped +using percent-encoding as specified in RFC 3986 [Section 2.1/9].

+ +

It is possible to create a list of lists, although other solutions +SHOULD be preferred when possible. If a string contains a list of lists, +the rules of the previous paragraph imply that the comma separators of +the inner list will be percent encoded. For example, a three element +list with elements “a”, “b,c” (a two element list) and “d” could be +represented as “a,b%2Cc,d”. In order to avoid the need to percent encode +the inner separators, inner lists MAY be “protected” by placing them +within square brackets, e.g. the above list could be represented as +“a,[b,c],d”. In order to avoid ambiguity (a Controller that didn’t +understand the new syntax would interpret “a,[b,c],d” as the four +element list “a”, “[b", "c]”, “d”), the data type and/or parameter +definition MUST explicitly state that the new syntax is supported +(A.2.3.1, A.2.7.1).

+ +

3.2.3 Parameters that Reference Parameters or Objects

+ +

For string parameters that are defined to contain the hierarchical Path +Name of an object (or for each item in parameters that are defined to +contain comma-separated lists of object Path Names), the representation +of the object name MUST NOT include a trailing “dot.” An example of a +parameter of this kind in the TR-181i2 [3] Device:2 data model is +Device.InterfaceStack.{i}.LowerLayer. For this parameter, the following +is an example of a properly formed value:

+ +

Device.Ethernet.Interface.1

+ +

Path Names in parameter values MUST always be full Path Names. For CWMP +there is an exception such that a path that begins with a dot is +relative to the Root or Service Object. For example, in the Device Root +Object, a parameter value of “.DeviceInfo” always means +“Device.DeviceInfo”. NOTE: This exception does NOT hold for USP.

+ +

In order to be able to use reference parameters as unique keys +(A.2.10.1), their Path Names MUST conceptually be converted to full Path +Names before being compared. For example, in the Device Root Object, +“.DeviceInfo.” and “Device.DeviceInfo.” would compare as equal. If a +reference parameter is list-valued, i.e. it is a list of Path Names or +Instance Numbers, the parameter value MUST conceptually be regarded as a +set when being compared, i.e. the comparison has to ignore the item +order and any repeated items. For example, “1,2,1” and “2,1” would +compare as equal because both reference instances 1 and 2.

+ +

References are defined as strong or weak in the data model. A strong +reference always either references an existing parameter or object, or +else is a null reference. On the other hand, a weak reference does not +necessarily reference an existing parameter or object.

+ +

3.2.4 Units Conventions

+ +

For numeric parameters whose values are defined in terms of units, bit +and byte-related units will always refer to powers of 2. For example, a +kilobyte will always be 1024 bytes, a megabyte always 1024 * 1024 +bytes, etc.

+ +

3.2.5 Default Maximum String Length

+ +

For string-valued parameters, a maximum length is either explicitly +indicated or implied by the size of the elements composing the string. +For strings in which the content is an enumeration, the longest +enumerated value determines the maximum length. Similarly, for strings +in which the content is a pattern, the longest possible matching value +determines the maximum length. For strings in which the content is a +list, the maximum number of items and the individual item lengths can +help to determine the maximum string length.

+ +

3.3 Vendor-Specific Elements

+ +

A vendor MAY extend the standardized data model with vendor-specific +elements (parameters, objects, commands, events). Vendor-specific elements MAY be defined either in a separate naming hierarchy or within the standardized +naming hierarchy.

+ +

The name of a vendor-specific parameter, object, command, or event that is not contained within another vendor-specific object MUST have the form:

+ +
+

X_<VENDOR>_VendorSpecificName

+
+ +

In this definition <VENDOR> is a unique vendor identifier, which MAY +be either an OUI or a domain name. The OUI or domain name used for a +given vendor-specific parameter MUST be one that is assigned to the +organization that defined this parameter (which is not necessarily the +same as the vendor of the Agent). An OUI is an organizationally unique +identifier as defined in [10], which MUST be formatted as a +six-hexadecimal-digit string using all upper-case letters and including +any leading zeros. A domain name MUST be upper case with each dot (“.”) +replaced with a hyphen or underscore.

+ +

The VendorSpecificName MUST NOT contain a “.” (period) or a space +character.

+ +
+

Note – the use of the string “X_” to indicate a vendor-specific +parameter implies that no standardized parameter can begin with +“X_”.

+
+ +

The name of a vendor-specific element that is contained +within another vendor-specific object which itself begins with the +prefix described above need not itself include the prefix.

+ +

The full Path Name of a vendor-specific element MUST NOT +exceed 256 characters in length.

+ +

Below are some example vendor-specific element names:

+ +

A parameter:

+ +
Device.UserInterface.X_012345_AdBanner
+ +

A single-instance object:

+ +
Device.X_EXAMPLE-COM_MyConfig.Status
+ +

A command:

+ +
Device.X_EXAMPLE-COM_MyCommand()
+ +

An event:

+ +
Device.X_EXAMPLE-COM_MyEvent!
+ +

When appropriate, a vendor MAY also extend the set of values of an +enumeration. If this is done, the vendor-specified values MUST be in the +form “X_<VENDOR>_VendorSpecificValue”. The total length of such a +string MUST NOT exceed 31 characters.

+ diff --git a/docs/04-index-object-definitions.html b/docs/04-index-object-definitions.html new file mode 100644 index 0000000..18fe07e --- /dev/null +++ b/docs/04-index-object-definitions.html @@ -0,0 +1,272 @@ + + + + + + + + + + BBF – 3 Object Definitions + + + + + + + + + + + +
+ + + + +
+

3 Object Definitions

+
+ +

3.1 General Notation

+

Parameter names use a hierarchical form similar to a directory tree. The name of a particular Parameter is represented by the concatenation of each successive node in the hierarchy separated with a “.” (dot), starting at the trunk of the hierarchy and leading to the leaves. When specifying a partial path, indicating an intermediate node in the hierarchy, the trailing “.” (dot) is always used as the last character.

+

Parameter names MUST be treated as case sensitive. The name of each node in the hierarchy MUST start with a letter or underscore, and subsequent characters MUST be letters, digits, underscores or hyphens. The terms “letter” and “digit” are as defined in the XML specification [Appendix B/8].

+

Hyphens can easily be confused with the discretionary hyphens that are sometimes inserted by hyphenation algorithms. For this reason, the names of nodes in the hierarchy SHOULD NOT include any hyphens. Additionally, the names of nodes in the hierarchy SHOULD NOT start with underscores. In BBF standards, the names of nodes in the hierarchy always start with an upper-case letter and never include any hyphens or underscores (see C.3.1 for the corresponding normative requirement).

+

Where multiple instances of an object can occur, the placeholder node name {i} is shown. In actual use, this placeholder is to be replaced by an Instance Identifier.

+

3.2 Data Types and Representation

+

Parameters make use of a limited subset of the default SOAP data types. The supported data types are defined by the DM Schema and are also listed in A.2.3.

+

The named data types that specify the representations of IP addresses, MAC addresses etc, are defined in a DM Instance document (see Annex A). The XML file with those definitions and the corresponding HTML file can be found in the data model resources page. Note that this DM Instance defines named data types that are expected to be used in several data model definitions; it is possible to define local named data types in any DM Instance document.

+

The following sub-sections specify additional rules governing parameter value representation within XML documents.

+

3.2.1 Date and Time Rules

+

All times MUST be expressed in UTC (Universal Coordinated Time) unless explicitly stated otherwise in the definition of a parameter of this type.

+

If absolute time is not available to the Agent, it SHOULD instead indicate the relative time since boot, where the boot time is assumed to be the beginning of the first day of January of year 1, or 0001 01 01T00:00:00. For example, 2 days, 3 hours, 4 minutes and 5 seconds since boot would be expressed as 0001 01 03T03:04:05. Relative time since boot MUST be expressed using an untimezoned representation. Any untimezoned value with a year value less than 1000 MUST be interpreted as a relative time since boot.

+

If the time is unknown or not applicable, the following value representing “Unknown Time” MUST be used: 0001-01-01T00:00:00Z. For an infinite timeline, the following value representing “Infinite Time” MUST be used: 9999-12-31T23:59:59Z.

+

Any dateTime value other than one expressing relative time since boot (as described above) MUST use UTC timezoned representation (that is, it MUST include a timezone suffix of “Z”, “-00:00” or “+00:00”).

+

3.2.2 Comma-separated Lists

+

For strings that are defined to contain comma-separated lists, the format is defined as follows. Between every pair of successive items in a comma-separated list there MUST be a separator. The separator MUST include exactly one comma character, and MAY also include one or more whitespace characters before or after the comma. The entire separator, including any whitespace characters, MUST NOT be considered part of the list items it separates. The last item in a comma-separated list MUST NOT be followed with a separator. Individual items in a comma-separated list MUST NOT include a whitespace or comma character within them. Any whitespace or comma characters within an item value MUST be escaped using percent-encoding as specified in RFC 3986 [Section 2.1/9].

+

It is possible to create a list of lists, although other solutions SHOULD be preferred when possible. If a string contains a list of lists, the rules of the previous paragraph imply that the comma separators of the inner list will be percent encoded. For example, a three element list with elements “a”, “b,c” (a two element list) and “d” could be represented as “a,b%2Cc,d”. In order to avoid the need to percent encode the inner separators, inner lists MAY be “protected” by placing them within square brackets, e.g. the above list could be represented as “a,[b,c],d”. In order to avoid ambiguity (a Controller that didn’t understand the new syntax would interpret “a,[b,c],d” as the four element list “a”, “[b", "c]”, “d”), the data type and/or parameter definition MUST explicitly state that the new syntax is supported (A.2.3.1, A.2.7.1).

+

3.2.3 Parameters that Reference Parameters or Objects

+

For string parameters that are defined to contain the hierarchical Path Name of an object (or for each item in parameters that are defined to contain comma-separated lists of object Path Names), the representation of the object name MUST NOT include a trailing “dot.” An example of a parameter of this kind in the TR-181i2 [3] Device:2 data model is Device.InterfaceStack.{i}.LowerLayer. For this parameter, the following is an example of a properly formed value:

+

Device.Ethernet.Interface.1

+

Path Names in parameter values MUST always be full Path Names. For CWMP there is an exception such that a path that begins with a dot is relative to the Root or Service Object. For example, in the Device Root Object, a parameter value of “.DeviceInfo” always means “Device.DeviceInfo”. NOTE: This exception does NOT hold for USP.

+

In order to be able to use reference parameters as unique keys (A.2.10.1), their Path Names MUST conceptually be converted to full Path Names before being compared. For example, in the Device Root Object, “.DeviceInfo.” and “Device.DeviceInfo.” would compare as equal. If a reference parameter is list-valued, i.e. it is a list of Path Names or Instance Numbers, the parameter value MUST conceptually be regarded as a set when being compared, i.e. the comparison has to ignore the item order and any repeated items. For example, “1,2,1” and “2,1” would compare as equal because both reference instances 1 and 2.

+

References are defined as strong or weak in the data model. A strong reference always either references an existing parameter or object, or else is a null reference. On the other hand, a weak reference does not necessarily reference an existing parameter or object.

+

3.2.4 Units Conventions

+

For numeric parameters whose values are defined in terms of units, bit and byte-related units will always refer to powers of 2. For example, a kilobyte will always be 1024 bytes, a megabyte always 1024 * 1024 bytes, etc.

+

3.2.5 Default Maximum String Length

+

For string-valued parameters, a maximum length is either explicitly indicated or implied by the size of the elements composing the string. For strings in which the content is an enumeration, the longest enumerated value determines the maximum length. Similarly, for strings in which the content is a pattern, the longest possible matching value determines the maximum length. For strings in which the content is a list, the maximum number of items and the individual item lengths can help to determine the maximum string length.

+

3.3 Vendor-Specific Elements

+

A vendor MAY extend the standardized data model with vendor-specific elements (parameters, objects, commands, events). Vendor-specific elements MAY be defined either in a separate naming hierarchy or within the standardized naming hierarchy.

+

The name of a vendor-specific parameter, object, command, or event that is not contained within another vendor-specific object MUST have the form:

+
+

X_<VENDOR>_VendorSpecificName

+
+

In this definition <VENDOR> is a unique vendor identifier, which MAY be either an OUI or a domain name. The OUI or domain name used for a given vendor-specific parameter MUST be one that is assigned to the organization that defined this parameter (which is not necessarily the same as the vendor of the Agent). An OUI is an organizationally unique identifier as defined in [10], which MUST be formatted as a six-hexadecimal-digit string using all upper-case letters and including any leading zeros. A domain name MUST be upper case with each dot (“.”) replaced with a hyphen or underscore.

+

The VendorSpecificName MUST NOT contain a “.” (period) or a space character.

+
+

Note – the use of the string “X_” to indicate a vendor-specific parameter implies that no standardized parameter can begin with “X_”.

+
+

The name of a vendor-specific element that is contained within another vendor-specific object which itself begins with the prefix described above need not itself include the prefix.

+

The full Path Name of a vendor-specific element MUST NOT exceed 256 characters in length.

+

Below are some example vendor-specific element names:

+

A parameter:

+
Device.UserInterface.X_012345_AdBanner
+

A single-instance object:

+
Device.X_EXAMPLE-COM_MyConfig.Status
+

A command:

+
Device.X_EXAMPLE-COM_MyCommand()
+

An event:

+
Device.X_EXAMPLE-COM_MyEvent!
+

When appropriate, a vendor MAY also extend the set of values of an enumeration. If this is done, the vendor-specified values MUST be in the form “X_<VENDOR>_VendorSpecificValue”. The total length of such a string MUST NOT exceed 31 characters.

+
+ +
+ + diff --git a/docs/04-index-object-definitions.yaml b/docs/04-index-object-definitions.yaml new file mode 100644 index 0000000..a040117 --- /dev/null +++ b/docs/04-index-object-definitions.yaml @@ -0,0 +1,6 @@ +doctitle: '3 Object Definitions' +date: '' +subtitle: '' +title: '3 Object Definitions' +author: [] +titleid: 'sec:object-definitions' diff --git a/docs/05-index-normative-references.htmf b/docs/05-index-normative-references.htmf new file mode 100644 index 0000000..ef228ee --- /dev/null +++ b/docs/05-index-normative-references.htmf @@ -0,0 +1,46 @@ + + +

A list of the currently valid Broadband Forum Technical Reports is +published at https://www.broadband-forum.org. The following documents +are referenced by this specification.

+ +
+
+

[1] TR-069 Amendment 6, CPE WAN Management Protocol, Broadband Forum, 2018

+ +
+

[2] TR-369, User Services Platform, 2018

+ +
+

[3] TR-181 Issue 2 Amendment 12, Device Data Model for TR-069, Broadband Forum, 2018

+ + + +
+

[5] RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, IETF, 1997

+ +
+

[6] TR-143 Amendment 1 Corrigendum 1, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, 2015

+ +
+

[7] TR-140 Amendment 3, TR-069 Data Model for Storage Service Enabled Devices, Broadband Forum, 2017

+ + + +
+

[9] RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, IETF, 2005

+ + + +
+

[11] RFC 2648, A URN Namespace for IETF Documents, IETF, 1999

+ + + +
+ diff --git a/docs/05-index-normative-references.html b/docs/05-index-normative-references.html new file mode 100644 index 0000000..9cce764 --- /dev/null +++ b/docs/05-index-normative-references.html @@ -0,0 +1,250 @@ + + + + + + + + + + BBF – 4 Normative References + + + + + + + + + + + +
+ + + + +
+

4 Normative References

+
+

A list of the currently valid Broadband Forum Technical Reports is published at https://www.broadband-forum.org. The following documents are referenced by this specification.

+
+
+

[1] TR-069 Amendment 6, CPE WAN Management Protocol, Broadband Forum, 2018

+
+
+

[2] TR-369, User Services Platform, 2018

+
+
+

[3] TR-181 Issue 2 Amendment 12, Device Data Model for TR-069, Broadband Forum, 2018

+
+ +
+

[5] RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, IETF, 1997

+
+
+

[6] TR-143 Amendment 1 Corrigendum 1, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, 2015

+
+
+

[7] TR-140 Amendment 3, TR-069 Data Model for Storage Service Enabled Devices, Broadband Forum, 2017

+
+ +
+

[9] RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, IETF, 2005

+
+ +
+

[11] RFC 2648, A URN Namespace for IETF Documents, IETF, 1999

+
+ + +
+
+ +
+ + diff --git a/docs/05-index-normative-references.yaml b/docs/05-index-normative-references.yaml new file mode 100644 index 0000000..ed9e697 --- /dev/null +++ b/docs/05-index-normative-references.yaml @@ -0,0 +1,6 @@ +doctitle: '4 Normative References' +date: '' +subtitle: '' +title: '4 Normative References' +author: [] +titleid: 'sec:normative-references' diff --git a/docs/06-index-cwmp-data-model-definition-xml-schema.htmf b/docs/06-index-cwmp-data-model-definition-xml-schema.htmf new file mode 100644 index 0000000..9a376f7 --- /dev/null +++ b/docs/06-index-cwmp-data-model-definition-xml-schema.htmf @@ -0,0 +1,2300 @@ + + +

A.1 Introduction

+ +

The CWMP Data Model Definition XML Schema [4], or DM Schema, is used +for defining CWMP [1] and USP [2] data models, and is specified in +A.2.12.6.

+ +

DM Schema instance documents can contain any or all of the following:

+ +
    +
  • Data type definitions

  • +
  • Root Object definitions (including profiles)

  • +
  • Service Object definitions (including profiles)

  • +
  • Component definitions

  • +
  • Vendor extension definitions

  • +
+ +

Annex C contains some additional normative requirements that apply only +to BBF standard DM Schema instance documents.

+ +

Most of the data model elements are common to CWMP and USP. Those that are specific to either protocol will be noted in the description.

+ +

A.1.1 Character Encoding and Character Set

+ +

BBF standard DM Schema instance documents use UTF-8 encoding and their +character set is restricted to printable ASCII characters. See +C.2 for the corresponding normative +requirements.

+ +

A.2 Normative Information

+ +

It is possible to create instance documents that conform to the DM +Schema but nevertheless are not valid data model definitions. This is +because it is not possible to specify all the normative data model +definition requirements using the XML Schema language. Therefore, the +schema contains additional requirements written using the usual +normative language. Instance documents that conform to the DM Schema and +meet these additional requirements are referred to as DM Instances.

+ +

For example, the definition of the parameter element includes the +following additional requirements on the name and base attributes:

+ +
    <xs:complexType name="ModelParameter">
+      <xs:annotation>
+        <xs:documentation>
+        Parameter definition and
+        reference.
+        </xs:documentation>
+      </xs:annotation>
+
+      ...
+
+      <xs:attribute name="name" type="tns:ParameterName">
+        <xs:annotation>
+          <xs:documentation>
+          MUST be unique within the parent object
+          (this is checked by schema validation).
+
+          MUST be present if and only if defining a new
+          parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+
+      <xs:attribute name="base" type="tns:ParameterName">
+        <xs:annotation>
+          <xs:documentation>
+            MUST be present if and only if modifying an existing
+            parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+
+      ...
+
+    </xs:complexType>
+ +

In some cases, a requirement that is in fact implied by the DM Schema is +emphasized within the schema via the xs:documentation element (the +uniqueness requirement on the name is an example of this).

+ +

In other cases, a schema-implied requirement is not highlighted. For +example, the name and base attributes are of type tns:ParameterName:

+ +
    <!DOCTYPE cwmp-datamodel [
+      ...
+      <!ENTITY name "([\i-[:]][\c-[:\.]]*)">
+      ...
+    ]>
+      ...
+      <xs:simpleType name="ParameterName">
+        <xs:annotation>
+          <xs:documentation>Parameter name (maximum length 256); the same as xs:NCName except that periods are not permitted.  This name MUST in addition follow the vendor-specific parameter name requirements of Section 3.3.</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:token">
+          <xs:maxLength value="256"/>
+          <xs:pattern value="&name;"/>
+        </xs:restriction>
+      </xs:simpleType>
+ +

This states that the parameter name is a string that follows the +following rules:

+ +
    +
  • It is derived from xs:token, which has a whitespace facet of +“collapse”, meaning that any leading whitespace in the name will be +ignored.

  • +
  • It has a maximum length of 256 characters.

  • +
  • Its first character matches the pattern “[\i-:]]”, which means +“any character permitted as the first character of an XML name, +except for a colon”, and any subsequent characters match the pattern +“[\c-[:\.]]”, which means “any character permitted in an XML +name, except for a colon and a dot”.

  • +
  • It follows the vendor-specific parameter name requirements of +Section 3.3.

  • +
+ +

The question of the location of the definitive normative information +therefore arises. The answer is as follows:

+ +
    +
  • All the normative information in the main part of the document +remains normative.

  • +
  • The DM Schema, and the additional requirements therein, are +normative. Some of these additional requirements are duplicated (for +emphasis) in this Annex.

  • +
  • The DM Schema references additional material in this Annex. Such +material is normative.

  • +
  • If the DM Schema conflicts with a normative requirement in the main +part of the document, this is an error in the DM Schema, and the +requirement in the main part of the document takes precedence.

  • +
+ +

A.2.1 Importing DM Instances

+ +

DM Instances are imported using the top-level import element. The DM +Schema specifies that the DM Instance is located via the file attribute.

+ +

The rules governing the file attribute’s value and its use for locating +the DM Instance are as follows:

+ +
    +
  • It MUST be a URL adhering to RFC 3986 [9].

  • +
  • If the URL includes a scheme, it MUST be http, https or ftp.

  • +
  • If the URL includes an authority, it MUST NOT include credentials.

  • +
  • For standard BBF DM Instances, the rules that apply to the filename +part (final path segment) of the A.2.1.1 BBFURL also apply to the +filename part of this URL. This means that the corrigendum number +can be omitted in order to refer to the latest corrigendum. See +C.3.6 for the corresponding normative requirement.

  • +
  • If the URL is a relative reference, processing tools MUST apply +their own logic, e.g. apply a search path.

  • +
+ +

A.2.1.1 URI Conventions

+ +

The top-level spec attribute contains the URI of the associated +specification document, e.g. the BBF Technical Report.

+ +

This URI SHOULD uniquely identify the specification. More than one DM +Schema instance document MAY reference the same specification.

+ +

The top-level file attribute contains the name of the DM Schema instance +document, e.g. the XML file that defines a given version of a data +model.

+ +

The following rules apply to the value of the top-level spec attribute:

+ +
    +
  • For a BBF Technical Report, it will be of the form +“urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the +specification number (including leading zeros), i is the issue +number, a is the amendment number, and c is the corrigendum number. +The issue, amendment and corrigendum numbers do not include leading +zeros. For example, “urn:broadband-forum-org:tr-106-1-0” refers to +TR-106 (Issue 1 Amendment 0), and +“urn:broadband-forum-org:tr-106-1-2” refers to TR-106 (Issue 1) +Amendment 2. See C.3.4 for the corresponding normative requirement.

  • +
  • For specifications issued by other standards organizations, or by +vendors, it SHOULD be of a standard form if one is defined. For +example, RFC 2648 [11] specifies a syntax for referencing RFCs.

  • +
  • Note that processing tools are likely to assume that all files that +share a spec value are related to each other. Therefore, use of +meaningful spec values is RECOMMENDED.

  • +
+ +

The following rules apply to the value of the top-level file attribute.

+ +
    +
  • For a BBF Technical Report, it will be of the form +“tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where nnn, i, a and +c are the same as in the spec attribute. The label, which MUST NOT +begin with a digit, is not needed if only one DM Schema instance +document is associated with the specification. See C.3.5 for the +corresponding normative requirement.

  • +
  • It SHOULD be the same as the actual file name (omitting the +directory name). Under some circumstances this will not be possible, +e.g. because the content is stored in a database and not in a file +system.

  • +
+ +

Formally, the values of the spec and file attributes are defined as +follows:

+ +
    SpecAttr = SpecURI
+    FileAttr = FileName
+    SpecURI = BBFURI
+            | OtherURI
+    BBFURI = "urn:broadband-forum-org:" BBFDoc
+    FileName = BBFDoc BBFSubDoc ".xml"
+    BBFDoc = "tr-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
+    BBFNumber = [DIGIT]{3,}     // including leading zeros, e.g. 069
+    BBFIssue = "-" NoLeadingZeroPositiveNumber
+    BBFAmendment = "-" NoLeadingZeroNumber
+    BBFCorrigendum = "-" NoLeadingZeroNumber
+    BBFSubDoc = "-" LABEL       // distinguishing label (not beginning with a digit)
+              | ""              // not needed if only one DM Instance is associated with spec
+    NoLeadingZeroNumber = [DIGIT]
+                        | [NONZERODIGIT] [DIGIT]*
+    NoLeadingZeroPositiveNumber = [NONZERODIGIT] [DIGIT]*
+    OtherURI = <of a standard form if one is defined>
+ +

Standard BBF DM Instances can be accessed at the following URL:

+ +
    BBFURL = "http://www.broadband-forum.org/cwmp/" FileName
+    FileName = <as before, except that BBFCorrigendum is modified as follows:>
+    BBFCorrigendum = "-" NoLeadingZeroNumber
+                   | ""         // if omitted, most recent corrigendum is assumed
+ +

For example, the DM Instance associated with TR-181 Issue 2 Amendment 11 +can be accessed at +https://www.broadband-forum.org/cwmp/tr-181-2-11-0.xml.

+ +

A.2.2 Descriptions

+ +

Many elements have descriptions, and the same rules apply to all +description elements in the DM Schema. A description is free text which +can contain a limited amount of MediaWiki-like markup as specified in +A.2.2.3.

+ +

A.2.2.1 Character Set

+ +

Character set requirements apply to the entire DM Instance, so the contents of +this section have been moved to C.2, +which contains the normative requirements that apply to standard BBF DM +Instances.

+ +

A.2.2.2 Pre-processing

+ +

All DM Instance processing tools MUST conceptually perform the following +pre-processing before interpreting the markup:

+ +
    +
  1. Remove any leading whitespace up to and including the first line +break. Note: It can be assumed that all line breaks are represented by a +single line feed, i.e. ASCII 10. See +C.2.

  2. +
  3. Remove the longest common whitespace prefix (i.e. that occurs at the +start of every line) from each line. See the example below, where +three lines start with four spaces and one line starts with five +spaces, so the longest whitespace prefix that occurs at start of +each line is four spaces. In this calculation, a tab character +counts as a single character. To avoid confusion, the description +SHOULD NOT contain tab characters.

  4. +
  5. Remove all trailing whitespace, including line breaks.

  6. +
+ +

This pre-processing is designed to permit a reasonable variety of layout +styles while still retaining predictable behavior. For example, both the +following:

+ +
    <description>This is the first line.
+    This is the second line.
+     This is the indented third line.
+    This is the fourth line.</description>
+ +

And:

+ +
    <description>
+        This is the first line.
+        This is the second line.
+         This is the indented third line.
+        This is the fourth line.
+    </description>
+ +

…result in the following:

+ +
    This is the first line.
+    This is the second line.
+      This is the indented third line.
+    This is the fourth line.
+ +

A.2.2.3 Markup

+ +

The pre-processed description can contain the following markup, which is +inspired by, but is not identical to, MediaWiki markup. All DM Instance +processing tools SHOULD support this markup to the best of their +ability.

+ +
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1: XML Description Markup
NameMarkup ExampleDescription
Italics''italic text''Two apostrophes on each side of some text will result in the contained text being emphasized in italics.
Bold'''bold text'''Three apostrophes on each side of some text will result in the contained text being emphasized in bold.
Bold italics'''''b+i text'''''Five apostrophes on each side of some text will result in the contained text being emphasized in bold italics.
ParagraphThis paragraph just ended.A line break is interpreted as a paragraph break.
Bulleted lists* level one
** level two
* level one again
** level two again
*** level three
*: level one continued
outside of list
A line starting with one or more asterisks (*) denotes a bulleted list entry, whose indent depth is proportional to the number of asterisks specified.
If the asterisks are followed by a colon (:), the previous item at that level is continued, as shown.
An empty line, or a line that starts with a character other than an asterisk, indicates the end of the list.
Numbered lists# level one
## level two
# level one again
## level two again
### level three
#: level one continued
outside of list
A line starting with one or more number signs (#) denotes a numbered list entry.
All other conventions defined for bulleted lists apply here (using # rather than *), except that numbered list entries are prefixed with an integer decoration rather than a bullet.
Indented lists: level one
:: level two
: level one again
:: level two again
::: level three
outside of list
A line starting with one or more colons (:) denotes an indented list entry.
All other conventions defined for bulleted lists apply here (using : rather than *), except that indented list entries have no prefix decoration, and item continuation is not needed.
Verbatimcode example:
if (something)
{
/* do something */
} else {
/* do other */
}
A block of lines each of which starts with a space is to be formatted exactly as typed, preferably in a fixed width font.
This allows code fragments, simple tables etc. to be included in descriptions.
Note that the pre-processing rules of A.2.2.2 imply that it is not possible to process an entire description as verbatim text (because all the leading whitespace would be removed). This is not expected to be a problem in practice.
Hyperlinkshttp://www.broadband-forum.orgURL links are specified as plain old text (no special markup).
Templates{{bibref|1|section 2}}
{{section|table}}
{{param|Enable}}
{{enum|Error}}
Text enclosed in double curly braces ({}) is a template reference, which is replaced by template-dependent text.
A.2.2.4 specifies the standard templates.
+ +

A.2.2.4 Templates

+ +
+

The term “template” is used for both template elements (A.2.4.4) +and for the description templates described here.

+ +

A template invocation is encoded as two curly braces on either side of +the template name and arguments. Arguments can follow the template name, +separated by vertical pipe (|) characters. All whitespace is +significant. For example:

+ +

{{someTemplate|arg1|arg2|...|argN}}

+ +

In some cases, one template can impact the behavior of another template, +e.g. the definitions of both the {{enum}} and the {{hidden}} templates +state that the template expansion can be automatically placed after the +rest of the description, which raises the question of which template +expansion would come first. This ambiguity is resolved by stating that +processing tools SHOULD generate such automatic text in the same order +that the templates are defined below. In the above example, {{enum}} is +defined before {{hidden}}, so an automatically-generated list of +enumeration values would be placed before an automatically-generated +explanation that the parameter value is hidden.

+ +

The following standard templates are defined. Any vendor-specific +template names MUST obey the rules of Section 3.3.

+ +
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: XML Description Templates
NameMarkup DefinitionDescription
Glossary reference{{gloref|id}}Glossary reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level glossary element’s item elements (A.2.4.1).
Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”.
Markup examples:
{{gloref|Parameter}}
Abbreviation reference{{abbref|id}}Abbreviation reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level abbreviations element’s item elements (A.2.4.2).
Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”.
Markup examples:
{{abbref|CWMP}}
Approval date{{appdate|date}}The date on which this file was approved.
The date argument SHOULD be of the form “day month year” where “day” is the OPTIONAL day number (no leading zero), “month” is the full (capitalized) month name, and “year” is the year (including century).
Markup examples:
{{appdate|5 November 2011}}
{{appdate|November 2012}}
Document name{{docname|name}}The DM Instance name or title.
The name argument MUST distinguish this file from other different files but not from other versions of the same file or data model.
Markup examples:
{{docname|Device Data Model for TR-069}}
TR name{{trname|name}}The name and version of the corresponding Word / PDF document.
The name argument MUST identify the Word / PDF document corresponding to this DM Instance, and be of the form “TR-nnnixaycz” as defined in A.2.4.3.
Markup examples:
{{trname|TR-181i2a5}}
XML reference{{xmlref|ref}}
{{xmlref|ref|label}}
A reference to this or another DM Instance.
The ref argument MUST identify a DM Instance and be the filename part of the referenced DM Instance (a) optionally omitting the corrigendum number, and (b) omitting the trailing “.xml”.
The OPTIONAL label argument MAY be used by processing tools as a user-visible label; if it is omitted, processing tools will derive the label from the value of the ref argument.
Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the label, possibly rendered in a distinctive font, and (if referencing a different file) a hyperlink.
Markup examples:
{{xmlref|tr-181-2-5}}
{{xmlref|tr-196-2-0-1|Corrigendum 1}}
Bibliographic reference{{bibref|id}}
{{bibref|id|section}}
A bibliographic reference.
The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level bibliography element’s reference elements (A.2.4.3).
The OPTIONAL section argument specifies the section number, including any leading “section”, “annex” or “appendix” text.
Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “[id] section”.
Markup examples:
{{bibref|RFC3986}}
{{bibref|RFC3986|Section 3}}
Template reference{{template|id}}A template element reference.
The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level template elements (A.2.4.4).
Markup examples:
{{template|BULK-DATA-HTTP-REF}}
Section separator{{section|category}}
{{section}}
The beginning or end of a section or category. This is a way of splitting the description into sections.
If the category argument is present, this marks the end of the previous section (if any), and the beginning of a section of the specified category. The “table”, “row” and “examples” categories are reserved for the obvious purposes.
If the category argument is absent, this marks the end of the previous section (if any). Typically, processing tools will (a) validate the category, and (b) replace the template reference with a section marker.
Markup examples:
{{section|table}}
{{section|row}}
{{section|examples}}
Number of entries parameter description{{numentries}}A description of a “NumberOfEntries” parameter.
This template SHOULD be used for all such parameters. It will be expanded to something like “The number of entries in the <table> table.”.
In most cases, the description will consist only of {{numentries}} but it MAY be followed by additional text if desired.
Parameter and object reference{{param|ref}}
{{param|ref|scope}}
{{param}}
{{object|ref}}
{{object|ref|scope}}
{{object}}
A reference to the specified parameter or object.
The OPTIONAL ref and scope arguments reference a parameter or object. Scope defaults to normal. Parameter and object names SHOULD adhere to the rules of A.2.3.4.
Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current parameter or object name, possibly rendered in a distinctive font.
Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
Markup examples:
{{param|Enable}}
{{object|Stats.}}
Profile reference{{profile|ref}}
{{profile}}
A reference to the specified profile.
The OPTIONAL ref argument references a profile.
Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current profile name, possibly rendered in a distinctive font.
Markup examples:
{{profile|Baseline:1}}
{{profile}}
List description{{list}}
{{list|arg}}
{{nolist}}
A description of the current parameter’s list attributes.
This template SHOULD only be used within the description of a list-valued parameter (A.2.7.1).
This is a hint to processing tools to replace the template reference with a description of the parameter’s list attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{nolist}}) of describing the list attributes before the rest of the description.
The OPTIONAL argument specifies a fragment of text that describes the list and SHOULD be incorporated into the template expansion.
Typically processing tools will generate text of the form “Comma-separated list of <dataType>.” or “Comma-separated list of <dataType>, <arg>.”.
Reference description{{reference}}
{{reference|arg}}
{{reference|arg|opts}}
{{noreference}}
A description of the object or parameter that is referenced by the current parameter.
This template SHOULD only be used within the description of a reference parameter (A.2.3.7).
This is a hint to processing tools to replace the template reference with a description of the parameter’s reference attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{noreference}}) of describing the reference attributes after the list attributes (for a list-valued parameter) or before the rest of the description (otherwise).
The OPTIONAL arg argument is relevant only for a pathRef; it specifies a fragment of text that describes the referenced item and SHOULD be incorporated into the template expansion.
The OPTIONAL opts argument is a comma-separated list of keywords that give additional information about the reference and can affect the generated text. The following keywords are currently defined:
- ignore: ignore any non-existent targetParents; this is useful when a parameter references different objects in different data models.
- delete: this object (the referencing object) and the referenced object have the same lifetime, so this object will always be deleted when the referenced object is deleted; therefore the reference cannever be null.
Typically processing tools will generate text of the form “The value MUST be the full path name of <arg>…”, in which the generated text can be expected to be sensitive to whether or not the parameter is list-valued.
Markup examples:
{{reference|a protocol object}}
{{reference|all Host table entries|ignore}}
Named data type{{datatype}}
{{datatype|arg}}
{{nodatatype}}
A description of the current parameter’s named data type.
This template SHOULD only be used within the description of a parameter of a named data type (A.2.3.1).
This is a hint to processing tools to replace the template reference with an indication of the parameter’s named data type, possibly including additional details or a hyperlink to such details. This overrides processing tools’ expected default behavior (unless suppressed by {{nodatatype}}) of describing the named data type before the rest of the description.
The OPTIONAL argument affects how the data type is described. If it has the literal value “expand”, processing tools SHOULD replace the template reference with the actual description of the named data type (as opposed to referencing the description of the named data type).
Profile description{{profdesc}}
{{noprofdesc}}
An auto-generated description of a profile.
This template SHOULD only be used within the description of a profile (A.2.11).
This is a hint to processing tools to replace the template reference with a description of the profile. This overrides processing tools’ expected default behavior (unless suppressed by {{noprofdesc}}) of describing the profile before the rest of the description.
Typically processing tools will generate text of the form “This table defines the <profile:v> profile for the <object:m> object. The minimum REQUIRED version for this profile is <object:m.n>.” (or more complex text if the profile is based on or extends other profiles).
Enumeration reference{{enum|value}}
{{enum|value|param}}
{{enum|value|param|scope}}
{{enum}}
{{noenum}}
A reference to the specified enumeration value.
The OPTIONAL value argument specifies one of the enumeration values for the referenced parameter. If present, it MUST be a valid enumeration value for that parameter.
The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed.
If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s enumerations, possibly preceded by text such as “Enumeration of:”. This overrides processing tools’ expected default behavior (unless suppressed by {{noenum}}) of listing the parameter’s enumerations after the rest of the description.
Otherwise, typically processing tools will (a) validate that the enumeration value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
Markup examples:
{{enum|None}}
{{enum|None|OtherParam}}
Pattern reference{{pattern|value}}
{{pattern|value|param}}
{{pattern|value|param|scope}}
{{pattern}}
{{nopattern}}
A reference to the specified pattern value.
The OPTIONAL value argument specifies one of the pattern values for the referenced parameter. If present, it MUST be a valid pattern value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed.
If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s patterns, possibly preceded by text such as “Possible patterns:”. This overrides processing tools’ expected default behavior (unless suppressed by {{nopattern}}) of listing the parameter’s patterns after the rest of the description.
Otherwise, typically processing tools will (a) validate that the pattern value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
Markup examples:
{{pattern|None}}
{{pattern|None|OtherParam}}
Hidden value{{hidden}}
{{hidden|value}}
{{nohidden}}
Text explaining that the value of the current parameter is hidden and cannot be read. This template SHOULD only be used within the description of a hidden parameter (A.2.7.1).
This is a hint to processing tools to replace the template reference with text explaining that the value of the current parameter is hidden and cannot be read. This overrides processing tools’ expected default behavior (unless suppressed by {{nohidden}}) of placing this text after the rest of the description.
The OPTIONAL argument indicates the value that is returned when the current parameter is read. If omitted this defaults to the expansion of the {{null}} template.
Typically, processing tools will generate text of the form “When read, this parameter returns <arg>, regardless of the actual value.”.
Command parameter{{command}}
{{nocommand}}
Text explaining that the current parameter is a command parameter that triggers an Agent action. This template SHOULD only be used within the description of such a command parameter (A.2.7.1).
This is a hint to processing tools to replace the template reference with text explaining that the current parameter is a command parameter that always reads back as {{null}}. This overrides processing tools’ expected default behavior (unless suppressed by {{nocommand}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The value is not part of the device configuration and is always {{null}} when read.”.
Factory default value{{factory}}
{{nofactory}}
Text listing the factory default for the current parameter. This template SHOULD only be used within the description of a parameter that has a factory default value.
This is a hint to processing tools to replace the template reference with text listing the factory default value. This overrides processing tools’ expected default behavior (unless suppressed by {{nofactory}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The factory default value MUST be <value>.”.
Unique keys description{{keys}}
{{nokeys}}
A description of the current object’s unique keys.
This template SHOULD only be used within the description of a Multi-Instance Object (table) that defines one or more unique keys (A.2.10.1).
This is a hint to processing tools to replace the template reference with a description of the object’s unique keys. This overrides processing tools’ expected default behavior (unless suppressed by {{nokeys}}) of describing the unique keys after the description.
Units reference{{units}}The parameter’s units string.
Typically, processing tools will (a) check that the parameter has a units string, and (b) substitute the value of its units string.
Boolean values{{false}}
{{true}}
Boolean values.
Typically, processing tools will substitute the value False or True, possibly rendered in a distinctive font.
Discriminator parameter description{{union}}
{{nounion}}
Text explaining the available options and use for the sub-objects which are part of the union.
This template SHOULD only be used within the description of a parameter declared as a discriminatorParameter (A.2.10.1).
This is a hint to processing tools to replace the template reference with text explaining the union and possible choices of sub-objects. This overrides processing tools’ expected default behavior (unless suppressed by `{{nounion}}) of placing this text after the rest of the description.
Typically, processing tools will generate text of the form “This parameter defines the name of the currently active sub-object of a union, members of the union are <objects>.” but it MAY be followed by additional text, explaining the use of the available options, if desired.
Miscellaneous{{issue|descr}}
{{issue|opts|descr}}
An open issue.
If only one argument is supplied, it is descr, which describes the open issue. If two arguments are supplied, they are opts and descr.
The OPTIONAL opts argument is a comma-separated list of options:
- The first list item is an issue category that defaults to “XXX”.
- The second list item is an issue status that defaults to an empty string. Any non-empty status implies that the issue has been resolved.
Typically, processing tools will assign a unique ID, e.g. a separate counter for each category of issue, and replace the template reference with the issue category, ID, status and description, possibly rendered in a distinctive font.
Markup examples:
{{issue|Will be labeled XXX.}}
{{issue|IPsec|Will be labeled IPsec.}}
{{issue|DNS,fixed|Resolved DNS issue.}}
{{empty}}Represents an empty string. Typically, processing tools will render such values in a distinctive font, possibly using standard wording, such as <Empty> or “an empty string”.
{{null}}Expands to the appropriate null value for the current parameter’s data type (A.2.3.5), e.g. {{empty}}, {{false}} or 0.
+ +

A.2.2.5 HTML Example

+ +

This includes examples of most of the markup and templates.

+ +
    <model name="Goo:1.1" base="Goo:1.0">
+      <object name="GooTop." access="readOnly" minEntries="1" maxEntries="1">
+        <parameter name="ExampleParam" access="readOnly">
+          <description>
+    {{section|Introduction}}This is an ''example'' parameter that
+    illustrates many of the '''formatting''' templates. For
+    '''''example''''', this references {{bibref|TR-106a1|section 3.2}}.
+
+    {{section|Usage}}This parameter is called {{object}}{{param}}. One can
+    also reference other parameters in the same object, such as
+    {{param|OtherParameter}}, and indicate that the parameter value is
+    measured in {{units}}.
+
+    One can also include bulleted lists:
+    * level one
+    ** level two
+    * level one again
+    ** level two again
+    *** level three
+    *: level one continued
+
+    and numbered lists:
+    # level one
+    ## level two
+    # level one again
+    ## level two again
+    ### level three
+    #: level one continued
+
+    and indented lists
+    : level one
+    :: level two
+    : level one again
+    :: level two again
+    ::: level three
+
+    and hyperlinks such as http://www.google.com
+
+    and code examples:
+     if (something) {
+       /* do something */
+     } else {
+       /* do other */
+     }
+
+    If the parameter was Boolean, one could refer to its values {{false}}
+    and {{true}}.
+
+    One can refer to its enumerations individually, e.g. {{enum|Disabled}},
+    or to other parameters' enumerations, such as {{enum|Value|OtherParam}},
+    or can list them all. {{enum}}
+
+    Finally, if there were any patterns they could be listed too. {{pattern}}
+          </description>
+          <syntax>
+            <string>
+              <enumeration value="A"/>
+              <enumeration value="B"/>
+              <units value="packets"/>
+            </string>
+          </syntax>
+        </parameter>
+ +

The resulting HTML would look something like this:

+ + + +

A.2.3 Data Types

+ +

CWMP [1] and USP [2] data models support only the primitive data +types listed in the last row of Table 3 “on the wire”. However, the DM +Schema allows data types to be derived from the primitive types or from +other named data types. Such derived types can be named or anonymous.

+ +

A.2.3.1 Named Data Types

+ +

Named data types are defined using the top-level dataType element. A DM +Instance can contain zero or more top-level dataType elements.

+ +

When defining a new named data type, the following attributes and +elements are relevant (normative requirements are specified in the +schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3: XML Named Data Types
NameDescription
nameThe data type name.
baseThe base type name, i.e. name of the data type from which this data type is derived. This is used only where the base type is itself a named data type, not a primitive type.
statusThe data type’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new data type.
descriptionThe data type’s description (A.2.2).
list
minItems
maxItems
nestedBrackets
size
If the data type is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3).
Note that a list-valued data type is always a string as far as the protocol is concerned. For a list, the rest of the data type specification refers to the individual list items, not to the parameter value.
size
pathRef
instanceRef
range
enumeration
enumerationRef
pattern
units
default
Data type facets (A.2.3.3). These are permitted only when the base type is a named data type, i.e. when the base attribute is specified.
base64
boolean
dateTime
hexBinary
int
long
string
unsignedInt
unsignedLong
Primitive data type definition. These are permitted only when the base type is primitive. There is an element for each primitive data type, and each element supports only the facets (A.2.3.3) that are appropriate to that data type.
+ +

For example:

+ +
    <dataType name="String255">
+      <description>String of maximum length 255.</description>
+      <string>
+        <size maxLength="255"/>
+      </string>
+    </dataType>
+
+    <dataType name="String127" base="String255">
+      <description>String of maximum length 127.</description>
+      <size maxLength="127"/>
+    </dataType>
+
+    <dataType name="String127List" base="String127">
+      <description>List of up to 7 strings, each of maximum length 127. If a
+      list item is itself a list, it will be "protected" by square
+      brackets.</description>
+      <list maxItems="7" nestedBrackets="required"/>
+    </dataType>
+ +

A.2.3.2 Anonymous Data Types

+ +

Anonymous data types are defined within parameter syntax elements +(A.2.7.1), and can apply only to the parameters within which they are +defined. For example:

+ +
    <parameter name="Example1" access="readOnly">
+      <syntax>
+        <string>
+          <size maxLength="127"/>
+          </string>
+      </syntax>
+    </parameter>
+
+    <parameter name="Example2" access="readOnly">
+      <syntax>
+        <dataType base="String255">
+          <size maxLength="127"/>
+        </dataType>
+      </syntax>
+    </parameter>
+ +

If an anonymous data type is modified in a later version of a data +model, the modified anonymous data type is regarded as being derived +from the original anonymous data type. Therefore the base type +restriction rules of A.2.3.8 MUST be obeyed.

+ +

A.2.3.3 Data Type Facets

+ +

A facet specifies some aspect of a data type, e.g. its size, range or +units.

+ +

Note that XML Schema [4] also associates facets with data types. The +XML Schema and DM Schema concepts are the same, but the set of facets is +not identical.

+ +

The DM Schema defines the following facets (normative requirements are +specified in the schema):

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4: XML Data Type Facets
NameDescription
sizeSize ranges for the data type (applies to string, base64, hexBinary and their derived types). Note that the size facet always refers to the actual value, not to the base64- or hexBinary-encoded value. Prior to the definition of the DM Schema, the maximum sizes of base64 parameters referred to the base64-encoded values.
Processing tools that generate reports from DM Instances SHOULD include explicit clarification of whether the size ranges refer to the actual or encoded values.
Note that the size facet is also used to specify the size range for list-valued parameters, which are always strings (A.2.7.1).
pathRefDetails of how to reference parameters and objects via their Path Names (applies to string and its derived types; A.2.3.7).
instanceRefDetails of how to reference object instances (table rows) via their Instance Numbers (applies to int, unsignedInt and their derived types; A.2.3.7).
rangeValue ranges and step (default step is 1) for the data type (applies to numeric data types and their derived types).
enumerationEnumerations for the data type (applies to string and its derived types).
enumerationRefEnumerations for the data type, obtained at run-time from the value of a specified parameter (applies to string and its derived types; A.2.3.7).
patternPatterns for the data type (applies to string and its derived types). Pattern value syntax is the same as for XML Schema regular expressions. See [Section F/12].
unitsUnits for the data type (applies to numeric data types and their derived types).
defaultObject, factory, implementation or parameter default.
- Object defaults apply only to parameters that can be created as a result of an AddObject RPC.
- Factory defaults apply to all parameters (if a factory default is specified, it also acts as object default for applicable parameters).
- Implementation defaults apply to all parameters (they are informational defaults that are likely after a reset or if no other value is available).
- Parameter defaults apply only to command and event arguments.
+ +

It is important to note that the enumeration facet does not necessarily +define all the valid values for a data type. This is for the following +reasons:

+ +
    +
  • As specified in Section 3.3, vendors are allowed to add additional +enumeration values.

  • +
  • A future version of a data model may need to add additional +enumeration values.

  • +
+ +

A.2.3.4 Reference Path Names

+ +

Some description templates (A.2.2.4), and all reference facets +(A.2.3.7), need to specify parameter or object names. It is always +possible to specify a full Path Name, but it is frequently necessary or +convenient to specify a relative Path Name. For example, it might be +necessary to reference another parameter in the current object. Any +Instance Numbers in the parameter’s full Path Name cannot be known at +data model definition time, so this can only be done using a relative +Path Name.

+ +

The following rules apply to all Path Names that are used in data model +definitions for referencing parameters or objects:

+ +
    +
  • Path Names MAY contain “{i}” placeholders, which MUST be interpreted +as wild cards matching all Instance Numbers, e.g. +“Device.Ethernet.Interface.{i}.” references all Ethernet.Interface +instances.

  • +
  • Path Names MUST NOT contain Instance Numbers.

  • +
+ +

A Path Name is always associated with a path name scope, which defines +the point in the naming hierarchy relative to which the Path Name +applies.

+ +
+ + +++ + + + + + + + + + + + + + + + +
Table 5: Path Name Scope Definition
NameDescription
normalThis is a hybrid scope which usually gives the desired behavior:
- If the path begins with a “Device” component, it is relative to +the top of the naming hierarchy.
- If the path begins with a dot, it is relative to the Root or +Service Object (c.f. scope=model).
- Otherwise, the path is relative to the current object (c.f. +scope=object).
modelThe path is relative to the Root or Service Object.
objectThe path is relative to the current object.
+ +

Formally, if the path name scope is normal:

+ +
    +
  • If the path is empty, it MUST be regarded as referring to the top of +the naming hierarchy.

  • +
  • Otherwise, if the path begins with a “Device” component, it MUST be +regarded as a full Path Name.

  • +
  • Otherwise, if the path begins with a dot (“.”), it MUST be regarded +as a path relative to the Root or Service Object. For example, in +the Device Root Object “.DeviceInfo.” means “Device.DeviceInfo.”, +and in the Device.Services.ABCService.1 Service Object it means +“Device.Services.ABCService.1.DeviceInfo.”.

  • +
  • Otherwise, it MUST be regarded as a path relative to the current +object. Any leading hash characters (“#”) cause it to be relative +to the parent of the current object (or the parent’s parent, and so +on) as described below. For example, if the current object is +“Device.LAN.”, “IPAddress” means “Device.LAN.IPAddress”, +“Stats.” means “Device.LAN.Stats.” and “#.DeviceInfo.” means +“Device.DeviceInfo” (see below for more “#” examples).

  • +
+ +

If the path name scope is model:

+ +
    +
  • If the path is empty, it MUST be regarded as referring to the Root +or Service Object.

  • +
  • Otherwise, it MUST be regarded as a path relative to the Root or +Service Object. Any leading dot MUST be ignored. Leading hash +characters are not permitted.

  • +
+ +

If the path name scope is object:

+ +
    +
  • If the path is empty, it MUST be regarded as referring to the +current object.

  • +
  • Otherwise, it MUST be regarded as a path relative to the current +object. Any leading dot MUST be ignored. Leading hash characters are +not permitted.

  • +
+ +

As mentioned above, if the path name scope is normal, a leading hash +character causes the path to be relative to the parent of the current +object. Additional hash characters reference the parent’s parent, and so +on, but they MUST NOT be used to reference beyond the Root or Service +Object. Also, for object instances, “#.” always means the +Multi-Instance Object’s (table’s) parent rather than the Multi-Instance +Object (table).

+ +

In addition, within a component definition, items that are defined +outside the component MUST NOT be referenced via relative paths. This is +because components can be included anywhere within the data model tree.

+ +

For example, if the current object is “Device.LAN.DHCPOption.{i}.”:

+ +
    +
  • “#.” means “Device.LAN.” (the table’s parent, not the table).

  • +
  • “#.DHCPOption.” means “Device.LAN.DHCPOption.” (the table).

  • +
  • “#.Stats.” means “Device.LAN.Stats.”.

  • +
  • “#.Stats.TotalBytesSent” means “Device.LAN.Stats.TotalBytesSent”.

  • +
+ +

The following examples would be invalid if LAN was defined within a +component:

+ +
    +
  • “##.” means “Device.”.

  • +
  • “##.DeviceInfo.” means “Device.DeviceInfo.”.

  • +
  • “##.DeviceInfo.Manufacturer” means +“Device.DeviceInfo.Manufacturer”.

  • +
+ +

The final example can never be valid:

+ +
    +
  • “###.” is not permitted (references beyond the Root Object).
  • +
+ +

Note that the term “Root or Service Object”, which is used several times +above, means “if within a Service Object instance, the Service Object +instance; otherwise, the Root Object”.

+ +

For example, the pathRef and instanceRef facets (A.2.3.7) have a +targetParent attribute which specifies the possible parent(s) of the +referenced parameter or object, and a targetParentScope attribute +(defaulted to normal) which specifies targetParent’s scope. If the +current object is within a Service Object instance, setting +targetParentScope to model forces the referenced parameter or object to +be in the same Service Object instance. Similarly, setting +targetParentScope to object forces the referenced parameter or object to +be in the same object or in a sub-object.

+ +

A.2.3.5 Null Values and References

+ +

Each primitive data type has an associated null value that is used, for +example, as the expansion of the {{null}} template (A.2.2.4). These null +values are defined as follows:

+ +
    +
  • base64, hexBinary, string: an empty string

  • +
  • unsignedInt, unsignedLong: 0

  • +
  • int, long: -1

  • +
  • boolean: false

  • +
  • dateTime: 0001-01-01T00:00:00Z (the Unknown Time; see Section 3.2.1)

  • +
+ +

A null reference indicates that a reference parameter is not currently +referencing anything. The value that indicates a null reference is the +null value for the reference parameter’s base data type, i.e.:

+ +
    +
  • string: an empty string

  • +
  • unsignedInt: 0

  • +
  • int: -1

  • +
+ +

A.2.3.6 Reference Types

+ +

A reference to another parameter or object can be weak or strong:

+ +
    +
  • weak: it does not necessarily reference an existing parameter or +object. For example, if the referenced parameter or object is +deleted, the value of the reference parameter might not get updated. +All weak reference parameters MUST be declared as writable.

  • +
  • strong: it always either references a valid parameter or object, +or else is a null reference (A.2.3.5). If the referenced parameter +or object is deleted, the value of the reference parameter is always +set to a null reference.

  • +
+ +

See Section 3.2.3 for normative requirements relating to reference types +and the associated Agent behavior.

+ +

A.2.3.7 Reference Facets

+ +

A reference facet specifies how a parameter can reference another +parameter or object. There are three sorts of reference:

+ +
    +
  • Path reference: references another parameter or object via its +Path Name. Details are specified via the pathRef facet, which +applies to string and its derived types.

  • +
  • Instance reference: references an object instance (table row) +via its Instance Number. Details are specified via the instanceRef +facet, which applies to int, unsignedInt and their derived types.

  • +
  • Enumeration reference: references a list-valued parameter via +its Path Name. The current value of the referenced parameter +indicates the valid enumerations for this parameter. Details are +specified via the enumerationRef facet, which applies to string and +its derived types.

  • +
+ +

When defining a path reference, the following attributes and elements +are relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 6: PathRef Facet Definition
NameDescription
targetParentAn XML list of Path Names that can restrict the set of parameters and objects that can be referenced. If the list is empty (the default), then anything can be referenced. Otherwise, only the immediate children of one of the specified objects can be referenced.
A “{i}” placeholder in a Path Name acts as a wild card, e.g. “Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.”. Path Names cannot contain explicit Instance Identifiers.
targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
targetTypeSpecifies what types of item can be referenced:
- any: any parameter or object can be referenced (default)
- parameter: any parameter can be referenced
- object: any object can be referenced
- single: any single-instance object can be referenced
- table: any Multi-Instance Object (table) can be referenced
- row: any Multi-Instance Object (table) instance (row) can be referenced
targetDataTypeSpecifies the valid data types for the referenced parameter. Is relevant only when targetType is any or parameter.
Possible values are as follows:
- any: a parameter of any data type can be referenced (default)
- base64: only a base64 parameter can be referenced
- boolean: only a boolean parameter can be referenced
- dateTime: only a dateTime parameter can be referenced
- hexBinary: only a hexBinary parameter can be referenced
- integer: only an integer (int, long, unsignedInt or unsignedLong) parameter can be referenced
- int: only an int parameter can be referenced
- long: only a long (or int) parameter can be referenced
- string: only a string parameter can be referenced
- unsignedInt: only an unsignedInt parameter can be referenced
- unsignedLong: only an unsignedLong (or unsignedInt) parameter can be referenced
- <named data type>: only a parameter of the named data type can be referenced
In addition, a parameter whose data type is derived from the specified data type can be referenced. The built-in type hierarchy (a simplified version of the XML Schema type hierarchy) is as follows:
any
  base64
  boolean
  dateTime
  hexBinary
  integer
    long
      int
    unsignedLong
      unsignedInt
  string
Note that any and integer are not valid parameter data types. They are included in order to support “can reference any data type” and “can reference any numeric data type”.
refTypeSpecifies the reference type (A.2.3.6): weak or strong.
+ +

When defining an instance reference, the following attributes and +elements are relevant (normative requirements are specified in the +schema).

+ +
+ + +++ + + + + + + + + + + + + + + + +
Table 7: InstanceRef Facet Definition
NameDescription
targetParentSpecifies the Path Name of the Multi-Instance Object (table) of which an instance (row) is being referenced.
“{i}” placeholders and explicit Instance Identifiers are not permitted in the Path Name. targetParentScope can be used to specify Path Names relative to the Root or Service Object or the current object.
targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
refTypeSpecifies the reference type (A.2.3.6): weak or strong.
+ +

When defining an enumeration reference, the following attributes and +elements are relevant (normative requirements are specified in the +schema).

+ +
+ + +++ + + + + + + + + + + + + + + + +
Table 8: EnumerationRef Facet Definition
NameDescription
targetParamSpecifies the Path Name of the list-valued parameter whose current value indicates the valid enumerations for this parameter.
targetParamScopeSpecifies the point in the naming hierarchy relative to which targetParam applies (A.2.3.4): normal (default), model or object.
nullValueSpecifies the parameter value that indicates that none of the values of the referenced parameter currently apply (if not specified, no such value is designated).
Note that if this parameter is list-valued then nullValue is not relevant, because this condition will be indicated by an empty list.
+ +

The following examples illustrate the various possible types of +reference.

+ +
    <object name="PeriodicStatistics.SampleSet.{i}.Parameter.{i}." ...>
+      ...
+      <parameter name="Reference" access="readWrite">
+        <description>Reference to the parameter that is associated with this
+        object instance. This MUST be the parameter's full path name.</description>
+        <syntax>
+          <string>
+            <size maxLength="256"/>
+            <pathRef targetType="parameter" refType="weak"/>
+          </string>
+          <default type="object" value=""/>
+        </syntax>
+      </parameter>
+ +
    <object name="StorageService.{i}.StorageArray.{i}." ...>
+      ...
+      <parameter name="PhysicalMediumReference" access="readWrite">
+        <description>A comma-separated list of Physical Medium references.
+        Each Physical Medium referenced by this parameter MUST exist within the
+        same StorageService instance. A Physical Medium MUST only be referenced
+        by one Storage Array instance. Each reference can be either in the form
+        of ".PhysicalMedium.{i}" or a fully qualified object
+        name...</description>
+        <syntax>
+          <list>
+            <size maxLength="1024"/>
+          </list>
+          <string>
+            <pathRef targetParent=".PhysicalMedium." targetParentScope="model"
+            targetType="row" refType="strong"/>
+          </string>
+        </syntax>
+      </parameter>
+ +
    <object name="STBService.{i}.Components.FrontEnd.{i}.IP.Inbound.{i}." ...>
+      ...
+      <parameter name="StreamingControlProtocol" access="readOnly">
+        <description>Network protocol currently used for controlling streaming
+        of the source content, or an empty string if the content is not being
+        streamed or is being streamed but is not being controlled. If non-empty,
+        the string MUST be one of the .Capabilities.FrontEnd.IP.StreamingControlProtocols
+        values.</description>
+        <syntax>
+          <string>
+            <enumerationRef
+            targetParam=".Capabilities.FrontEnd.IP.StreamingControlProtocols"
+            nullValue=""/>
+          </string>
+        </syntax>
+      </parameter>
+
+      <parameter name="StreamingTransportProtocol" access="readOnly">
+        <description>Network protocol currently used for streaming the source
+        content, or an empty string if the content is not being streamed.
+        If non-empty, the string MUST be one of the
+        .Capabilities.FrontEnd.IP.StreamingTransportProtocols
+        values.</description>
+        <syntax>
+          <string>
+            <enumerationRef
+            targetParam=".Capabilities.FrontEnd.IP.StreamingTransportProtocols"
+            nullValue=""/>
+          </string>
+        </syntax>
+      </parameter>
+ +
    <object name="Device.WiFi.AccessPoint.{i}.Security." ...>
+      ...
+      <parameter name="ModeEnabled" access="readWrite">
+        <description>Indicates which security mode is enabled.</description>
+        <syntax>
+          <list/>
+          <string>
+            <enumerationRef targetParam="ModesSupported"/>
+          </string>
+        </syntax>
+      </parameter>
+ +

A.2.3.8 Base Type Restriction

+ +

A new data type MUST always be a restriction of its base type, meaning +that a valid value of the new data type will always be a valid value for +its base type. This is the case for the examples of A.2.3.1, which +involve three different data types:

+ +
    +
  • string of unlimited length

  • +
  • string of maximum length 255

  • +
  • string of maximum length 127

  • +
+ +

Clearly a string of length 100 is valid for all three data types, but a +string of length 200 is only valid for the first two data types.

+ +

The examples of A.2.3.1 considered only the size facet, but in general +all facets that are applicable to the data type have to be considered. +The base type restriction requirements for each facet are as follows:

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 9: XML Facet Inheritance Rules
FacetRequirements
sizeThe derived data type can define sizes in any way, provided that the new sizes do not permit any values that are not valid for the base type.
pathRefThe derived data type can modify the data type in the following ways:
- By “promoting” status to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
- By changing targetParent to narrow the set of possible parent objects.
- By changing targetType to narrow the set of possible target types.
- By changing targetDataType to narrow the set of possible target data types.
instanceRefThe derived data type can modify the data type in the following ways:
- By “promoting” status to a “higher” value, as described for pathRef.
- By changing targetParent to narrow the set of possible parent objects.
rangeThe derived data type can define ranges in any way, provided that the new ranges do not permit any values that are not valid for the base type.
enumerationThe derived data type can modify existing enumeration values in the following ways:
- By “promoting” access from readOnly to readWrite or writeOnceReadOnly.
- By “promoting” status to a “higher” value, as described for pathRef.
- By “promoting” optional from False to True.
- By adding a code, if none was previously specified.
- By using the action attribute to prefix, extend or replace the description (see below and A.2.12.6).
The derived data type can add new enumeration values.
enumerationRefThe derived data type can modify the data type by “promoting” status to a “higher” value, as described for pathRef.
patternThe derived data type can modify existing pattern values by changing access, status, optional and description exactly as for enumerations.
The derived data type can add new patterns and/or replace existing patterns with new patterns, provided that the new patterns do not permit any values that are not valid for the base type. For example a single pattern “[AB]” could be replaced with “A” and “B”, but “C” could not be added.
unitsThe derived data type can add units if the base type did not specify any.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors. For example, if the base type supports a +range of [-1:4095] but the values 0 and 4095 were included in error, +it would be permissible for a derived type to support ranges of +[-1:-1] and [1:4094]. Processing tools SHOULD be able to detect and +warn about such cases.

+ +

When defining a new data type, if a facet is omitted, the new data type +will inherit that facet from its base type. If a facet is present, it +MUST be fully specified (except that special rules apply to +descriptions; see below and A.2.12.6). For example, this means that a +derived type that adds additional enumeration values has also to +re-declare the enumeration values of the base type.

+ +

In the following example, the derived type inherits the units facet from its +parent but it does not inherit the range facet, so the DataBlockSize range is +[0:65535] and the DataBlockSize2 range is [40:1460].

+ +
   <dataType name="DataBlockSize">
+     <unsignedInt>
+       <range maxInclusive="65535"/>
+       <units value="bytes"/>
+     </unsignedInt>
+   </dataType>
+
+   <dataType name="DataBlockSize2" base="DataBlockSize">
+     <range minInclusive="40" maxInclusive="1460"/>
+   </dataType>
+ +

Similarly, in the following, the enumeration values for ABCD are not A, +B, C and D, but are just C and D. This is an error (because the derived +type cannot remove enumeration values), and processing tools SHOULD +detect and warn about such cases.

+ +
    <dataType name="AB">
+      <string>
+        <enumeration value="A"/>
+        <enumeration value="B"/>
+      </string>
+    </dataType>
+
+    <dataType name="ABCD" base="AB">
+      <string>
+        <enumeration value="C"/>
+        <enumeration value="D"/>
+      </string>
+    </dataType>
+ +

A derived data type and any of its facets that support descriptions will +inherit those descriptions from the base type. Facet descriptions are +inherited regardless of whether the facet is present in the derived +type. For any descriptions that are explicitly specified in the derived +type, the action attribute controls whether they will be prefixed, +extended or replaced (A.2.12.6).

+ +

For example, in the following, the description of Z (which is not +changed) does not have to be repeated.

+ +
    <dataType name="XY">
+      <description>This is XY.</description>
+      <string>
+        <enumeration value="X">
+          <description>This is X.</description>
+        </enumeration>
+        <enumeration value="Y">
+          <description>This is Y.</description>
+        </enumeration>
+        <enumeration value="Z">
+          <description>This is Z.</description>
+        </enumeration>
+      </string>
+    </dataType>
+
+    <dataType name="XY2" base="XY">
+      <description action="replace">This is all about XY.</description>
+      <enumeration value="X">
+        <description action="append">This is more about X, added at the
+        end.</description>
+      </enumeration>
+      <enumeration value="Y">
+        <description action="prefix">This is more about Y, inserted at the
+        beginning.</description>
+      </enumeration>
+      <enumeration value="Z"/>
+    </dataType>
+ +

A.2.4 Glossary, Abbreviations, Bibliography and Templates

+ +

A.2.4.1 Glossary

+ +

The glossary is defined using the top-level glossary element, which can +contain zero or more item elements.

+ +

When defining a new glossary item, the following attributes and elements +are relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + +
Table 10: XML Glossary Items
NameDescription
idThe glossary item ID. This is the term that is being defined.
descriptionThe description of the glossary item. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
+ +

A.2.4.2 Abbreviations

+ +

Abbreviations are defined using the top-level abbreviations element, +which can contain zero or more item elements.

+ +

When defining a new abbreviation, the following attributes and elements +are relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + +
Table 11: XML Abbreviation Items
NameDescription
idThe abbreviation item ID. This is the abbreviation that is being defined.
descriptionThe description of the abbreviation. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
+ +

A.2.4.3 Bibliography

+ +

The bibliography is defined using the top-level bibliography element, +which can contain zero or more (bibliographic) reference elements.

+ +

When defining a new bibliographic reference, the following attributes +and elements are relevant (normative requirements are specified in the +schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 12: XML Bibliographic References
NameDescription
idThe bibliographic reference ID.
nameThe name by which the referenced document is usually known.
titleThe document title.
organizationThe organization that published the referenced document, e.g. BBF, IEEE, IETF.
categoryThe document category, e.g. TR (BBF), RFC (IETF).
dateThe publication date.
hyperlinkHyperlink(s) to the document.
+ +

For BBF standard DM Instances, the C.3.7 rules apply.

+ +

Processing tools SHOULD be lenient when comparing bibliographic +reference IDs. Specifically, they SHOULD ignore all whitespace, +punctuation, leading zeros in numbers, and upper / lower case. So, for +example, “rfc 1234” and “RFC1234” would be regarded as the same ID, as +would “TR-069” and “TR69”.

+ +

Processing tools SHOULD detect and report inconsistent bibliographic +references, e.g. a reference with the same ID (i.e. an ID that compares +as equal) as one that was encountered in a different file, but with a +different name or hyperlink.

+ +

A.2.4.4 Templates

+ +
+

The term “template” is used for both description templates +(A.2.2.4) such as {{bibref}} and (confusingly) +{{template}}, and for the template elements described here.

+ +

Template elements define named blocks of text that can be included (using +{{template}} description templates) in descriptions.

+ +

When defining a new template element, the following attributes and elements are +relevant (normative requirements are specified in the schema).

+ +
+ + + + + + + + + + + + + + +
Table 13: XML Template Elements
NameDescription
idThe template ID. This identifies the template that is being defined.
<body>The template body.
+ +

When including a template body in a description, processing tools MUST +pre-process the value as for descriptions (A.2.2.2) and +then replace the {{template}} description template with the resulting +text. The template body might contain markup, possibly including further +{{template}} description templates, so processing tools MUST then process the +expanded text.

+ +

A.2.5 Components

+ +

A component is a way of defining a named set of parameters, objects +and/or profiles to be used wherever such a group is needed in more than +one place (or just to structure the definitions). A DM Instance can +contain zero or more top-level component elements.

+ +

When defining a new component, the following attributes and elements are +relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 14: XML Component Definition
NameDescription
nameThe component name.
descriptionThe component’s description (A.2.2).
componentThe other components that are referenced (included) by this component.
parameterThe component’s top-level parameter definitions (A.2.7).
objectThe component’s object definitions (A.2.10).
profileThe component’s profile definitions (A.2.11).
+ +

Referencing (including) a component can be thought of as textual +substitution. A component has no version number and is not tied to a +particular Root or Service Object.

+ +

The following is a simple example of component definition and reference.

+ +
    <component name="ByteStats">
+      <parameter name="BytesSent" access="readOnly">
+        <description>Number of bytes sent.</description>
+        <syntax><unsignedInt/></syntax>
+      </parameter>
+      <parameter name="BytesReceived" access="readOnly">
+        <description>Number of bytes received.</description>
+        <syntax><unsignedInt/></syntax>
+      </parameter>
+    </component>
+ +
    <model name="Device:2.11">
+      <object name="Device." access="readOnly" minEntries="1"
+      maxEntries="1">
+        ...
+        <component ref="ByteStats"/>
+        ...
+      </object>
+      ...
+    </model>
+ +

Here the component is referenced from within an object definition. +Components can be referenced from within component, model, object, +command and event definitions. Parameter, command, event, object and +profile definitions within components are relative to the point of +inclusion unless overridden using the path attribute.

+ +

A.2.6 Root and Service Objects

+ +

Root and Service Objects are defined using the model element and an +associated top-level object element. A DM Instance can contain zero or +more top-level model elements.

+ +

When defining a new model, the following attributes and elements are +relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 15: XML Root and Service Objects
NameDescription
nameThe model name, including its major and minor version numbers.
baseThe name of the previous version of the model (for use when the model version is greater than 1.0).
isServiceWhether it is a Service Object. This defaults to False and so can be omitted for Root Objects.
descriptionThe model’s description (A.2.2).
componentThe components that are referenced (included) by the model (A.2.5).
parameterThe model’s top-level parameter definitions (A.2.7).
objectThe model’s top-level and other object definitions (A.2.10).
profileThe model’s profile definitions (A.2.11).
+ +

Once a given version has been defined, it cannot be modified; instead, a +new version of the object has to be defined. For example, the following +example defines v1.0 and v1.1 of a notional Service Object.

+ +
    <model name="DemoService:1.0" isService="true">
+      <parameter name="DemoServiceNumberOfEntries" access="readOnly"/>
+      <object name="DemoService.{i}." access="readOnly" minEntries="0"
+      maxEntries="unbounded" entriesParameter="DemoServiceNumberOfEntries"/>
+    </model>
+ +
    <model name="DemoService:1.1" base="DemoService:1.0"
+    isService="true">
+      <object base="DemoService.{i}." access="readOnly" minEntries="0"
+      maxEntries="unbounded"/>
+    </model>
+ +

A.2.7 Parameters

+ +

Parameters are defined using the parameter element, which can occur +within component, model and object elements. When defining a new +parameter, the following attributes and elements are relevant (normative +requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 16: XML Parameter Definition
NameDescription
nameThe parameter name (Section 3.1).
accessWhether the parameter is writable (readWrite), read-only (readOnly), or writable once then read-only (writeOnceReadOnly).
statusThe parameter’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new parameter.
activeNotifyThe parameter’s {normal, forceEnabled, forceDefault, canDeny} Active Notification status. This defaults to normal, and so is not often specified for a new parameter.
Note that in USP, forceEnabled and forceDefault are equivalent to normal.
forcedInformFor CWMP only, the parameter’s Forced Inform status. This defaults to False, and so is not often specified for a new parameter.
descriptionThe parameter’s description (A.2.2).
syntaxThe parameter’s syntax (A.2.7.1).
+ +

A.2.7.1 Parameter Syntax

+ +

Parameter syntax is defined using the syntax element, which can occur +only within parameter elements. When defining a new parameter, the +following attributes and elements are relevant (normative requirements +are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 17: XML Parameter Syntax
NameDescription
hiddenWhether the value is hidden on readback. This defaults to False, and so is not often specified for a new parameter.
commandFor CWMP only, whether setting the parameter triggers an Agent action as opposed to changing the configuration. This defaults to False.
Note that this is an CWMP-only attribute (not an element) and is different from the USP-only command element (A.2.8).
list
minItems
maxItems
nestedBrackets
size
If the parameter is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3).
Note that a list-valued parameter is always a string as far as the protocol is concerned. For a list, the rest of the syntax specification refers to the individual list items, not to the parameter value.
base64
boolean
dateTime
hexBinary
int
long
string
unsignedInt
unsignedLong
If the parameter is of a primitive data type, specifies a primitive data type reference, e.g. <int>. If the parameter data type is derived from a primitive data type, specifies an anonymous primitive data type definition (A.2.3.2), e.g. <int><range maxInclusive=“255”/></int>. Each primitive data type element supports only the facets (A.2.3.3) that are appropriate to that data type.
dataTypeIf the parameter is of a named data type, specifies a named data type (A.2.3.1) reference, e.g. <dataType ref=“IPAddress”/>.
If the parameter data type is derived from a named data type, specifies an anonymous named data type (A.2.3.2) definition, e.g. <dataType base=“IPAddress”><size maxLength=“15”/></dataType>
+ +

A.2.8 Commands (USP Only)

+ +

Data Model Commands are defined using the command element, which can +occur within component and object elements. When defining a new Data +Model Command, the following attributes and elements are relevant +(normative requirements are specified in the schema). This concept does +not apply to CWMP, which uses Objects and/or Parameters to simulate +commands.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 18: XML Command Definition
NameDescription
nameThe command name (Section 3.1).
asyncWhether this command is asynchronous or not. This defaults to false.
statusThe command’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new command.
descriptionThe command’s description (A.2.2).
inputThe command’s input arguments (can be omitted if there are none).
outputThe command’s output arguments (can be omitted if there are none).
+ +

The input / output elements define the command’s input / output +arguments (respectively).

+ +
+ + +++ + + + + + + + + + + + + + + + +
Table 19: XML Command Input / Output Arguments Definition
NameDescription
componentThe arguments defined by components that are referenced (included) by the command (A.2.5).
parameterThe command’s parameter arguments (A.2.7).
objectThe command’s object arguments (A.2.10).
+ +

Command argument parameter / object elements are similar to the +corresponding data model parameter / object elements but support +different attributes, e.g. they have no access or numEntriesParameter +attributes, and they have a Boolean mandatory attribute (to indicate a +mandatory argument).

+ +

When a command references a component, any attributes not supported in +command arguments are ignored. This allows a component that defines data +model parameters / objects to be used for defining command parameter / +object arguments.

+ +

When a command argument is a table, its instance numbers MUST be 1, 2, +3… (assigned sequentially without gaps).

+ +

A.2.9 Events (USP Only)

+ +

Data Model Events are defined using the event element, which can occur +within component and object elements. When defining a new Data Model +Event, the following attributes and elements are relevant (normative +requirements are specified in the schema). This concept does not apply +to CWMP.

+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
nameThe event name (Section 3.1).
statusThe event’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new event.
descriptionThe event’s description (A.2.2).
componentThe arguments defined by components that are referenced (included) by the event (A.2.5).
parameterThe event’s parameter arguments (A.2.7).
objectThe event’s object arguments (A.2.10).
+ +

Event argument parameter / object elements are similar to the +corresponding data model parameter / object elements but support +different attributes, e.g. they have no access or numEntriesParameter +attributes, and they have a Boolean mandatory attribute (to indicate a +mandatory argument).

+ +

When an event references a component, any attributes not supported in +event arguments are ignored. This allows a component that defines data +model parameters / objects to be used for defining event parameter / +object arguments.

+ +

When an event argument is a table, its instance numbers MUST be 1, 2, +3… (assigned sequentially without gaps).

+ +

A.2.10 Objects

+ +

Objects are defined using the object element, which can occur within +component and model elements. When defining a new object, the following +attributes and elements are relevant (normative requirements are +specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 20: XML Object Definition
NameDescription
nameThe object name, specified as a partial path (Section 3.1).
accessWhether object instances can be Added or Deleted (readWrite) or not (readOnly). Adding or deleting instances is meaningful only for a Multi-Instance Object (table).
minEntriesThe minimum number of instances of this object (always less than or equal to maxEntries).
maxEntriesThe maximum number of instances of this object (can be “unbounded”). minEntries and maxEntries allow the object to be placed into one of three categories:
- minEntries=0, maxEntries=1: single-instance object which might not be allowed to exist, e.g. because only one of it and another object can exist at the same time. Note that this is not the same thing as an optional object (in a sense, all objects are optional; requirements are specified via profiles). For an object with minEntries=0, maxEntries=1, the description MUST explain why it might not be allowed to exist, e.g. referencing the other objects that constrain it.
- minEntries=1, maxEntries=1: single-instance object that is always allowed to exist.
- All other cases: Multi-Instance Object (table) (A.2.10.1).
mountTypeFor USP only, denotes whether this object is a Mountable Object, a Mount Point, or none. Possible values are:
- mountable: this object is a Mountable Object. Such an object appears only right under the Root Object.
- mountPoint: this object is a Mount Point.
- none (default): this object is neither a Mountable Object nor a Mount Point.
statusThe object’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new object.
descriptionThe object’s description (A.2.2).
componentThe components that are referenced (included) by the object (A.2.5).
parameterThe object’s parameter definitions (A.2.7).
commandFor USP only, the object’s command definitions (A.2.8).
eventFor USP only, the object’s event definitions (A.2.9).
+ +

A.2.10.1 Tables

+ +

If an object is a table, several other attributes and elements are +relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 21: XML Table Definition
NameDescription
nameFor a table, the last part of the name has to be “{i}.” (Section 3.1).
numEntriesParameterThe name of the parameter (in the parent object) that contains the number of entries in the table. Such a parameter is needed whenever there is a variable number of entries, i.e. whenever maxEntries is unbounded or is greater than minEntries.
enableParameterFor CWMP only, the name of the parameter (in each table entry) that enables and disables that table entry. Such a parameter is needed whenever access is readWrite (so the Controller might be able to create entries) and at least one uniqueKey element that defines a functional key is present.
uniqueKeyAn element that specifies a unique key by referencing those parameters that constitute the unique key (all of these parameters are single-valued, i.e. not list-valued).
In CWMP only, for a non-functional key, or if the table has no enableParameter, the uniqueness requirement always applies; for a functional key, and if the table has an enableParameter, the uniqueness requirement applies only to enabled table entries.
discriminatorParameterThe name of the parameter (in the parent object) that selects which of the available objects that are part of the same union to use. Such a discrimination parameter is needed whenever there are multiple alternative sub-objects, i.e. objects where minEntries=0 and maxEntries=1.
+ +

Each unique key is either functional or non-functional:

+ +
    +
  • A functional key references at least one parameter that is necessary for the correct operation of the table, e.g., a DHCP option tag in a DHCP option table, or an external port number in a port mapping table.

  • +
  • A non-functional key references only parameters that are not necessary for the correct operation of the table, e.g., an Alias parameter or (sometimes) a Name parameter.

  • +
+ +

A unique key is assumed to be functional unless explicitly marked as +non-functional by setting the unique key’s functional attribute to +false.

+ +

As can be seen from the description in Table 21, in CWMP, +non-functional keys are always required to be unique, regardless of whether the +table has an enableParameter, or is enabled or disabled. Therefore, at most one +entry in a given parent object can exist with a given value for a +non-functional unique key. USP doesn’t require any different behavior for both +functional and non-functional keys: all keys are always required to be unique.

+ +

The uniqueness requirement means that the value of the unique key MUST +be unique for all instances of a given parent object regardless of how +instances got created.

+ +

If a parameter (or group of parameters) is not defined as a unique key, +an Agent MUST NOT expect or require those parameters to contain a value +that is unique within the table. Such parameters MAY subsequently be +defined as a vendor-specific data model composite unique key, but that +composite unique key definition MUST include at least one +vendor-specific parameter.

+ +

A.2.11 Profiles

+ +

Profiles are defined using the profile element, which can occur within +component and model elements. When defining a new profile, the following +attributes and elements are always relevant (normative requirements are +specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 22: XML Profile Definition
NameDescription
nameThe profile name, including its version number (Section 2.3.3).
baseThe name of the previous version of the profile (for use when the profile version is greater than 1).
extendsA list of the names of the profiles that this profile extends.
minVersionA list of the model names that define the minimum versions for which this profile can be defined. Note that it is only necessary to specify this if the profile is defined within a component element.
descriptionThe profile’s description (A.2.2).
parameterThe profile’s parameter requirements, which can include descriptions, references to the parameters in question, and the parameter access requirement.
objectThe profile’s object requirements, which can include descriptions, references to the objects in question, the object access requirements, and requirements for the object’s parameters, commands and events, including requirements for command and event arguments.
+ +

Note:

+ +
    +
  • If a command or event specifies no argument requirements, this is +the same as if all of its mandatory arguments were listed.

  • +
  • If a command or event specifies argument requirements, it has to +list (at least) all its mandatory arguments.

  • +
+ +

A.2.12 Modifications

+ +

New data types, components, models and profiles can be created based on +existing items. This does not modify the existing item.

+ +

Parameters, commands, events, objects and profiles can be modified “in +place”, i.e. without creating a new item. This still uses the parameter, +command, event, object and profile elements, and is indicated by using +the base, rather than the name, attribute. The base attribute specifies +the name of the existing item that is to be modified.

+ +

The syntax for modifying an item is the same as for creating an item, +but there are rules. These rules are not specified in the DM Schema.

+ +

A.2.12.1 Parameter Modifications

+ +

The following rules govern parameter modifications.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 23: XML Parameter Modification
NameDescription
accessCan be “promoted” from readOnly to readWrite or writeOnceReadOnly.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
activeNotifyCan be changed from forceEnabled to forceDefault. No other changes are permitted.
forcedInformCannot be changed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
syntax/hiddenCannot be changed.
syntax/listCan add or modify the list element in the following ways:
- Can convert a non-list string parameter to a list provided that an empty string was already a valid value with the appropriate meaning.
- Can adjust limits on numbers of items, and on the list size, provided that the new rules do not permit any values that were not valid for the previous version of the parameter.
syntax/int etc.
syntax/dataType
Can make any change that follows the base type restriction rules of A.2.3.8, e.g. can add enumerations.
syntax/defaultA default can be added if the parameter did not already have one.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a previous version of a parameter. +Processing tools SHOULD be able to detect and warn when a parameter is +modified in a way that contravenes the above rules.

+ +

A.2.12.2 Command Modifications (USP Only)

+ +

The following rules govern command modifications.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 24: XML Command Modification
NameDescription
asyncCan be changed.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
inputCan modify input arguments according to the rules for modifying data model parameters and objects. Can add new input arguments, either directly or by referencing (including) new components.
outputCan modify output arguments according to the rules for modifying data model parameters and objects. Can add new output arguments, either directly or by referencing (including) new components.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a previous version of a parameter. +Processing tools SHOULD be able to detect and warn when a parameter is +modified in a way that contravenes the above rules.

+ +

A.2.12.3 Event Modifications (USP Only)

+ +

The following rules govern command modifications.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 25: XML Event Modification
NameDescription
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
componentCan add new arguments by referencing (including) new components.
parameterCan modify parameter arguments according to the rules for modifying data model parameters. Can add new parameter arguments.
objectCan modify object arguments according to the rules for modifying data model objects. Can add new object arguments.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a previous version of a parameter. +Processing tools SHOULD be able to detect and warn when a parameter is +modified in a way that contravenes the above rules.

+ +

A.2.12.4 Object Modifications

+ +

The following rules govern object modifications.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 26: XML Object Modification
NameDescription
accessCan be “promoted” from readOnly to readWrite.
minEntriesCannot be changed.
maxEntriesCannot be changed.
numEntriesParameterCannot be changed, unless was previously missing, in which case can be added.
enableParameterFor CWMP only, cannot be changed, unless was previously missing, in which case can be added.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
uniqueKeyCannot be changed, but new unique keys can be added.
componentCan reference (include) new components.
parameterCan add new parameters.
commandFor USP only, can add new commands.
eventFor USP only, can add new events.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a previous version of an object. +Processing tools SHOULD be able to detect and warn when an object is +modified in a way that contravenes the above rules.

+ +

A.2.12.5 Profile Modifications

+ +

The following rules govern profile modifications. They apply to the +profile element, and to its nested parameter, command, event and object +elements.

+ +
+ + +++ + + + + + + + + + + + +
Table 27: XML Profile Modification
NameDescription
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a profile. Indeed, since profiles are +immutable, the only valid reason for changing a profile is to correct +errors. Processing tools SHOULD be able to detect and warn when a +profile is modified in a way that contravenes the above rules.

+ +

A.2.12.6 Description Modifications

+ +

The following rules govern description modifications. They apply to all +description elements.

+ +
+ + +++ + + + + + + + +
Table 28: XML Description Modification
NameDescription
actionDetermines how the description will be modified; allowed values are:
- create: create a new description (this is the default but is of course not permitted when modifying a description).
- replace: replace the existing description with the new text.
- append: append the new text to the existing description.
- prefix: prefix the existing description with the new text.
+ +

In the case of prefix and append, processing tools SHOULD insert +a line break between the existing description and the new text.

+ +

A.3 DM Schema

+ +

The normative version of the DM Schema can be found at +http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-6.xsd. Please be +aware that a new version of the DM Schema might be published at any +time, in which case the version referenced in this document would become +out of date. Any conflict MUST be resolved in favor of the normative +version on the web site.

+ diff --git a/docs/06-index-cwmp-data-model-definition-xml-schema.html b/docs/06-index-cwmp-data-model-definition-xml-schema.html new file mode 100644 index 0000000..1aa5f8b --- /dev/null +++ b/docs/06-index-cwmp-data-model-definition-xml-schema.html @@ -0,0 +1,2411 @@ + + + + + + + + + + BBF – Annex A: CWMP Data Model Definition XML Schema + + + + + + + + + + + +
+ + + + +
+

Annex A: CWMP Data Model Definition XML Schema

+
+ +

A.1 Introduction

+

The CWMP Data Model Definition XML Schema [4], or DM Schema, is used for defining CWMP [1] and USP [2] data models, and is specified in A.2.12.6.

+

DM Schema instance documents can contain any or all of the following:

+
    +
  • Data type definitions

  • +
  • Root Object definitions (including profiles)

  • +
  • Service Object definitions (including profiles)

  • +
  • Component definitions

  • +
  • Vendor extension definitions

  • +
+

Annex C contains some additional normative requirements that apply only to BBF standard DM Schema instance documents.

+

Most of the data model elements are common to CWMP and USP. Those that are specific to either protocol will be noted in the description.

+

A.1.1 Character Encoding and Character Set

+

BBF standard DM Schema instance documents use UTF-8 encoding and their character set is restricted to printable ASCII characters. See C.2 for the corresponding normative requirements.

+

A.2 Normative Information

+

It is possible to create instance documents that conform to the DM Schema but nevertheless are not valid data model definitions. This is because it is not possible to specify all the normative data model definition requirements using the XML Schema language. Therefore, the schema contains additional requirements written using the usual normative language. Instance documents that conform to the DM Schema and meet these additional requirements are referred to as DM Instances.

+

For example, the definition of the parameter element includes the following additional requirements on the name and base attributes:

+
    <xs:complexType name="ModelParameter">
+      <xs:annotation>
+        <xs:documentation>
+        Parameter definition and
+        reference.
+        </xs:documentation>
+      </xs:annotation>
+
+      ...
+
+      <xs:attribute name="name" type="tns:ParameterName">
+        <xs:annotation>
+          <xs:documentation>
+          MUST be unique within the parent object
+          (this is checked by schema validation).
+
+          MUST be present if and only if defining a new
+          parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+
+      <xs:attribute name="base" type="tns:ParameterName">
+        <xs:annotation>
+          <xs:documentation>
+            MUST be present if and only if modifying an existing
+            parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+
+      ...
+
+    </xs:complexType>
+

In some cases, a requirement that is in fact implied by the DM Schema is emphasized within the schema via the xs:documentation element (the uniqueness requirement on the name is an example of this).

+

In other cases, a schema-implied requirement is not highlighted. For example, the name and base attributes are of type tns:ParameterName:

+
    <!DOCTYPE cwmp-datamodel [
+      ...
+      <!ENTITY name "([\i-[:]][\c-[:\.]]*)">
+      ...
+    ]>
+      ...
+      <xs:simpleType name="ParameterName">
+        <xs:annotation>
+          <xs:documentation>Parameter name (maximum length 256); the same as xs:NCName except that periods are not permitted.  This name MUST in addition follow the vendor-specific parameter name requirements of Section 3.3.</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:token">
+          <xs:maxLength value="256"/>
+          <xs:pattern value="&name;"/>
+        </xs:restriction>
+      </xs:simpleType>
+

This states that the parameter name is a string that follows the following rules:

+
    +
  • It is derived from xs:token, which has a whitespace facet of “collapse”, meaning that any leading whitespace in the name will be ignored.

  • +
  • It has a maximum length of 256 characters.

  • +
  • Its first character matches the pattern “[\i-:]]”, which means “any character permitted as the first character of an XML name, except for a colon”, and any subsequent characters match the pattern “[\c-[:\.]]”, which means “any character permitted in an XML name, except for a colon and a dot”.

  • +
  • It follows the vendor-specific parameter name requirements of Section 3.3.

  • +
+

The question of the location of the definitive normative information therefore arises. The answer is as follows:

+
    +
  • All the normative information in the main part of the document remains normative.

  • +
  • The DM Schema, and the additional requirements therein, are normative. Some of these additional requirements are duplicated (for emphasis) in this Annex.

  • +
  • The DM Schema references additional material in this Annex. Such material is normative.

  • +
  • If the DM Schema conflicts with a normative requirement in the main part of the document, this is an error in the DM Schema, and the requirement in the main part of the document takes precedence.

  • +
+

A.2.1 Importing DM Instances

+

DM Instances are imported using the top-level import element. The DM Schema specifies that the DM Instance is located via the file attribute.

+

The rules governing the file attribute’s value and its use for locating the DM Instance are as follows:

+
    +
  • It MUST be a URL adhering to RFC 3986 [9].

  • +
  • If the URL includes a scheme, it MUST be http, https or ftp.

  • +
  • If the URL includes an authority, it MUST NOT include credentials.

  • +
  • For standard BBF DM Instances, the rules that apply to the filename part (final path segment) of the A.2.1.1 BBFURL also apply to the filename part of this URL. This means that the corrigendum number can be omitted in order to refer to the latest corrigendum. See C.3.6 for the corresponding normative requirement.

  • +
  • If the URL is a relative reference, processing tools MUST apply their own logic, e.g. apply a search path.

  • +
+

A.2.1.1 URI Conventions

+

The top-level spec attribute contains the URI of the associated specification document, e.g. the BBF Technical Report.

+

This URI SHOULD uniquely identify the specification. More than one DM Schema instance document MAY reference the same specification.

+

The top-level file attribute contains the name of the DM Schema instance document, e.g. the XML file that defines a given version of a data model.

+

The following rules apply to the value of the top-level spec attribute:

+
    +
  • For a BBF Technical Report, it will be of the form “urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the specification number (including leading zeros), i is the issue number, a is the amendment number, and c is the corrigendum number. The issue, amendment and corrigendum numbers do not include leading zeros. For example, “urn:broadband-forum-org:tr-106-1-0” refers to TR-106 (Issue 1 Amendment 0), and “urn:broadband-forum-org:tr-106-1-2” refers to TR-106 (Issue 1) Amendment 2. See C.3.4 for the corresponding normative requirement.

  • +
  • For specifications issued by other standards organizations, or by vendors, it SHOULD be of a standard form if one is defined. For example, RFC 2648 [11] specifies a syntax for referencing RFCs.

  • +
  • Note that processing tools are likely to assume that all files that share a spec value are related to each other. Therefore, use of meaningful spec values is RECOMMENDED.

  • +
+

The following rules apply to the value of the top-level file attribute.

+
    +
  • For a BBF Technical Report, it will be of the form “tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where nnn, i, a and c are the same as in the spec attribute. The label, which MUST NOT begin with a digit, is not needed if only one DM Schema instance document is associated with the specification. See C.3.5 for the corresponding normative requirement.

  • +
  • It SHOULD be the same as the actual file name (omitting the directory name). Under some circumstances this will not be possible, e.g. because the content is stored in a database and not in a file system.

  • +
+

Formally, the values of the spec and file attributes are defined as follows:

+
    SpecAttr = SpecURI
+    FileAttr = FileName
+    SpecURI = BBFURI
+            | OtherURI
+    BBFURI = "urn:broadband-forum-org:" BBFDoc
+    FileName = BBFDoc BBFSubDoc ".xml"
+    BBFDoc = "tr-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
+    BBFNumber = [DIGIT]{3,}     // including leading zeros, e.g. 069
+    BBFIssue = "-" NoLeadingZeroPositiveNumber
+    BBFAmendment = "-" NoLeadingZeroNumber
+    BBFCorrigendum = "-" NoLeadingZeroNumber
+    BBFSubDoc = "-" LABEL       // distinguishing label (not beginning with a digit)
+              | ""              // not needed if only one DM Instance is associated with spec
+    NoLeadingZeroNumber = [DIGIT]
+                        | [NONZERODIGIT] [DIGIT]*
+    NoLeadingZeroPositiveNumber = [NONZERODIGIT] [DIGIT]*
+    OtherURI = <of a standard form if one is defined>
+

Standard BBF DM Instances can be accessed at the following URL:

+
    BBFURL = "http://www.broadband-forum.org/cwmp/" FileName
+    FileName = <as before, except that BBFCorrigendum is modified as follows:>
+    BBFCorrigendum = "-" NoLeadingZeroNumber
+                   | ""         // if omitted, most recent corrigendum is assumed
+

For example, the DM Instance associated with TR-181 Issue 2 Amendment 11 can be accessed at https://www.broadband-forum.org/cwmp/tr-181-2-11-0.xml.

+

A.2.2 Descriptions

+

Many elements have descriptions, and the same rules apply to all description elements in the DM Schema. A description is free text which can contain a limited amount of MediaWiki-like markup as specified in A.2.2.3.

+

A.2.2.1 Character Set

+

Character set requirements apply to the entire DM Instance, so the contents of this section have been moved to C.2, which contains the normative requirements that apply to standard BBF DM Instances.

+

A.2.2.2 Pre-processing

+

All DM Instance processing tools MUST conceptually perform the following pre-processing before interpreting the markup:

+
    +
  1. Remove any leading whitespace up to and including the first line break. Note: It can be assumed that all line breaks are represented by a single line feed, i.e. ASCII 10. See C.2.

  2. +
  3. Remove the longest common whitespace prefix (i.e. that occurs at the start of every line) from each line. See the example below, where three lines start with four spaces and one line starts with five spaces, so the longest whitespace prefix that occurs at start of each line is four spaces. In this calculation, a tab character counts as a single character. To avoid confusion, the description SHOULD NOT contain tab characters.

  4. +
  5. Remove all trailing whitespace, including line breaks.

  6. +
+

This pre-processing is designed to permit a reasonable variety of layout styles while still retaining predictable behavior. For example, both the following:

+
    <description>This is the first line.
+    This is the second line.
+     This is the indented third line.
+    This is the fourth line.</description>
+

And:

+
    <description>
+        This is the first line.
+        This is the second line.
+         This is the indented third line.
+        This is the fourth line.
+    </description>
+

…result in the following:

+
    This is the first line.
+    This is the second line.
+      This is the indented third line.
+    This is the fourth line.
+

A.2.2.3 Markup

+

The pre-processed description can contain the following markup, which is inspired by, but is not identical to, MediaWiki markup. All DM Instance processing tools SHOULD support this markup to the best of their ability.

+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1: XML Description Markup
NameMarkup ExampleDescription
Italics''italic text''Two apostrophes on each side of some text will result in the contained text being emphasized in italics.
Bold'''bold text'''Three apostrophes on each side of some text will result in the contained text being emphasized in bold.
Bold italics'''''b+i text'''''Five apostrophes on each side of some text will result in the contained text being emphasized in bold italics.
ParagraphThis paragraph just ended.A line break is interpreted as a paragraph break.
Bulleted lists* level one
+** level two
+* level one again
+** level two again
+*** level three
+*: level one continued
+outside of list
A line starting with one or more asterisks (*) denotes a bulleted list entry, whose indent depth is proportional to the number of asterisks specified.
+If the asterisks are followed by a colon (:), the previous item at that level is continued, as shown.
+An empty line, or a line that starts with a character other than an asterisk, indicates the end of the list.
Numbered lists# level one
+## level two
+# level one again
+## level two again
+### level three
+#: level one continued
+outside of list
A line starting with one or more number signs (#) denotes a numbered list entry.
+All other conventions defined for bulleted lists apply here (using # rather than *), except that numbered list entries are prefixed with an integer decoration rather than a bullet.
Indented lists: level one
+:: level two
+: level one again
+:: level two again
+::: level three
+outside of list
A line starting with one or more colons (:) denotes an indented list entry.
+All other conventions defined for bulleted lists apply here (using : rather than *), except that indented list entries have no prefix decoration, and item continuation is not needed.
Verbatimcode example:
+if (something)
+{
+/* do something */
+} else {
+/* do other */
+}
A block of lines each of which starts with a space is to be formatted exactly as typed, preferably in a fixed width font.
+This allows code fragments, simple tables etc. to be included in descriptions.
+Note that the pre-processing rules of A.2.2.2 imply that it is not possible to process an entire description as verbatim text (because all the leading whitespace would be removed). This is not expected to be a problem in practice.
Hyperlinkshttp://www.broadband-forum.orgURL links are specified as plain old text (no special markup).
Templates{{bibref|1|section 2}}
+{{section|table}}
+{{param|Enable}}
+{{enum|Error}}
Text enclosed in double curly braces ({}) is a template reference, which is replaced by template-dependent text.
+A.2.2.4 specifies the standard templates.
+
+

A.2.2.4 Templates

+
+

The term “template” is used for both template elements (A.2.4.4) and for the description templates described here.

+
+

A template invocation is encoded as two curly braces on either side of the template name and arguments. Arguments can follow the template name, separated by vertical pipe (|) characters. All whitespace is significant. For example:

+

{{someTemplate|arg1|arg2|...|argN}}

+

In some cases, one template can impact the behavior of another template, e.g. the definitions of both the {{enum}} and the {{hidden}} templates state that the template expansion can be automatically placed after the rest of the description, which raises the question of which template expansion would come first. This ambiguity is resolved by stating that processing tools SHOULD generate such automatic text in the same order that the templates are defined below. In the above example, {{enum}} is defined before {{hidden}}, so an automatically-generated list of enumeration values would be placed before an automatically-generated explanation that the parameter value is hidden.

+

The following standard templates are defined. Any vendor-specific template names MUST obey the rules of Section 3.3.

+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: XML Description Templates
NameMarkup DefinitionDescription
Glossary reference{{gloref|id}}Glossary reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level glossary element’s item elements (A.2.4.1).
+Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”.
+Markup examples:
+{{gloref|Parameter}}
Abbreviation reference{{abbref|id}}Abbreviation reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level abbreviations element’s item elements (A.2.4.2).
+Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”.
+Markup examples:
+{{abbref|CWMP}}
Approval date{{appdate|date}}The date on which this file was approved.
+The date argument SHOULD be of the form “day month year” where “day” is the OPTIONAL day number (no leading zero), “month” is the full (capitalized) month name, and “year” is the year (including century).
+Markup examples:
+{{appdate|5 November 2011}}
+{{appdate|November 2012}}
Document name{{docname|name}}The DM Instance name or title.
+The name argument MUST distinguish this file from other different files but not from other versions of the same file or data model.
+Markup examples:
+{{docname|Device Data Model for TR-069}}
TR name{{trname|name}}The name and version of the corresponding Word / PDF document.
+The name argument MUST identify the Word / PDF document corresponding to this DM Instance, and be of the form “TR-nnnixaycz” as defined in A.2.4.3.
+Markup examples:
+{{trname|TR-181i2a5}}
XML reference{{xmlref|ref}}
+{{xmlref|ref|label}}
A reference to this or another DM Instance.
+The ref argument MUST identify a DM Instance and be the filename part of the referenced DM Instance (a) optionally omitting the corrigendum number, and (b) omitting the trailing “.xml”.
+The OPTIONAL label argument MAY be used by processing tools as a user-visible label; if it is omitted, processing tools will derive the label from the value of the ref argument.
+Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the label, possibly rendered in a distinctive font, and (if referencing a different file) a hyperlink.
+Markup examples:
+{{xmlref|tr-181-2-5}}
+{{xmlref|tr-196-2-0-1|Corrigendum 1}}
Bibliographic reference{{bibref|id}}
+{{bibref|id|section}}
A bibliographic reference.
+The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level bibliography element’s reference elements (A.2.4.3).
+The OPTIONAL section argument specifies the section number, including any leading “section”, “annex” or “appendix” text.
+Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “[id] section”.
+Markup examples:
+{{bibref|RFC3986}}
+{{bibref|RFC3986|Section 3}}
Template reference{{template|id}}A template element reference.
+The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level template elements (A.2.4.4).
+Markup examples:
+{{template|BULK-DATA-HTTP-REF}}
Section separator{{section|category}}
+{{section}}
The beginning or end of a section or category. This is a way of splitting the description into sections.
+If the category argument is present, this marks the end of the previous section (if any), and the beginning of a section of the specified category. The “table”, “row” and “examples” categories are reserved for the obvious purposes.
+If the category argument is absent, this marks the end of the previous section (if any). Typically, processing tools will (a) validate the category, and (b) replace the template reference with a section marker.
+Markup examples:
+{{section|table}}
+{{section|row}}
+{{section|examples}}
Number of entries parameter description{{numentries}}A description of a “NumberOfEntries” parameter.
+This template SHOULD be used for all such parameters. It will be expanded to something like “The number of entries in the <table> table.”.
+In most cases, the description will consist only of {{numentries}} but it MAY be followed by additional text if desired.
Parameter and object reference{{param|ref}}
+{{param|ref|scope}}
+{{param}}
+{{object|ref}}
+{{object|ref|scope}}
+{{object}}
A reference to the specified parameter or object.
+The OPTIONAL ref and scope arguments reference a parameter or object. Scope defaults to normal. Parameter and object names SHOULD adhere to the rules of A.2.3.4.
+Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current parameter or object name, possibly rendered in a distinctive font.
+Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
+Markup examples:
+{{param|Enable}}
+{{object|Stats.}}
Profile reference{{profile|ref}}
+{{profile}}
A reference to the specified profile.
+The OPTIONAL ref argument references a profile.
+Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current profile name, possibly rendered in a distinctive font.
+Markup examples:
+{{profile|Baseline:1}}
+{{profile}}
List description{{list}}
+{{list|arg}}
+{{nolist}}
A description of the current parameter’s list attributes.
+This template SHOULD only be used within the description of a list-valued parameter (A.2.7.1).
+This is a hint to processing tools to replace the template reference with a description of the parameter’s list attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{nolist}}) of describing the list attributes before the rest of the description.
+The OPTIONAL argument specifies a fragment of text that describes the list and SHOULD be incorporated into the template expansion.
+Typically processing tools will generate text of the form “Comma-separated list of <dataType>.” or “Comma-separated list of <dataType>, <arg>.”.
Reference description{{reference}}
+{{reference|arg}}
+{{reference|arg|opts}}
+{{noreference}}
A description of the object or parameter that is referenced by the current parameter.
+This template SHOULD only be used within the description of a reference parameter (A.2.3.7).
+This is a hint to processing tools to replace the template reference with a description of the parameter’s reference attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{noreference}}) of describing the reference attributes after the list attributes (for a list-valued parameter) or before the rest of the description (otherwise).
+The OPTIONAL arg argument is relevant only for a pathRef; it specifies a fragment of text that describes the referenced item and SHOULD be incorporated into the template expansion.
+The OPTIONAL opts argument is a comma-separated list of keywords that give additional information about the reference and can affect the generated text. The following keywords are currently defined:
+- ignore: ignore any non-existent targetParents; this is useful when a parameter references different objects in different data models.
+- delete: this object (the referencing object) and the referenced object have the same lifetime, so this object will always be deleted when the referenced object is deleted; therefore the reference cannever be null.
+Typically processing tools will generate text of the form “The value MUST be the full path name of <arg>…”, in which the generated text can be expected to be sensitive to whether or not the parameter is list-valued.
+Markup examples:
+{{reference|a protocol object}}
+{{reference|all Host table entries|ignore}}
Named data type{{datatype}}
+{{datatype|arg}}
+{{nodatatype}}
A description of the current parameter’s named data type.
+This template SHOULD only be used within the description of a parameter of a named data type (A.2.3.1).
+This is a hint to processing tools to replace the template reference with an indication of the parameter’s named data type, possibly including additional details or a hyperlink to such details. This overrides processing tools’ expected default behavior (unless suppressed by {{nodatatype}}) of describing the named data type before the rest of the description.
+The OPTIONAL argument affects how the data type is described. If it has the literal value “expand”, processing tools SHOULD replace the template reference with the actual description of the named data type (as opposed to referencing the description of the named data type).
Profile description{{profdesc}}
+{{noprofdesc}}
An auto-generated description of a profile.
+This template SHOULD only be used within the description of a profile (A.2.11).
+This is a hint to processing tools to replace the template reference with a description of the profile. This overrides processing tools’ expected default behavior (unless suppressed by {{noprofdesc}}) of describing the profile before the rest of the description.
+Typically processing tools will generate text of the form “This table defines the <profile:v> profile for the <object:m> object. The minimum REQUIRED version for this profile is <object:m.n>.” (or more complex text if the profile is based on or extends other profiles).
Enumeration reference{{enum|value}}
+{{enum|value|param}}
+{{enum|value|param|scope}}
+{{enum}}
+{{noenum}}
A reference to the specified enumeration value.
+The OPTIONAL value argument specifies one of the enumeration values for the referenced parameter. If present, it MUST be a valid enumeration value for that parameter.
+The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed.
+If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s enumerations, possibly preceded by text such as “Enumeration of:”. This overrides processing tools’ expected default behavior (unless suppressed by {{noenum}}) of listing the parameter’s enumerations after the rest of the description.
+Otherwise, typically processing tools will (a) validate that the enumeration value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
+Markup examples:
+{{enum|None}}
+{{enum|None|OtherParam}}
Pattern reference{{pattern|value}}
+{{pattern|value|param}}
+{{pattern|value|param|scope}}
+{{pattern}}
+{{nopattern}}
A reference to the specified pattern value.
+The OPTIONAL value argument specifies one of the pattern values for the referenced parameter. If present, it MUST be a valid pattern value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed.
+If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s patterns, possibly preceded by text such as “Possible patterns:”. This overrides processing tools’ expected default behavior (unless suppressed by {{nopattern}}) of listing the parameter’s patterns after the rest of the description.
+Otherwise, typically processing tools will (a) validate that the pattern value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
+Markup examples:
+{{pattern|None}}
+{{pattern|None|OtherParam}}
Hidden value{{hidden}}
+{{hidden|value}}
+{{nohidden}}
Text explaining that the value of the current parameter is hidden and cannot be read. This template SHOULD only be used within the description of a hidden parameter (A.2.7.1).
+This is a hint to processing tools to replace the template reference with text explaining that the value of the current parameter is hidden and cannot be read. This overrides processing tools’ expected default behavior (unless suppressed by {{nohidden}}) of placing this text after the rest of the description.
+The OPTIONAL argument indicates the value that is returned when the current parameter is read. If omitted this defaults to the expansion of the {{null}} template.
+Typically, processing tools will generate text of the form “When read, this parameter returns <arg>, regardless of the actual value.”.
Command parameter{{command}}
+{{nocommand}}
Text explaining that the current parameter is a command parameter that triggers an Agent action. This template SHOULD only be used within the description of such a command parameter (A.2.7.1).
+This is a hint to processing tools to replace the template reference with text explaining that the current parameter is a command parameter that always reads back as {{null}}. This overrides processing tools’ expected default behavior (unless suppressed by {{nocommand}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The value is not part of the device configuration and is always {{null}} when read.”.
Factory default value{{factory}}
+{{nofactory}}
Text listing the factory default for the current parameter. This template SHOULD only be used within the description of a parameter that has a factory default value.
+This is a hint to processing tools to replace the template reference with text listing the factory default value. This overrides processing tools’ expected default behavior (unless suppressed by {{nofactory}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The factory default value MUST be <value>.”.
Unique keys description{{keys}}
+{{nokeys}}
A description of the current object’s unique keys.
+This template SHOULD only be used within the description of a Multi-Instance Object (table) that defines one or more unique keys (A.2.10.1).
+This is a hint to processing tools to replace the template reference with a description of the object’s unique keys. This overrides processing tools’ expected default behavior (unless suppressed by {{nokeys}}) of describing the unique keys after the description.
Units reference{{units}}The parameter’s units string.
+Typically, processing tools will (a) check that the parameter has a units string, and (b) substitute the value of its units string.
Boolean values{{false}}
+{{true}}
Boolean values.
+Typically, processing tools will substitute the value False or True, possibly rendered in a distinctive font.
Discriminator parameter description{{union}}
+{{nounion}}
Text explaining the available options and use for the sub-objects which are part of the union.
+This template SHOULD only be used within the description of a parameter declared as a discriminatorParameter (A.2.10.1).
+This is a hint to processing tools to replace the template reference with text explaining the union and possible choices of sub-objects. This overrides processing tools’ expected default behavior (unless suppressed by `{{nounion}}) of placing this text after the rest of the description.
+Typically, processing tools will generate text of the form “This parameter defines the name of the currently active sub-object of a union, members of the union are <objects>.” but it MAY be followed by additional text, explaining the use of the available options, if desired.
Miscellaneous{{issue|descr}}
+{{issue|opts|descr}}
An open issue.
+If only one argument is supplied, it is descr, which describes the open issue. If two arguments are supplied, they are opts and descr.
+The OPTIONAL opts argument is a comma-separated list of options:
+- The first list item is an issue category that defaults to “XXX”.
+- The second list item is an issue status that defaults to an empty string. Any non-empty status implies that the issue has been resolved.
+Typically, processing tools will assign a unique ID, e.g. a separate counter for each category of issue, and replace the template reference with the issue category, ID, status and description, possibly rendered in a distinctive font.
+Markup examples:
+{{issue|Will be labeled XXX.}}
+{{issue|IPsec|Will be labeled IPsec.}}
+{{issue|DNS,fixed|Resolved DNS issue.}}
{{empty}}Represents an empty string. Typically, processing tools will render such values in a distinctive font, possibly using standard wording, such as <Empty> or “an empty string”.
{{null}}Expands to the appropriate null value for the current parameter’s data type (A.2.3.5), e.g. {{empty}}, {{false}} or 0.
+
+

A.2.2.5 HTML Example

+

This includes examples of most of the markup and templates.

+
    <model name="Goo:1.1" base="Goo:1.0">
+      <object name="GooTop." access="readOnly" minEntries="1" maxEntries="1">
+        <parameter name="ExampleParam" access="readOnly">
+          <description>
+    {{section|Introduction}}This is an ''example'' parameter that
+    illustrates many of the '''formatting''' templates. For
+    '''''example''''', this references {{bibref|TR-106a1|section 3.2}}.
+
+    {{section|Usage}}This parameter is called {{object}}{{param}}. One can
+    also reference other parameters in the same object, such as
+    {{param|OtherParameter}}, and indicate that the parameter value is
+    measured in {{units}}.
+
+    One can also include bulleted lists:
+    * level one
+    ** level two
+    * level one again
+    ** level two again
+    *** level three
+    *: level one continued
+
+    and numbered lists:
+    # level one
+    ## level two
+    # level one again
+    ## level two again
+    ### level three
+    #: level one continued
+
+    and indented lists
+    : level one
+    :: level two
+    : level one again
+    :: level two again
+    ::: level three
+
+    and hyperlinks such as http://www.google.com
+
+    and code examples:
+     if (something) {
+       /* do something */
+     } else {
+       /* do other */
+     }
+
+    If the parameter was Boolean, one could refer to its values {{false}}
+    and {{true}}.
+
+    One can refer to its enumerations individually, e.g. {{enum|Disabled}},
+    or to other parameters' enumerations, such as {{enum|Value|OtherParam}},
+    or can list them all. {{enum}}
+
+    Finally, if there were any patterns they could be listed too. {{pattern}}
+          </description>
+          <syntax>
+            <string>
+              <enumeration value="A"/>
+              <enumeration value="B"/>
+              <units value="packets"/>
+            </string>
+          </syntax>
+        </parameter>
+

The resulting HTML would look something like this:

+

+

A.2.3 Data Types

+

CWMP [1] and USP [2] data models support only the primitive data types listed in the last row of Table 3 “on the wire”. However, the DM Schema allows data types to be derived from the primitive types or from other named data types. Such derived types can be named or anonymous.

+

A.2.3.1 Named Data Types

+

Named data types are defined using the top-level dataType element. A DM Instance can contain zero or more top-level dataType elements.

+

When defining a new named data type, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3: XML Named Data Types
NameDescription
nameThe data type name.
baseThe base type name, i.e. name of the data type from which this data type is derived. This is used only where the base type is itself a named data type, not a primitive type.
statusThe data type’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new data type.
descriptionThe data type’s description (A.2.2).
list
+minItems
+maxItems
+nestedBrackets
+size
If the data type is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3).
+Note that a list-valued data type is always a string as far as the protocol is concerned. For a list, the rest of the data type specification refers to the individual list items, not to the parameter value.
size
+pathRef
+instanceRef
+range
+enumeration
+enumerationRef
+pattern
+units
+default
Data type facets (A.2.3.3). These are permitted only when the base type is a named data type, i.e. when the base attribute is specified.
base64
+boolean
+dateTime
+hexBinary
+int
+long
+string
+unsignedInt
+unsignedLong
Primitive data type definition. These are permitted only when the base type is primitive. There is an element for each primitive data type, and each element supports only the facets (A.2.3.3) that are appropriate to that data type.
+
+

For example:

+
    <dataType name="String255">
+      <description>String of maximum length 255.</description>
+      <string>
+        <size maxLength="255"/>
+      </string>
+    </dataType>
+
+    <dataType name="String127" base="String255">
+      <description>String of maximum length 127.</description>
+      <size maxLength="127"/>
+    </dataType>
+
+    <dataType name="String127List" base="String127">
+      <description>List of up to 7 strings, each of maximum length 127. If a
+      list item is itself a list, it will be "protected" by square
+      brackets.</description>
+      <list maxItems="7" nestedBrackets="required"/>
+    </dataType>
+

A.2.3.2 Anonymous Data Types

+

Anonymous data types are defined within parameter syntax elements (A.2.7.1), and can apply only to the parameters within which they are defined. For example:

+
    <parameter name="Example1" access="readOnly">
+      <syntax>
+        <string>
+          <size maxLength="127"/>
+          </string>
+      </syntax>
+    </parameter>
+
+    <parameter name="Example2" access="readOnly">
+      <syntax>
+        <dataType base="String255">
+          <size maxLength="127"/>
+        </dataType>
+      </syntax>
+    </parameter>
+

If an anonymous data type is modified in a later version of a data model, the modified anonymous data type is regarded as being derived from the original anonymous data type. Therefore the base type restriction rules of A.2.3.8 MUST be obeyed.

+

A.2.3.3 Data Type Facets

+

A facet specifies some aspect of a data type, e.g. its size, range or units.

+

Note that XML Schema [4] also associates facets with data types. The XML Schema and DM Schema concepts are the same, but the set of facets is not identical.

+

The DM Schema defines the following facets (normative requirements are specified in the schema):

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4: XML Data Type Facets
NameDescription
sizeSize ranges for the data type (applies to string, base64, hexBinary and their derived types). Note that the size facet always refers to the actual value, not to the base64- or hexBinary-encoded value. Prior to the definition of the DM Schema, the maximum sizes of base64 parameters referred to the base64-encoded values.
+Processing tools that generate reports from DM Instances SHOULD include explicit clarification of whether the size ranges refer to the actual or encoded values.
+Note that the size facet is also used to specify the size range for list-valued parameters, which are always strings (A.2.7.1).
pathRefDetails of how to reference parameters and objects via their Path Names (applies to string and its derived types; A.2.3.7).
instanceRefDetails of how to reference object instances (table rows) via their Instance Numbers (applies to int, unsignedInt and their derived types; A.2.3.7).
rangeValue ranges and step (default step is 1) for the data type (applies to numeric data types and their derived types).
enumerationEnumerations for the data type (applies to string and its derived types).
enumerationRefEnumerations for the data type, obtained at run-time from the value of a specified parameter (applies to string and its derived types; A.2.3.7).
patternPatterns for the data type (applies to string and its derived types). Pattern value syntax is the same as for XML Schema regular expressions. See [Section F/12].
unitsUnits for the data type (applies to numeric data types and their derived types).
defaultObject, factory, implementation or parameter default.
+- Object defaults apply only to parameters that can be created as a result of an AddObject RPC.
+- Factory defaults apply to all parameters (if a factory default is specified, it also acts as object default for applicable parameters).
+- Implementation defaults apply to all parameters (they are informational defaults that are likely after a reset or if no other value is available).
+- Parameter defaults apply only to command and event arguments.
+
+

It is important to note that the enumeration facet does not necessarily define all the valid values for a data type. This is for the following reasons:

+
    +
  • As specified in Section 3.3, vendors are allowed to add additional enumeration values.

  • +
  • A future version of a data model may need to add additional enumeration values.

  • +
+

A.2.3.4 Reference Path Names

+

Some description templates (A.2.2.4), and all reference facets (A.2.3.7), need to specify parameter or object names. It is always possible to specify a full Path Name, but it is frequently necessary or convenient to specify a relative Path Name. For example, it might be necessary to reference another parameter in the current object. Any Instance Numbers in the parameter’s full Path Name cannot be known at data model definition time, so this can only be done using a relative Path Name.

+

The following rules apply to all Path Names that are used in data model definitions for referencing parameters or objects:

+
    +
  • Path Names MAY contain “{i}” placeholders, which MUST be interpreted as wild cards matching all Instance Numbers, e.g. “Device.Ethernet.Interface.{i}.” references all Ethernet.Interface instances.

  • +
  • Path Names MUST NOT contain Instance Numbers.

  • +
+

A Path Name is always associated with a path name scope, which defines the point in the naming hierarchy relative to which the Path Name applies.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 5: Path Name Scope Definition
NameDescription
normalThis is a hybrid scope which usually gives the desired behavior:
+- If the path begins with a “Device” component, it is relative to the top of the naming hierarchy.
+- If the path begins with a dot, it is relative to the Root or Service Object (c.f. scope=model).
+- Otherwise, the path is relative to the current object (c.f. scope=object).
modelThe path is relative to the Root or Service Object.
objectThe path is relative to the current object.
+
+

Formally, if the path name scope is normal:

+
    +
  • If the path is empty, it MUST be regarded as referring to the top of the naming hierarchy.

  • +
  • Otherwise, if the path begins with a “Device” component, it MUST be regarded as a full Path Name.

  • +
  • Otherwise, if the path begins with a dot (“.”), it MUST be regarded as a path relative to the Root or Service Object. For example, in the Device Root Object “.DeviceInfo.” means “Device.DeviceInfo.”, and in the Device.Services.ABCService.1 Service Object it means “Device.Services.ABCService.1.DeviceInfo.”.

  • +
  • Otherwise, it MUST be regarded as a path relative to the current object. Any leading hash characters (“#”) cause it to be relative to the parent of the current object (or the parent’s parent, and so on) as described below. For example, if the current object is “Device.LAN.”, “IPAddress” means “Device.LAN.IPAddress”, “Stats.” means “Device.LAN.Stats.” and “#.DeviceInfo.” means “Device.DeviceInfo” (see below for more “#” examples).

  • +
+

If the path name scope is model:

+
    +
  • If the path is empty, it MUST be regarded as referring to the Root or Service Object.

  • +
  • Otherwise, it MUST be regarded as a path relative to the Root or Service Object. Any leading dot MUST be ignored. Leading hash characters are not permitted.

  • +
+

If the path name scope is object:

+
    +
  • If the path is empty, it MUST be regarded as referring to the current object.

  • +
  • Otherwise, it MUST be regarded as a path relative to the current object. Any leading dot MUST be ignored. Leading hash characters are not permitted.

  • +
+

As mentioned above, if the path name scope is normal, a leading hash character causes the path to be relative to the parent of the current object. Additional hash characters reference the parent’s parent, and so on, but they MUST NOT be used to reference beyond the Root or Service Object. Also, for object instances, “#.” always means the Multi-Instance Object’s (table’s) parent rather than the Multi-Instance Object (table).

+

In addition, within a component definition, items that are defined outside the component MUST NOT be referenced via relative paths. This is because components can be included anywhere within the data model tree.

+

For example, if the current object is “Device.LAN.DHCPOption.{i}.”:

+
    +
  • “#.” means “Device.LAN.” (the table’s parent, not the table).

  • +
  • “#.DHCPOption.” means “Device.LAN.DHCPOption.” (the table).

  • +
  • “#.Stats.” means “Device.LAN.Stats.”.

  • +
  • “#.Stats.TotalBytesSent” means “Device.LAN.Stats.TotalBytesSent”.

  • +
+

The following examples would be invalid if LAN was defined within a component:

+
    +
  • “##.” means “Device.”.

  • +
  • “##.DeviceInfo.” means “Device.DeviceInfo.”.

  • +
  • “##.DeviceInfo.Manufacturer” means “Device.DeviceInfo.Manufacturer”.

  • +
+

The final example can never be valid:

+
    +
  • “###.” is not permitted (references beyond the Root Object).
  • +
+

Note that the term “Root or Service Object”, which is used several times above, means “if within a Service Object instance, the Service Object instance; otherwise, the Root Object”.

+

For example, the pathRef and instanceRef facets (A.2.3.7) have a targetParent attribute which specifies the possible parent(s) of the referenced parameter or object, and a targetParentScope attribute (defaulted to normal) which specifies targetParent’s scope. If the current object is within a Service Object instance, setting targetParentScope to model forces the referenced parameter or object to be in the same Service Object instance. Similarly, setting targetParentScope to object forces the referenced parameter or object to be in the same object or in a sub-object.

+

A.2.3.5 Null Values and References

+

Each primitive data type has an associated null value that is used, for example, as the expansion of the {{null}} template (A.2.2.4). These null values are defined as follows:

+
    +
  • base64, hexBinary, string: an empty string

  • +
  • unsignedInt, unsignedLong: 0

  • +
  • int, long: -1

  • +
  • boolean: false

  • +
  • dateTime: 0001-01-01T00:00:00Z (the Unknown Time; see Section 3.2.1)

  • +
+

A null reference indicates that a reference parameter is not currently referencing anything. The value that indicates a null reference is the null value for the reference parameter’s base data type, i.e.:

+
    +
  • string: an empty string

  • +
  • unsignedInt: 0

  • +
  • int: -1

  • +
+

A.2.3.6 Reference Types

+

A reference to another parameter or object can be weak or strong:

+
    +
  • weak: it does not necessarily reference an existing parameter or object. For example, if the referenced parameter or object is deleted, the value of the reference parameter might not get updated. All weak reference parameters MUST be declared as writable.

  • +
  • strong: it always either references a valid parameter or object, or else is a null reference (A.2.3.5). If the referenced parameter or object is deleted, the value of the reference parameter is always set to a null reference.

  • +
+

See Section 3.2.3 for normative requirements relating to reference types and the associated Agent behavior.

+

A.2.3.7 Reference Facets

+

A reference facet specifies how a parameter can reference another parameter or object. There are three sorts of reference:

+
    +
  • Path reference: references another parameter or object via its Path Name. Details are specified via the pathRef facet, which applies to string and its derived types.

  • +
  • Instance reference: references an object instance (table row) via its Instance Number. Details are specified via the instanceRef facet, which applies to int, unsignedInt and their derived types.

  • +
  • Enumeration reference: references a list-valued parameter via its Path Name. The current value of the referenced parameter indicates the valid enumerations for this parameter. Details are specified via the enumerationRef facet, which applies to string and its derived types.

  • +
+

When defining a path reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6: PathRef Facet Definition
NameDescription
targetParentAn XML list of Path Names that can restrict the set of parameters and objects that can be referenced. If the list is empty (the default), then anything can be referenced. Otherwise, only the immediate children of one of the specified objects can be referenced.
+A “{i}” placeholder in a Path Name acts as a wild card, e.g. “Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.”. Path Names cannot contain explicit Instance Identifiers.
targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
targetTypeSpecifies what types of item can be referenced:
+- any: any parameter or object can be referenced (default)
+- parameter: any parameter can be referenced
+- object: any object can be referenced
+- single: any single-instance object can be referenced
+- table: any Multi-Instance Object (table) can be referenced
+- row: any Multi-Instance Object (table) instance (row) can be referenced
targetDataTypeSpecifies the valid data types for the referenced parameter. Is relevant only when targetType is any or parameter.
+Possible values are as follows:
+- any: a parameter of any data type can be referenced (default)
+- base64: only a base64 parameter can be referenced
+- boolean: only a boolean parameter can be referenced
+- dateTime: only a dateTime parameter can be referenced
+- hexBinary: only a hexBinary parameter can be referenced
+- integer: only an integer (int, long, unsignedInt or unsignedLong) parameter can be referenced
+- int: only an int parameter can be referenced
+- long: only a long (or int) parameter can be referenced
+- string: only a string parameter can be referenced
+- unsignedInt: only an unsignedInt parameter can be referenced
+- unsignedLong: only an unsignedLong (or unsignedInt) parameter can be referenced
+- <named data type>: only a parameter of the named data type can be referenced
+In addition, a parameter whose data type is derived from the specified data type can be referenced. The built-in type hierarchy (a simplified version of the XML Schema type hierarchy) is as follows:
+any
+  base64
+  boolean
+  dateTime
+  hexBinary
+  integer
+    long
+      int
+    unsignedLong
+      unsignedInt
+  string
+Note that any and integer are not valid parameter data types. They are included in order to support “can reference any data type” and “can reference any numeric data type”.
refTypeSpecifies the reference type (A.2.3.6): weak or strong.
+
+

When defining an instance reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 7: InstanceRef Facet Definition
NameDescription
targetParentSpecifies the Path Name of the Multi-Instance Object (table) of which an instance (row) is being referenced.
+“{i}” placeholders and explicit Instance Identifiers are not permitted in the Path Name. targetParentScope can be used to specify Path Names relative to the Root or Service Object or the current object.
targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
refTypeSpecifies the reference type (A.2.3.6): weak or strong.
+
+

When defining an enumeration reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 8: EnumerationRef Facet Definition
NameDescription
targetParamSpecifies the Path Name of the list-valued parameter whose current value indicates the valid enumerations for this parameter.
targetParamScopeSpecifies the point in the naming hierarchy relative to which targetParam applies (A.2.3.4): normal (default), model or object.
nullValueSpecifies the parameter value that indicates that none of the values of the referenced parameter currently apply (if not specified, no such value is designated).
+Note that if this parameter is list-valued then nullValue is not relevant, because this condition will be indicated by an empty list.
+
+

The following examples illustrate the various possible types of reference.

+
    <object name="PeriodicStatistics.SampleSet.{i}.Parameter.{i}." ...>
+      ...
+      <parameter name="Reference" access="readWrite">
+        <description>Reference to the parameter that is associated with this
+        object instance. This MUST be the parameter's full path name.</description>
+        <syntax>
+          <string>
+            <size maxLength="256"/>
+            <pathRef targetType="parameter" refType="weak"/>
+          </string>
+          <default type="object" value=""/>
+        </syntax>
+      </parameter>
+
    <object name="StorageService.{i}.StorageArray.{i}." ...>
+      ...
+      <parameter name="PhysicalMediumReference" access="readWrite">
+        <description>A comma-separated list of Physical Medium references.
+        Each Physical Medium referenced by this parameter MUST exist within the
+        same StorageService instance. A Physical Medium MUST only be referenced
+        by one Storage Array instance. Each reference can be either in the form
+        of ".PhysicalMedium.{i}" or a fully qualified object
+        name...</description>
+        <syntax>
+          <list>
+            <size maxLength="1024"/>
+          </list>
+          <string>
+            <pathRef targetParent=".PhysicalMedium." targetParentScope="model"
+            targetType="row" refType="strong"/>
+          </string>
+        </syntax>
+      </parameter>
+
    <object name="STBService.{i}.Components.FrontEnd.{i}.IP.Inbound.{i}." ...>
+      ...
+      <parameter name="StreamingControlProtocol" access="readOnly">
+        <description>Network protocol currently used for controlling streaming
+        of the source content, or an empty string if the content is not being
+        streamed or is being streamed but is not being controlled. If non-empty,
+        the string MUST be one of the .Capabilities.FrontEnd.IP.StreamingControlProtocols
+        values.</description>
+        <syntax>
+          <string>
+            <enumerationRef
+            targetParam=".Capabilities.FrontEnd.IP.StreamingControlProtocols"
+            nullValue=""/>
+          </string>
+        </syntax>
+      </parameter>
+
+      <parameter name="StreamingTransportProtocol" access="readOnly">
+        <description>Network protocol currently used for streaming the source
+        content, or an empty string if the content is not being streamed.
+        If non-empty, the string MUST be one of the
+        .Capabilities.FrontEnd.IP.StreamingTransportProtocols
+        values.</description>
+        <syntax>
+          <string>
+            <enumerationRef
+            targetParam=".Capabilities.FrontEnd.IP.StreamingTransportProtocols"
+            nullValue=""/>
+          </string>
+        </syntax>
+      </parameter>
+
    <object name="Device.WiFi.AccessPoint.{i}.Security." ...>
+      ...
+      <parameter name="ModeEnabled" access="readWrite">
+        <description>Indicates which security mode is enabled.</description>
+        <syntax>
+          <list/>
+          <string>
+            <enumerationRef targetParam="ModesSupported"/>
+          </string>
+        </syntax>
+      </parameter>
+

A.2.3.8 Base Type Restriction

+

A new data type MUST always be a restriction of its base type, meaning that a valid value of the new data type will always be a valid value for its base type. This is the case for the examples of A.2.3.1, which involve three different data types:

+
    +
  • string of unlimited length

  • +
  • string of maximum length 255

  • +
  • string of maximum length 127

  • +
+

Clearly a string of length 100 is valid for all three data types, but a string of length 200 is only valid for the first two data types.

+

The examples of A.2.3.1 considered only the size facet, but in general all facets that are applicable to the data type have to be considered. The base type restriction requirements for each facet are as follows:

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 9: XML Facet Inheritance Rules
FacetRequirements
sizeThe derived data type can define sizes in any way, provided that the new sizes do not permit any values that are not valid for the base type.
pathRefThe derived data type can modify the data type in the following ways:
+- By “promoting” status to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
+- By changing targetParent to narrow the set of possible parent objects.
+- By changing targetType to narrow the set of possible target types.
+- By changing targetDataType to narrow the set of possible target data types.
instanceRefThe derived data type can modify the data type in the following ways:
+- By “promoting” status to a “higher” value, as described for pathRef.
+- By changing targetParent to narrow the set of possible parent objects.
rangeThe derived data type can define ranges in any way, provided that the new ranges do not permit any values that are not valid for the base type.
enumerationThe derived data type can modify existing enumeration values in the following ways:
+- By “promoting” access from readOnly to readWrite or writeOnceReadOnly.
+- By “promoting” status to a “higher” value, as described for pathRef.
+- By “promoting” optional from False to True.
+- By adding a code, if none was previously specified.
+- By using the action attribute to prefix, extend or replace the description (see below and A.2.12.6).
The derived data type can add new enumeration values.
enumerationRefThe derived data type can modify the data type by “promoting” status to a “higher” value, as described for pathRef.
patternThe derived data type can modify existing pattern values by changing access, status, optional and description exactly as for enumerations.
+The derived data type can add new patterns and/or replace existing patterns with new patterns, provided that the new patterns do not permit any values that are not valid for the base type. For example a single pattern “[AB]” could be replaced with “A” and “B”, but “C” could not be added.
unitsThe derived data type can add units if the base type did not specify any.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors. For example, if the base type supports a range of [-1:4095] but the values 0 and 4095 were included in error, it would be permissible for a derived type to support ranges of [-1:-1] and [1:4094]. Processing tools SHOULD be able to detect and warn about such cases.

+

When defining a new data type, if a facet is omitted, the new data type will inherit that facet from its base type. If a facet is present, it MUST be fully specified (except that special rules apply to descriptions; see below and A.2.12.6). For example, this means that a derived type that adds additional enumeration values has also to re-declare the enumeration values of the base type.

+

In the following example, the derived type inherits the units facet from its parent but it does not inherit the range facet, so the DataBlockSize range is [0:65535] and the DataBlockSize2 range is [40:1460].

+
   <dataType name="DataBlockSize">
+     <unsignedInt>
+       <range maxInclusive="65535"/>
+       <units value="bytes"/>
+     </unsignedInt>
+   </dataType>
+
+   <dataType name="DataBlockSize2" base="DataBlockSize">
+     <range minInclusive="40" maxInclusive="1460"/>
+   </dataType>
+

Similarly, in the following, the enumeration values for ABCD are not A, B, C and D, but are just C and D. This is an error (because the derived type cannot remove enumeration values), and processing tools SHOULD detect and warn about such cases.

+
    <dataType name="AB">
+      <string>
+        <enumeration value="A"/>
+        <enumeration value="B"/>
+      </string>
+    </dataType>
+
+    <dataType name="ABCD" base="AB">
+      <string>
+        <enumeration value="C"/>
+        <enumeration value="D"/>
+      </string>
+    </dataType>
+

A derived data type and any of its facets that support descriptions will inherit those descriptions from the base type. Facet descriptions are inherited regardless of whether the facet is present in the derived type. For any descriptions that are explicitly specified in the derived type, the action attribute controls whether they will be prefixed, extended or replaced (A.2.12.6).

+

For example, in the following, the description of Z (which is not changed) does not have to be repeated.

+
    <dataType name="XY">
+      <description>This is XY.</description>
+      <string>
+        <enumeration value="X">
+          <description>This is X.</description>
+        </enumeration>
+        <enumeration value="Y">
+          <description>This is Y.</description>
+        </enumeration>
+        <enumeration value="Z">
+          <description>This is Z.</description>
+        </enumeration>
+      </string>
+    </dataType>
+
+    <dataType name="XY2" base="XY">
+      <description action="replace">This is all about XY.</description>
+      <enumeration value="X">
+        <description action="append">This is more about X, added at the
+        end.</description>
+      </enumeration>
+      <enumeration value="Y">
+        <description action="prefix">This is more about Y, inserted at the
+        beginning.</description>
+      </enumeration>
+      <enumeration value="Z"/>
+    </dataType>
+

A.2.4 Glossary, Abbreviations, Bibliography and Templates

+

A.2.4.1 Glossary

+

The glossary is defined using the top-level glossary element, which can contain zero or more item elements.

+

When defining a new glossary item, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + +
Table 10: XML Glossary Items
NameDescription
idThe glossary item ID. This is the term that is being defined.
descriptionThe description of the glossary item. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
+
+

A.2.4.2 Abbreviations

+

Abbreviations are defined using the top-level abbreviations element, which can contain zero or more item elements.

+

When defining a new abbreviation, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + +
Table 11: XML Abbreviation Items
NameDescription
idThe abbreviation item ID. This is the abbreviation that is being defined.
descriptionThe description of the abbreviation. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
+
+

A.2.4.3 Bibliography

+

The bibliography is defined using the top-level bibliography element, which can contain zero or more (bibliographic) reference elements.

+

When defining a new bibliographic reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 12: XML Bibliographic References
NameDescription
idThe bibliographic reference ID.
nameThe name by which the referenced document is usually known.
titleThe document title.
organizationThe organization that published the referenced document, e.g. BBF, IEEE, IETF.
categoryThe document category, e.g. TR (BBF), RFC (IETF).
dateThe publication date.
hyperlinkHyperlink(s) to the document.
+
+

For BBF standard DM Instances, the C.3.7 rules apply.

+

Processing tools SHOULD be lenient when comparing bibliographic reference IDs. Specifically, they SHOULD ignore all whitespace, punctuation, leading zeros in numbers, and upper / lower case. So, for example, “rfc 1234” and “RFC1234” would be regarded as the same ID, as would “TR-069” and “TR69”.

+

Processing tools SHOULD detect and report inconsistent bibliographic references, e.g. a reference with the same ID (i.e. an ID that compares as equal) as one that was encountered in a different file, but with a different name or hyperlink.

+

A.2.4.4 Templates

+
+

The term “template” is used for both description templates (A.2.2.4) such as {{bibref}} and (confusingly) {{template}}, and for the template elements described here.

+
+

Template elements define named blocks of text that can be included (using {{template}} description templates) in descriptions.

+

When defining a new template element, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + + + + + + + + + + + + + + + + + +
Table 13: XML Template Elements
NameDescription
idThe template ID. This identifies the template that is being defined.
<body>The template body.
+
+

When including a template body in a description, processing tools MUST pre-process the value as for descriptions (A.2.2.2) and then replace the {{template}} description template with the resulting text. The template body might contain markup, possibly including further {{template}} description templates, so processing tools MUST then process the expanded text.

+

A.2.5 Components

+

A component is a way of defining a named set of parameters, objects and/or profiles to be used wherever such a group is needed in more than one place (or just to structure the definitions). A DM Instance can contain zero or more top-level component elements.

+

When defining a new component, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 14: XML Component Definition
NameDescription
nameThe component name.
descriptionThe component’s description (A.2.2).
componentThe other components that are referenced (included) by this component.
parameterThe component’s top-level parameter definitions (A.2.7).
objectThe component’s object definitions (A.2.10).
profileThe component’s profile definitions (A.2.11).
+
+

Referencing (including) a component can be thought of as textual substitution. A component has no version number and is not tied to a particular Root or Service Object.

+

The following is a simple example of component definition and reference.

+
    <component name="ByteStats">
+      <parameter name="BytesSent" access="readOnly">
+        <description>Number of bytes sent.</description>
+        <syntax><unsignedInt/></syntax>
+      </parameter>
+      <parameter name="BytesReceived" access="readOnly">
+        <description>Number of bytes received.</description>
+        <syntax><unsignedInt/></syntax>
+      </parameter>
+    </component>
+
    <model name="Device:2.11">
+      <object name="Device." access="readOnly" minEntries="1"
+      maxEntries="1">
+        ...
+        <component ref="ByteStats"/>
+        ...
+      </object>
+      ...
+    </model>
+

Here the component is referenced from within an object definition. Components can be referenced from within component, model, object, command and event definitions. Parameter, command, event, object and profile definitions within components are relative to the point of inclusion unless overridden using the path attribute.

+

A.2.6 Root and Service Objects

+

Root and Service Objects are defined using the model element and an associated top-level object element. A DM Instance can contain zero or more top-level model elements.

+

When defining a new model, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 15: XML Root and Service Objects
NameDescription
nameThe model name, including its major and minor version numbers.
baseThe name of the previous version of the model (for use when the model version is greater than 1.0).
isServiceWhether it is a Service Object. This defaults to False and so can be omitted for Root Objects.
descriptionThe model’s description (A.2.2).
componentThe components that are referenced (included) by the model (A.2.5).
parameterThe model’s top-level parameter definitions (A.2.7).
objectThe model’s top-level and other object definitions (A.2.10).
profileThe model’s profile definitions (A.2.11).
+
+

Once a given version has been defined, it cannot be modified; instead, a new version of the object has to be defined. For example, the following example defines v1.0 and v1.1 of a notional Service Object.

+
    <model name="DemoService:1.0" isService="true">
+      <parameter name="DemoServiceNumberOfEntries" access="readOnly"/>
+      <object name="DemoService.{i}." access="readOnly" minEntries="0"
+      maxEntries="unbounded" entriesParameter="DemoServiceNumberOfEntries"/>
+    </model>
+
    <model name="DemoService:1.1" base="DemoService:1.0"
+    isService="true">
+      <object base="DemoService.{i}." access="readOnly" minEntries="0"
+      maxEntries="unbounded"/>
+    </model>
+

A.2.7 Parameters

+

Parameters are defined using the parameter element, which can occur within component, model and object elements. When defining a new parameter, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 16: XML Parameter Definition
NameDescription
nameThe parameter name (Section 3.1).
accessWhether the parameter is writable (readWrite), read-only (readOnly), or writable once then read-only (writeOnceReadOnly).
statusThe parameter’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new parameter.
activeNotifyThe parameter’s {normal, forceEnabled, forceDefault, canDeny} Active Notification status. This defaults to normal, and so is not often specified for a new parameter.
+Note that in USP, forceEnabled and forceDefault are equivalent to normal.
forcedInformFor CWMP only, the parameter’s Forced Inform status. This defaults to False, and so is not often specified for a new parameter.
descriptionThe parameter’s description (A.2.2).
syntaxThe parameter’s syntax (A.2.7.1).
+
+

A.2.7.1 Parameter Syntax

+

Parameter syntax is defined using the syntax element, which can occur only within parameter elements. When defining a new parameter, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 17: XML Parameter Syntax
NameDescription
hiddenWhether the value is hidden on readback. This defaults to False, and so is not often specified for a new parameter.
commandFor CWMP only, whether setting the parameter triggers an Agent action as opposed to changing the configuration. This defaults to False.
+Note that this is an CWMP-only attribute (not an element) and is different from the USP-only command element (A.2.8).
list
+minItems
+maxItems
+nestedBrackets
+size
If the parameter is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3).
+Note that a list-valued parameter is always a string as far as the protocol is concerned. For a list, the rest of the syntax specification refers to the individual list items, not to the parameter value.
base64
+boolean
+dateTime
+hexBinary
+int
+long
+string
+unsignedInt
+unsignedLong
If the parameter is of a primitive data type, specifies a primitive data type reference, e.g. <int>. If the parameter data type is derived from a primitive data type, specifies an anonymous primitive data type definition (A.2.3.2), e.g. <int><range maxInclusive=“255”/></int>. Each primitive data type element supports only the facets (A.2.3.3) that are appropriate to that data type.
dataTypeIf the parameter is of a named data type, specifies a named data type (A.2.3.1) reference, e.g. <dataType ref=“IPAddress”/>.
+If the parameter data type is derived from a named data type, specifies an anonymous named data type (A.2.3.2) definition, e.g. <dataType base=“IPAddress”><size maxLength=“15”/></dataType>
+
+

A.2.8 Commands (USP Only)

+

Data Model Commands are defined using the command element, which can occur within component and object elements. When defining a new Data Model Command, the following attributes and elements are relevant (normative requirements are specified in the schema). This concept does not apply to CWMP, which uses Objects and/or Parameters to simulate commands.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 18: XML Command Definition
NameDescription
nameThe command name (Section 3.1).
asyncWhether this command is asynchronous or not. This defaults to false.
statusThe command’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new command.
descriptionThe command’s description (A.2.2).
inputThe command’s input arguments (can be omitted if there are none).
outputThe command’s output arguments (can be omitted if there are none).
+
+

The input / output elements define the command’s input / output arguments (respectively).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 19: XML Command Input / Output Arguments Definition
NameDescription
componentThe arguments defined by components that are referenced (included) by the command (A.2.5).
parameterThe command’s parameter arguments (A.2.7).
objectThe command’s object arguments (A.2.10).
+
+

Command argument parameter / object elements are similar to the corresponding data model parameter / object elements but support different attributes, e.g. they have no access or numEntriesParameter attributes, and they have a Boolean mandatory attribute (to indicate a mandatory argument).

+

When a command references a component, any attributes not supported in command arguments are ignored. This allows a component that defines data model parameters / objects to be used for defining command parameter / object arguments.

+

When a command argument is a table, its instance numbers MUST be 1, 2, 3… (assigned sequentially without gaps).

+

A.2.9 Events (USP Only)

+

Data Model Events are defined using the event element, which can occur within component and object elements. When defining a new Data Model Event, the following attributes and elements are relevant (normative requirements are specified in the schema). This concept does not apply to CWMP.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
nameThe event name (Section 3.1).
statusThe event’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new event.
descriptionThe event’s description (A.2.2).
componentThe arguments defined by components that are referenced (included) by the event (A.2.5).
parameterThe event’s parameter arguments (A.2.7).
objectThe event’s object arguments (A.2.10).
+

Event argument parameter / object elements are similar to the corresponding data model parameter / object elements but support different attributes, e.g. they have no access or numEntriesParameter attributes, and they have a Boolean mandatory attribute (to indicate a mandatory argument).

+

When an event references a component, any attributes not supported in event arguments are ignored. This allows a component that defines data model parameters / objects to be used for defining event parameter / object arguments.

+

When an event argument is a table, its instance numbers MUST be 1, 2, 3… (assigned sequentially without gaps).

+

A.2.10 Objects

+

Objects are defined using the object element, which can occur within component and model elements. When defining a new object, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 20: XML Object Definition
NameDescription
nameThe object name, specified as a partial path (Section 3.1).
accessWhether object instances can be Added or Deleted (readWrite) or not (readOnly). Adding or deleting instances is meaningful only for a Multi-Instance Object (table).
minEntriesThe minimum number of instances of this object (always less than or equal to maxEntries).
maxEntriesThe maximum number of instances of this object (can be “unbounded”). minEntries and maxEntries allow the object to be placed into one of three categories:
+- minEntries=0, maxEntries=1: single-instance object which might not be allowed to exist, e.g. because only one of it and another object can exist at the same time. Note that this is not the same thing as an optional object (in a sense, all objects are optional; requirements are specified via profiles). For an object with minEntries=0, maxEntries=1, the description MUST explain why it might not be allowed to exist, e.g. referencing the other objects that constrain it.
+- minEntries=1, maxEntries=1: single-instance object that is always allowed to exist.
+- All other cases: Multi-Instance Object (table) (A.2.10.1).
mountTypeFor USP only, denotes whether this object is a Mountable Object, a Mount Point, or none. Possible values are:
+- mountable: this object is a Mountable Object. Such an object appears only right under the Root Object.
+- mountPoint: this object is a Mount Point.
+- none (default): this object is neither a Mountable Object nor a Mount Point.
statusThe object’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new object.
descriptionThe object’s description (A.2.2).
componentThe components that are referenced (included) by the object (A.2.5).
parameterThe object’s parameter definitions (A.2.7).
commandFor USP only, the object’s command definitions (A.2.8).
eventFor USP only, the object’s event definitions (A.2.9).
+
+

A.2.10.1 Tables

+

If an object is a table, several other attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 21: XML Table Definition
NameDescription
nameFor a table, the last part of the name has to be “{i}.” (Section 3.1).
numEntriesParameterThe name of the parameter (in the parent object) that contains the number of entries in the table. Such a parameter is needed whenever there is a variable number of entries, i.e. whenever maxEntries is unbounded or is greater than minEntries.
enableParameterFor CWMP only, the name of the parameter (in each table entry) that enables and disables that table entry. Such a parameter is needed whenever access is readWrite (so the Controller might be able to create entries) and at least one uniqueKey element that defines a functional key is present.
uniqueKeyAn element that specifies a unique key by referencing those parameters that constitute the unique key (all of these parameters are single-valued, i.e. not list-valued).
+In CWMP only, for a non-functional key, or if the table has no enableParameter, the uniqueness requirement always applies; for a functional key, and if the table has an enableParameter, the uniqueness requirement applies only to enabled table entries.
discriminatorParameterThe name of the parameter (in the parent object) that selects which of the available objects that are part of the same union to use. Such a discrimination parameter is needed whenever there are multiple alternative sub-objects, i.e. objects where minEntries=0 and maxEntries=1.
+
+

Each unique key is either functional or non-functional:

+
    +
  • A functional key references at least one parameter that is necessary for the correct operation of the table, e.g., a DHCP option tag in a DHCP option table, or an external port number in a port mapping table.

  • +
  • A non-functional key references only parameters that are not necessary for the correct operation of the table, e.g., an Alias parameter or (sometimes) a Name parameter.

  • +
+

A unique key is assumed to be functional unless explicitly marked as non-functional by setting the unique key’s functional attribute to false.

+

As can be seen from the description in Table 21, in CWMP, non-functional keys are always required to be unique, regardless of whether the table has an enableParameter, or is enabled or disabled. Therefore, at most one entry in a given parent object can exist with a given value for a non-functional unique key. USP doesn’t require any different behavior for both functional and non-functional keys: all keys are always required to be unique.

+

The uniqueness requirement means that the value of the unique key MUST be unique for all instances of a given parent object regardless of how instances got created.

+

If a parameter (or group of parameters) is not defined as a unique key, an Agent MUST NOT expect or require those parameters to contain a value that is unique within the table. Such parameters MAY subsequently be defined as a vendor-specific data model composite unique key, but that composite unique key definition MUST include at least one vendor-specific parameter.

+

A.2.11 Profiles

+

Profiles are defined using the profile element, which can occur within component and model elements. When defining a new profile, the following attributes and elements are always relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 22: XML Profile Definition
NameDescription
nameThe profile name, including its version number (Section 2.3.3).
baseThe name of the previous version of the profile (for use when the profile version is greater than 1).
extendsA list of the names of the profiles that this profile extends.
minVersionA list of the model names that define the minimum versions for which this profile can be defined. Note that it is only necessary to specify this if the profile is defined within a component element.
descriptionThe profile’s description (A.2.2).
parameterThe profile’s parameter requirements, which can include descriptions, references to the parameters in question, and the parameter access requirement.
objectThe profile’s object requirements, which can include descriptions, references to the objects in question, the object access requirements, and requirements for the object’s parameters, commands and events, including requirements for command and event arguments.
+
+

Note:

+
    +
  • If a command or event specifies no argument requirements, this is the same as if all of its mandatory arguments were listed.

  • +
  • If a command or event specifies argument requirements, it has to list (at least) all its mandatory arguments.

  • +
+

A.2.12 Modifications

+

New data types, components, models and profiles can be created based on existing items. This does not modify the existing item.

+

Parameters, commands, events, objects and profiles can be modified “in place”, i.e. without creating a new item. This still uses the parameter, command, event, object and profile elements, and is indicated by using the base, rather than the name, attribute. The base attribute specifies the name of the existing item that is to be modified.

+

The syntax for modifying an item is the same as for creating an item, but there are rules. These rules are not specified in the DM Schema.

+

A.2.12.1 Parameter Modifications

+

The following rules govern parameter modifications.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 23: XML Parameter Modification
NameDescription
accessCan be “promoted” from readOnly to readWrite or writeOnceReadOnly.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
activeNotifyCan be changed from forceEnabled to forceDefault. No other changes are permitted.
forcedInformCannot be changed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
syntax/hiddenCannot be changed.
syntax/listCan add or modify the list element in the following ways:
+- Can convert a non-list string parameter to a list provided that an empty string was already a valid value with the appropriate meaning.
+- Can adjust limits on numbers of items, and on the list size, provided that the new rules do not permit any values that were not valid for the previous version of the parameter.
syntax/int etc.
+syntax/dataType
Can make any change that follows the base type restriction rules of A.2.3.8, e.g. can add enumerations.
syntax/defaultA default can be added if the parameter did not already have one.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

+

A.2.12.2 Command Modifications (USP Only)

+

The following rules govern command modifications.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 24: XML Command Modification
NameDescription
asyncCan be changed.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
inputCan modify input arguments according to the rules for modifying data model parameters and objects. Can add new input arguments, either directly or by referencing (including) new components.
outputCan modify output arguments according to the rules for modifying data model parameters and objects. Can add new output arguments, either directly or by referencing (including) new components.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

+

A.2.12.3 Event Modifications (USP Only)

+

The following rules govern command modifications.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 25: XML Event Modification
NameDescription
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
componentCan add new arguments by referencing (including) new components.
parameterCan modify parameter arguments according to the rules for modifying data model parameters. Can add new parameter arguments.
objectCan modify object arguments according to the rules for modifying data model objects. Can add new object arguments.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

+

A.2.12.4 Object Modifications

+

The following rules govern object modifications.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 26: XML Object Modification
NameDescription
accessCan be “promoted” from readOnly to readWrite.
minEntriesCannot be changed.
maxEntriesCannot be changed.
numEntriesParameterCannot be changed, unless was previously missing, in which case can be added.
enableParameterFor CWMP only, cannot be changed, unless was previously missing, in which case can be added.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
uniqueKeyCannot be changed, but new unique keys can be added.
componentCan reference (include) new components.
parameterCan add new parameters.
commandFor USP only, can add new commands.
eventFor USP only, can add new events.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of an object. Processing tools SHOULD be able to detect and warn when an object is modified in a way that contravenes the above rules.

+

A.2.12.5 Profile Modifications

+

The following rules govern profile modifications. They apply to the profile element, and to its nested parameter, command, event and object elements.

+
+ + ++++ + + + + + + + + + + + + + + + + +
Table 27: XML Profile Modification
NameDescription
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a profile. Indeed, since profiles are immutable, the only valid reason for changing a profile is to correct errors. Processing tools SHOULD be able to detect and warn when a profile is modified in a way that contravenes the above rules.

+

A.2.12.6 Description Modifications

+

The following rules govern description modifications. They apply to all description elements.

+
+ + ++++ + + + + + + + + + + + + +
Table 28: XML Description Modification
NameDescription
actionDetermines how the description will be modified; allowed values are:
+- create: create a new description (this is the default but is of course not permitted when modifying a description).
+- replace: replace the existing description with the new text.
+- append: append the new text to the existing description.
+- prefix: prefix the existing description with the new text.
+
+

In the case of prefix and append, processing tools SHOULD insert a line break between the existing description and the new text.

+

A.3 DM Schema

+

The normative version of the DM Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-6.xsd. Please be aware that a new version of the DM Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

+
+ +
+ + diff --git a/docs/06-index-cwmp-data-model-definition-xml-schema.yaml b/docs/06-index-cwmp-data-model-definition-xml-schema.yaml new file mode 100644 index 0000000..99036e5 --- /dev/null +++ b/docs/06-index-cwmp-data-model-definition-xml-schema.yaml @@ -0,0 +1,6 @@ +doctitle: 'Annex A: CWMP Data Model Definition XML Schema' +date: '' +subtitle: '' +title: 'Annex A: CWMP Data Model Definition XML Schema' +author: [] +titleid: 'sec:cwmp-data-model-definition-xml-schema' diff --git a/docs/07-index-cwmp-device-type-xml-schema.htmf b/docs/07-index-cwmp-device-type-xml-schema.htmf new file mode 100644 index 0000000..08df19f --- /dev/null +++ b/docs/07-index-cwmp-device-type-xml-schema.htmf @@ -0,0 +1,150 @@ + + +

B.1 Introduction

+ +

The CWMP Device Type XML Schema [4], or DT Schema, is used for +describing a device’s supported data model.

+ +

DT Schema instance documents can contain the following:

+ +
    +
  • Imports (from DM Schema instance documents) of Root or Service +Object definitions

  • +
  • Declarations of which features of imported Root or Service Objects +are supported

  • +
+ +

DT Schema instance documents cannot contain definitions of Root or +Service Objects. All such definitions have to reside in DM Schema +instance documents.

+ +

B.2 Normative Information

+ +

It is possible to create instance documents that conform to the DT +Schema but nevertheless are not valid device type specifications. This +is because it is not possible to specify all the normative device type +specification requirements using the XML Schema language. Therefore, the +schema contains additional requirements written using the usual +normative language. Instance documents that conform to the DT Schema and +meet these additional requirements are referred to as DT Instances.

+ +

The question of the location of the definitive normative information +therefore arises. The answer is as follows:

+ +
    +
  • All the normative information in the main part of the document +remains normative.

  • +
  • The DT Schema, and the additional requirements therein, are +normative. Some of these additional requirements are duplicated (for +emphasis) in this Annex.

  • +
  • The DT Schema references additional material in this Annex. Such +material is normative.

  • +
  • If the DT Schema conflicts with a normative requirement in the main +part of the document, this is an error in the DT Schema, and the +requirement in the main part of the document takes precedence.

  • +
+ +

B.2.1 Importing DM Instances

+ +

DM Instances are imported using the top-level import element, which +differs from the DM Schema import element in that only data types and +models can be imported (components cannot be imported because they are +not used in DT Instances).

+ +

Note – the rules for importing DM Instances into DT Instances are +consistent with those given in A.2.1 for importing DM Instances into +other DM Instances. The only difference is an additional rule governing +the use, when available, of the DT Instance URL.

+ +

The DT Schema specifies that the DM Instance is located via the file +attribute.

+ +

The rules governing the file attribute’s value and its use for locating +the DM Instance are as follows:

+ +
    +
  • It MUST be a URL adhering to RFC 3986 [9].

  • +
  • If the URL includes a scheme, it MUST be http, https or ftp.

  • +
  • If the URL includes an authority, it MUST NOT include credentials.

  • +
  • For standard BBF DM Instances, the rules that apply to the filename +part (final path segment) of the A.2.1.1 BBFURL MUST be applied to +the filename part of this URL. This means that the corrigendum +number can be omitted in order to refer to the latest corrigendum.

  • +
  • If the URL is a relative reference, processing tools MUST apply +their own logic, e.g. apply a search path. If a DT Instance URL is +available, the relative reference MUST be interpreted relative to +the DT Instance URL.

  • +
+ +

B.2.2 Features

+ +

The feature element provides a simple way for a DT Instance to indicate +whether a given feature is supported. The current set of standard +features is as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureDescription
DNSClientDevice contains a DNS client.
DNSServerDevice contains a DNS server.
FirewallDevice contains a firewall.
IPv6Device supports IPv6.
NATDevice supports NAT.
RouterDevice is a router.
+ +

Vendor-specific features MAY be supported, and if so the feature name +MUST begin with X_<VENDOR>_, where <VENDOR> MUST be as defined in +Section 3.3.

+ +

This example feature declaration illustrates the use of annotation:

+ +
    <feature name="DNSServer">
+      <annotation>Supports a DNS Server and XYZ.</annotation>
+    </feature>
+ +

B.2.2.1 DT Features Schema

+ +

In order to make it easy to add new features, standard feature names are defined +in a separate DT Features Schema that is imported by the DT Schema. The DT Features +Schema is unversioned, so the DT Schema need not be changed when new +standard feature names are added. In order to preserve backwards +compatibility, standard feature names, once added, MUST NOT ever be +deleted.

+ +

The normative version of the DT Features Schema can be found at +http://www.broadband-forum.org/cwmp/cwmp-devicetype-features.xsd. +Please be aware that a new version of the DT Features Schema might be +published at any time, in which case the version referenced in this +document would become out of date. Any conflict MUST be resolved in +favor of the normative version on the web site.

+ +

B.3 DT Schema

+ +

The normative version of the DT Schema can be found at +http://www.broadband-forum.org/cwmp/cwmp-devicetype-1-3.xsd. Please be +aware that a new version of the DT Schema might be published at any +time, in which case the version referenced in this document would become +out of date. Any conflict MUST be resolved in favor of the normative +version on the web site.

+ diff --git a/docs/07-index-cwmp-device-type-xml-schema.html b/docs/07-index-cwmp-device-type-xml-schema.html new file mode 100644 index 0000000..439b926 --- /dev/null +++ b/docs/07-index-cwmp-device-type-xml-schema.html @@ -0,0 +1,294 @@ + + + + + + + + + + BBF – Annex B: CWMP Device Type XML Schema + + + + + + + + + + + +
+ + + + +
+

Annex B: CWMP Device Type XML Schema

+
+ +

B.1 Introduction

+

The CWMP Device Type XML Schema [4], or DT Schema, is used for describing a device’s supported data model.

+

DT Schema instance documents can contain the following:

+
    +
  • Imports (from DM Schema instance documents) of Root or Service Object definitions

  • +
  • Declarations of which features of imported Root or Service Objects are supported

  • +
+

DT Schema instance documents cannot contain definitions of Root or Service Objects. All such definitions have to reside in DM Schema instance documents.

+

B.2 Normative Information

+

It is possible to create instance documents that conform to the DT Schema but nevertheless are not valid device type specifications. This is because it is not possible to specify all the normative device type specification requirements using the XML Schema language. Therefore, the schema contains additional requirements written using the usual normative language. Instance documents that conform to the DT Schema and meet these additional requirements are referred to as DT Instances.

+

The question of the location of the definitive normative information therefore arises. The answer is as follows:

+
    +
  • All the normative information in the main part of the document remains normative.

  • +
  • The DT Schema, and the additional requirements therein, are normative. Some of these additional requirements are duplicated (for emphasis) in this Annex.

  • +
  • The DT Schema references additional material in this Annex. Such material is normative.

  • +
  • If the DT Schema conflicts with a normative requirement in the main part of the document, this is an error in the DT Schema, and the requirement in the main part of the document takes precedence.

  • +
+

B.2.1 Importing DM Instances

+

DM Instances are imported using the top-level import element, which differs from the DM Schema import element in that only data types and models can be imported (components cannot be imported because they are not used in DT Instances).

+

Note – the rules for importing DM Instances into DT Instances are consistent with those given in A.2.1 for importing DM Instances into other DM Instances. The only difference is an additional rule governing the use, when available, of the DT Instance URL.

+

The DT Schema specifies that the DM Instance is located via the file attribute.

+

The rules governing the file attribute’s value and its use for locating the DM Instance are as follows:

+
    +
  • It MUST be a URL adhering to RFC 3986 [9].

  • +
  • If the URL includes a scheme, it MUST be http, https or ftp.

  • +
  • If the URL includes an authority, it MUST NOT include credentials.

  • +
  • For standard BBF DM Instances, the rules that apply to the filename part (final path segment) of the A.2.1.1 BBFURL MUST be applied to the filename part of this URL. This means that the corrigendum number can be omitted in order to refer to the latest corrigendum.

  • +
  • If the URL is a relative reference, processing tools MUST apply their own logic, e.g. apply a search path. If a DT Instance URL is available, the relative reference MUST be interpreted relative to the DT Instance URL.

  • +
+

B.2.2 Features

+

The feature element provides a simple way for a DT Instance to indicate whether a given feature is supported. The current set of standard features is as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureDescription
DNSClientDevice contains a DNS client.
DNSServerDevice contains a DNS server.
FirewallDevice contains a firewall.
IPv6Device supports IPv6.
NATDevice supports NAT.
RouterDevice is a router.
+

Vendor-specific features MAY be supported, and if so the feature name MUST begin with X_<VENDOR>_, where <VENDOR> MUST be as defined in Section 3.3.

+

This example feature declaration illustrates the use of annotation:

+
    <feature name="DNSServer">
+      <annotation>Supports a DNS Server and XYZ.</annotation>
+    </feature>
+

B.2.2.1 DT Features Schema

+

In order to make it easy to add new features, standard feature names are defined in a separate DT Features Schema that is imported by the DT Schema. The DT Features Schema is unversioned, so the DT Schema need not be changed when new standard feature names are added. In order to preserve backwards compatibility, standard feature names, once added, MUST NOT ever be deleted.

+

The normative version of the DT Features Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-devicetype-features.xsd. Please be aware that a new version of the DT Features Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

+

B.3 DT Schema

+

The normative version of the DT Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-devicetype-1-3.xsd. Please be aware that a new version of the DT Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

+
+ +
+ + diff --git a/docs/07-index-cwmp-device-type-xml-schema.yaml b/docs/07-index-cwmp-device-type-xml-schema.yaml new file mode 100644 index 0000000..8c3ef75 --- /dev/null +++ b/docs/07-index-cwmp-device-type-xml-schema.yaml @@ -0,0 +1,6 @@ +doctitle: 'Annex B: CWMP Device Type XML Schema' +date: '' +subtitle: '' +title: 'Annex B: CWMP Device Type XML Schema' +author: [] +titleid: 'sec:cwmp-device-type-xml-schema' diff --git a/docs/08-index-requirements-for-bbf-standard-data-models.htmf b/docs/08-index-requirements-for-bbf-standard-data-models.htmf new file mode 100644 index 0000000..4f76deb --- /dev/null +++ b/docs/08-index-requirements-for-bbf-standard-data-models.htmf @@ -0,0 +1,271 @@ + + +

C.1 Introduction

+ +

This Annex defines requirements that apply to all standard BBF DM +Instances. These requirements extend the normative requirements of the +DM Schema (Annex A).

+ +

C.2 Character Encoding and Character Set

+ +

The file MUST use UTF-8 encoding, indicated by the following Initial +line:

+ +
  <?xml version="1.0" encoding="UTF-8"?>
+ +

The file MUST use only a subset of the printable characters in the Basic +Latin Unicode block, namely characters whose decimal ASCII +representation is 10 (#xA), 13 (#xD) or is in the (inclusive) range +32-126.

+ +

Note – writing LF (LINE FEED) for #xA and CR (CARRIAGE RETURN) for +#xD, the XML specification [Section 2.11/8] states that XML +processors have to behave as if all CR LF sequences, or any CR +characters not followed by LF, are translated to LF.

+ +

Note – TAB (#x9) is not permitted. This is because no standard +indentation level is defined for TAB characters, so the indentation is +ambiguous when there is a mixture of SPACE (#x20) and TAB +characters.

+ +

Note – it is not permissible to include a non-printable ASCII +character by using a character reference such as “&#xe8;”. Such a +character reference will always be replaced with the referenced +character before being passed to the application, so use of the +reference is no different from direct use of the referenced character +(in this case the letter “è”, an “e” with a grave accent).

+ +

C.3 XML Usage

+ +

C.3.1 Data Model Item Names

+ +

All data model item names, i.e. data type, component, data model, +object, parameter and profile names, MUST start with an upper-case +letter (or an underscore for an internal data type, component, model +or profile) and MUST NOT contain hyphens or non-initial underscores.

+ +

C.3.2 DM and DMR Schema Versions

+ +

The file SHOULD use the most recent approved versions of the DM and DMR +Schemas.

+ +

Note – the DMR Schema is a non-normative XML Schema that can be used +to give hints to processing tools that generate reports from DM +Instances.

+ +

C.3.3 SchemaLocation Attribute

+ +

The top-level xsi:schemaLocation attribute defines the location of all of the +referenced BBF-published XML Schemas. All URLs MUST be absolute ones that +reference the published XML Schema on the +BBF web site.

+ +

Example:

+ +
    xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-5
+                          http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-5.xsd
+                        urn:broadband-forum-org:cwmp:datamodel-report-0-1
+                          http://www.broadband-forum.org/cwmp/cwmp-datamodel-report.xsd"
+ +

C.3.4 Spec Attribute

+ +

The top-level spec attribute (A.2.1.1) indicates the specification with +which the file is associated. It MUST be of the form +“urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the specification +number (including leading zeros), i is the issue number, a is the +amendment number, and c is the corrigendum number. The issue, amendment +and corrigendum numbers do not include leading zeros. For example, +“urn:broadband-forum-org:tr-106-1-0-0” refers to TR-106 (Issue 1 +Amendment 0), and “urn:broadband-forum-org:tr-106-1-2-1” refers to +TR-106 (Issue 1) Amendment 2 Corrigendum 1.

+ +

Example:

+ +
    spec="urn:broadband-forum-org:tr-181-2-5-0"
+ +

C.3.5 File Attribute

+ +

The top-level file attribute (A.2.1.1) indicates the file name. It MUST +be of the form “tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where +nnn, i, a and c are the same as in the spec attribute. The label, which +MUST NOT begin with a digit, is only needed if more than one DM Instance +is associated with a given specification.

+ +

Example:

+ +
    file="tr-181-2-5-0.xml"
+ +

C.3.6 Import Element

+ +

The import element’s spec and file attributes MUST NOT specify the +corrigendum number. This means that an import element always references +the latest corrigendum (A.2.1.1).

+ +

C.3.7 Bibliography Reference Element

+ +
+

Bibliographic references in the tr-069-biblio.xml file MUST be grouped by +organization and MUST be sorted “naturally” (more-or-less alphabetically, but +avoiding surprises, e.g., “TR-181a9” would be listed before “TR-181a10”). The +main rule is “follow existing practice”.

+ +

The bibliography reference id attribute is intended to uniquely identify +this reference across all instance documents. Therefore, this attribute +MUST obey the following rules:

+ +

For a BBF Technical Report, it MUST be of the form “TR-nnnixaycz”, where +TR is the literal “TR”, nnn is the Technical Report number (including +leading zeros), i, a and c are literal letters, and x, y, and z are the +issue, amendment and corrigendum numbers (respectively). +Omitted issue, amendment or corrigendum numbers refer to the most recent issue, +amendment or corrigendum, so “TR-nnn” is the most recent corrigendum of the +most recent amendment of the most recent issue, “TR-nnni2” is the most recent +corrigendum of the most recent amendment of issue 2, etc.. Literal i1, a0 +and/or c0 can be used, if needed, to refer specifically to the initial version.

+ +
+

When using the {{bibref}} template to refer to bibliographic references, the +plain “TR-nnn” form SHOULD be used by default; more specific forms can be used +where the reference is to a specific version.

+ +

For an IETF RFC, it MUST be of the form “RFCnnn”, where RFC is the +literal “RFC” and nnn is the RFC number (no leading zeros).

+ +

For an IEEE specification, it SHOULD be of the form “nnn.ml-dddd”, where +nnn.m is the IEEE group, l is the spec letter(s), and dddd is the +publication year. For example, “802.1D-2004”.

+ +

For an ETSI specification (which includes DVB specifications), it SHOULD +be of the form “TTnnnnnnva.b.c” where TT is the specification type, +usually “TS” (Technical Specification), nnnnnn is the specification +number, and a.b.c is the version number.

+ +

For specifications issued by other standards organizations, or by +vendors, it SHOULD be of a standard form if one is defined.

+ +

Formally, bibliographic reference IDs in instance documents that are +published by the BBF and the other organizations mentioned above are +defined as follows:

+ +
    ReferenceID = BBFID
+                | RFCID
+                | IEEEID
+                | ETSIID
+                | OtherID
+
+    BBFID = "TR-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
+
+    BBFNumber = DIGIT{3,} // including leading zeros, e.g. 069
+
+    BBFIssue = "i" <number greater than one>
+             | "" // empty means the most recent Issue
+
+    BBFAmendment = "a" <number greater than zero>
+                 | "" // empty means the most recent Amendment
+
+    BBFCorrigendum = "c" <number greater than zero>
+                   | "" // empty means the most recent Corrigendum
+
+    RFCID = "RFC" RFCNumber
+
+    RFCNumber = NONZERODIGIT [DIGIT]*
+                              // no leading zeros, e.g. 123
+
+    IEEEID = IEEEGroup IEEESpec IEEEDate
+           | <for other IEEE specifications, of a standard form if one is defined>
+
+    IEEEGroup = <group number> "." <group sub-number>
+                                // e.g. 802.1
+
+    IEEESpec = <spec letter(s)> // e.g. D
+
+    IEEEDate = "-" <publication year>
+                                // e.g. -2004
+             | ""               // can be empty
+
+    ETSIID = ETSISpecType ETSINumber ETSIVersion
+           | <for other ETSI specifications, of a standard form if one is defined>
+
+    ETSISpecType = "TR" // Technical Report
+                 | "TS" // Technical Specification
+                 | "ES" // ETSI Specification
+                 | "EN" // European Standard
+
+    ETSINumber = [DIGIT]{6} // e.g. 102034
+
+    ETSIVersion = "v" <version number as specified by ETSI>
+                | ""            // can be empty
+
+    OtherURI = <of a standard form if one is defined>
+ +

C.3.8 General Formatting

+ +

The file MUST use 2 SPACE characters for indentation.

+ +

The file MUST be consistently indented, including within XML comments.

+ +

XML comment lines SHOULD NOT be longer than 79 characters. This avoids +line wrap in most text editors.

+ +

All description elements MUST be formatted as follows:

+ +
    +
  • Single-line descriptions MAY be indented and formatted on separate +lines (as for multi-line descriptions) or inline, as in:

    + +

    <description>One line description.</description>

  • +
  • Multi-line descriptions MUST be indented relative to the description +element and formatted on separate lines, as in:

  • +
+ +
    <description>
+      First line of multi-line description.
+      Second line of multi-line description.
+    </description>
+ +

C.4 Initial XML Comment Formatting

+ +

The Initial Line (the <?xml> line) MUST be immediately followed by an +Initial XML comment that consists of the following (separated by blank +lines):

+ +
    +
  • One-line summary.

  • +
  • Notice section.

  • +
  • Summary section.

  • +
  • Issue History section.

  • +
+ +

The three sections MUST be introduced by a line that consists of two +SPACE characters followed by the section name and a colon.

+ +
    <?xml version="1.0" encoding="UTF-8"?>
+    <!--
+      ...One-line summary...
+
+    Notice:
+      ...standard notice...
+
+    Summary:
+      ...multi-line summary...
+
+    Issue History:
+      ...summary of changes in each approved version...
+
+    -->
+ +

C.4.1 One-line Summary

+ +

The One-line summary MUST contain a brief description of the reason for +the creation of this version. It SHOULD NOT be terminated with a period +(it is not a sentence).

+ +

Example:

+ +
    <?xml version="1.0" encoding="UTF-8"?>
+    <!-- Added support for IPsec -->
+ +

C.4.2 Summary Section

+ +

The Summary section MAY extend the information in the One-line summary.

+ diff --git a/docs/08-index-requirements-for-bbf-standard-data-models.html b/docs/08-index-requirements-for-bbf-standard-data-models.html new file mode 100644 index 0000000..2355f6d --- /dev/null +++ b/docs/08-index-requirements-for-bbf-standard-data-models.html @@ -0,0 +1,370 @@ + + + + + + + + + + BBF – Annex C: Requirements for BBF Standard Data Models + + + + + + + + + + + +
+ + + + +
+

Annex C: Requirements for BBF Standard Data Models

+
+ +

C.1 Introduction

+

This Annex defines requirements that apply to all standard BBF DM Instances. These requirements extend the normative requirements of the DM Schema (Annex A).

+

C.2 Character Encoding and Character Set

+

The file MUST use UTF-8 encoding, indicated by the following Initial line:

+
  <?xml version="1.0" encoding="UTF-8"?>
+

The file MUST use only a subset of the printable characters in the Basic Latin Unicode block, namely characters whose decimal ASCII representation is 10 (#xA), 13 (#xD) or is in the (inclusive) range 32-126.

+

Note – writing LF (LINE FEED) for #xA and CR (CARRIAGE RETURN) for #xD, the XML specification [Section 2.11/8] states that XML processors have to behave as if all CR LF sequences, or any CR characters not followed by LF, are translated to LF.

+

Note – TAB (#x9) is not permitted. This is because no standard indentation level is defined for TAB characters, so the indentation is ambiguous when there is a mixture of SPACE (#x20) and TAB characters.

+

Note – it is not permissible to include a non-printable ASCII character by using a character reference such as “&#xe8;”. Such a character reference will always be replaced with the referenced character before being passed to the application, so use of the reference is no different from direct use of the referenced character (in this case the letter “è”, an “e” with a grave accent).

+

C.3 XML Usage

+

C.3.1 Data Model Item Names

+

All data model item names, i.e. data type, component, data model, object, parameter and profile names, MUST start with an upper-case letter (or an underscore for an internal data type, component, model or profile) and MUST NOT contain hyphens or non-initial underscores.

+

C.3.2 DM and DMR Schema Versions

+

The file SHOULD use the most recent approved versions of the DM and DMR Schemas.

+

Note – the DMR Schema is a non-normative XML Schema that can be used to give hints to processing tools that generate reports from DM Instances.

+

C.3.3 SchemaLocation Attribute

+

The top-level xsi:schemaLocation attribute defines the location of all of the referenced BBF-published XML Schemas. All URLs MUST be absolute ones that reference the published XML Schema on the BBF web site.

+

Example:

+
    xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-5
+                          http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-5.xsd
+                        urn:broadband-forum-org:cwmp:datamodel-report-0-1
+                          http://www.broadband-forum.org/cwmp/cwmp-datamodel-report.xsd"
+

C.3.4 Spec Attribute

+

The top-level spec attribute (A.2.1.1) indicates the specification with which the file is associated. It MUST be of the form “urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the specification number (including leading zeros), i is the issue number, a is the amendment number, and c is the corrigendum number. The issue, amendment and corrigendum numbers do not include leading zeros. For example, “urn:broadband-forum-org:tr-106-1-0-0” refers to TR-106 (Issue 1 Amendment 0), and “urn:broadband-forum-org:tr-106-1-2-1” refers to TR-106 (Issue 1) Amendment 2 Corrigendum 1.

+

Example:

+
    spec="urn:broadband-forum-org:tr-181-2-5-0"
+

C.3.5 File Attribute

+

The top-level file attribute (A.2.1.1) indicates the file name. It MUST be of the form “tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where nnn, i, a and c are the same as in the spec attribute. The label, which MUST NOT begin with a digit, is only needed if more than one DM Instance is associated with a given specification.

+

Example:

+
    file="tr-181-2-5-0.xml"
+

C.3.6 Import Element

+

The import element’s spec and file attributes MUST NOT specify the corrigendum number. This means that an import element always references the latest corrigendum (A.2.1.1).

+

C.3.7 Bibliography Reference Element

+
+

Bibliographic references in the tr-069-biblio.xml file MUST be grouped by organization and MUST be sorted “naturally” (more-or-less alphabetically, but avoiding surprises, e.g., “TR-181a9” would be listed before “TR-181a10”). The main rule is “follow existing practice”.

+
+

The bibliography reference id attribute is intended to uniquely identify this reference across all instance documents. Therefore, this attribute MUST obey the following rules:

+

For a BBF Technical Report, it MUST be of the form “TR-nnnixaycz”, where TR is the literal “TR”, nnn is the Technical Report number (including leading zeros), i, a and c are literal letters, and x, y, and z are the issue, amendment and corrigendum numbers (respectively). Omitted issue, amendment or corrigendum numbers refer to the most recent issue, amendment or corrigendum, so “TR-nnn” is the most recent corrigendum of the most recent amendment of the most recent issue, “TR-nnni2” is the most recent corrigendum of the most recent amendment of issue 2, etc.. Literal i1, a0 and/or c0 can be used, if needed, to refer specifically to the initial version.

+
+

When using the {{bibref}} template to refer to bibliographic references, the plain “TR-nnn” form SHOULD be used by default; more specific forms can be used where the reference is to a specific version.

+
+

For an IETF RFC, it MUST be of the form “RFCnnn”, where RFC is the literal “RFC” and nnn is the RFC number (no leading zeros).

+

For an IEEE specification, it SHOULD be of the form “nnn.ml-dddd”, where nnn.m is the IEEE group, l is the spec letter(s), and dddd is the publication year. For example, “802.1D-2004”.

+

For an ETSI specification (which includes DVB specifications), it SHOULD be of the form “TTnnnnnnva.b.c” where TT is the specification type, usually “TS” (Technical Specification), nnnnnn is the specification number, and a.b.c is the version number.

+

For specifications issued by other standards organizations, or by vendors, it SHOULD be of a standard form if one is defined.

+

Formally, bibliographic reference IDs in instance documents that are published by the BBF and the other organizations mentioned above are defined as follows:

+
    ReferenceID = BBFID
+                | RFCID
+                | IEEEID
+                | ETSIID
+                | OtherID
+
+    BBFID = "TR-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
+
+    BBFNumber = DIGIT{3,} // including leading zeros, e.g. 069
+
+    BBFIssue = "i" <number greater than one>
+             | "" // empty means the most recent Issue
+
+    BBFAmendment = "a" <number greater than zero>
+                 | "" // empty means the most recent Amendment
+
+    BBFCorrigendum = "c" <number greater than zero>
+                   | "" // empty means the most recent Corrigendum
+
+    RFCID = "RFC" RFCNumber
+
+    RFCNumber = NONZERODIGIT [DIGIT]*
+                              // no leading zeros, e.g. 123
+
+    IEEEID = IEEEGroup IEEESpec IEEEDate
+           | <for other IEEE specifications, of a standard form if one is defined>
+
+    IEEEGroup = <group number> "." <group sub-number>
+                                // e.g. 802.1
+
+    IEEESpec = <spec letter(s)> // e.g. D
+
+    IEEEDate = "-" <publication year>
+                                // e.g. -2004
+             | ""               // can be empty
+
+    ETSIID = ETSISpecType ETSINumber ETSIVersion
+           | <for other ETSI specifications, of a standard form if one is defined>
+
+    ETSISpecType = "TR" // Technical Report
+                 | "TS" // Technical Specification
+                 | "ES" // ETSI Specification
+                 | "EN" // European Standard
+
+    ETSINumber = [DIGIT]{6} // e.g. 102034
+
+    ETSIVersion = "v" <version number as specified by ETSI>
+                | ""            // can be empty
+
+    OtherURI = <of a standard form if one is defined>
+

C.3.8 General Formatting

+

The file MUST use 2 SPACE characters for indentation.

+

The file MUST be consistently indented, including within XML comments.

+

XML comment lines SHOULD NOT be longer than 79 characters. This avoids line wrap in most text editors.

+

All description elements MUST be formatted as follows:

+
    +
  • Single-line descriptions MAY be indented and formatted on separate lines (as for multi-line descriptions) or inline, as in:

    +

    <description>One line description.</description>

  • +
  • Multi-line descriptions MUST be indented relative to the description element and formatted on separate lines, as in:

  • +
+
    <description>
+      First line of multi-line description.
+      Second line of multi-line description.
+    </description>
+

C.4 Initial XML Comment Formatting

+

The Initial Line (the <?xml> line) MUST be immediately followed by an Initial XML comment that consists of the following (separated by blank lines):

+
    +
  • One-line summary.

  • +
  • Notice section.

  • +
  • Summary section.

  • +
  • Issue History section.

  • +
+

The three sections MUST be introduced by a line that consists of two SPACE characters followed by the section name and a colon.

+
    <?xml version="1.0" encoding="UTF-8"?>
+    <!--
+      ...One-line summary...
+
+    Notice:
+      ...standard notice...
+
+    Summary:
+      ...multi-line summary...
+
+    Issue History:
+      ...summary of changes in each approved version...
+
+    -->
+

C.4.1 One-line Summary

+

The One-line summary MUST contain a brief description of the reason for the creation of this version. It SHOULD NOT be terminated with a period (it is not a sentence).

+

Example:

+
    <?xml version="1.0" encoding="UTF-8"?>
+    <!-- Added support for IPsec -->
+

C.4.2 Summary Section

+

The Summary section MAY extend the information in the One-line summary.

+
+ +
+ + diff --git a/docs/08-index-requirements-for-bbf-standard-data-models.yaml b/docs/08-index-requirements-for-bbf-standard-data-models.yaml new file mode 100644 index 0000000..213af31 --- /dev/null +++ b/docs/08-index-requirements-for-bbf-standard-data-models.yaml @@ -0,0 +1,6 @@ +doctitle: 'Annex C: Requirements for BBF Standard Data Models' +date: '' +subtitle: '' +title: 'Annex C: Requirements for BBF Standard Data Models' +author: [] +titleid: 'sec:requirements-for-bbf-standard-data-models' diff --git a/docs/09-index-html-data-model-reports.htmf b/docs/09-index-html-data-model-reports.htmf new file mode 100644 index 0000000..8ed581c --- /dev/null +++ b/docs/09-index-html-data-model-reports.htmf @@ -0,0 +1,137 @@ + + +

I.1 Introduction

+ +

TR-106 Amendment 2 published the first version of the DM Schema. Since +then the normative definitions of all CWMP data models have been +published as DM Instances (XML documents that conform to the DM Schema). +Since these XML data models might not be easily read by a human, +corresponding non-normative HTML data model reports have also been +published.

+ +

This appendix briefly discusses these HTML reports.

+ +

I.2 Report Types

+ +

There are two types of HTML reports published for a given version of a +data model:

+ +
    +
  • a full report, covering the given version and all preceding versions +of the data model

  • +
  • a partial report, covering only the given version of the data model +(i.e. excluding content specific to earlier versions of the data +model); i.e. last only changes

  • +
+ +

For example, TR-181 Issue 2 Amendment 11 defined the Device:2.11 data +model revision, declared in tr-181-2-11-0.xml. The full report is in +tr-181-2-11-0.html, and includes the aggregate data model definitions +from Device:2.11 and earlier (back to Device:2.0 inclusive). The partial +report is in tr-181-2-11-0-diffs.html, and only includes the data model +definitions added or changed by TR-181 Issue 2 Amendment 11.

+ +

I.3 Report Layout

+ +

Each HTML data model report contains the following sections:

+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoticeThe legal notice, lifted from the top of the associated XML data model file.
SummaryDescribes the reason for this data model version. This is lifted from the associated XML data model file’s document description.
Table of ContentsHyperlinks to the various sections within the report, as well as links to each Object and Profile definition within the report.
Data TypesNamed data type definitions (i.e. not built-in types) that are used to define Parameters within the report. Each data type definition consists of name, type, and description.
ReferencesHyperlinks to external bibliography references cited by Object, Parameter, and Profile descriptions within the report.
Data model definitionObject and Parameter definitions. Which Object and Parameter definitions are included depends on whether it is a full or partial (last only) report.
Inform and Notification RequirementsLists those Parameters within the report that are: forced inform parameters, forced active notification parameters, and parameters for which active notification can be denied.
Profile DefinitionsProfile definitions, showing Object and Parameter requirements. Which Profiles are included depends on whether it is a full or partial (last only) report.
+ +

I.4 Data Model Definition

+ +

Parameters make use of a limited subset of the default SOAP data types [13]. The +notation used to represent these types within the report is +listed in the following table.

+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDescription
objectA container for parameters and/or other objects. The full Path Name of a parameter is given by the parameter name appended to the full Path Name of the object it is contained within.
stringFor strings, a minimum and maximum allowed length can be indicated using the form string(Min:Max), where Min and Max are the minimum and maximum string length in characters. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in string(Max). Multiple comma-separated ranges can be specified, in which case the string length will be in one of the ranges.
intInteger in the range -2147483648 to +2147483647, inclusive. For some int types, a value range is given using the form int(Min:Max) or int(Min:Max step Step) where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
longLong integer in the range -9223372036854775808 to 9223372036854775807, inclusive. For some long types, a value range is given using the form long(Min:Max) or long(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
unsignedIntUnsigned integer in the range 0 to 4294967295, inclusive. For some unsignedInt types, a value range is given using the form unsignedInt(Min:Max) or unsigned(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
unsignedLongUnsigned long integer in the range 0 to 18446744073709551615, inclusive. For some unsignedLong types, a value range is given using the form unsignedLong(Min:Max) or unsignedLong(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
booleanBoolean, where the allowed values are “0” or “1” (or equivalently, “true” or “false”).
dateTimeThe subset of the ISO 8601 date-time format defined by the SOAP dateTime type [13].
base64Base64 encoded binary (no line-length limitation). A minimum and maximum allowed length can be indicated using the form base64(Min:Max), where Min and Max are the minimum and maximum length in characters before Base64 encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in base64(Max). Multiple comma-separate ranges can be specified, in which case the length MUST be in one of the ranges.
hexBinaryHex encoded binary. A minimum and maximum allowed length can be indicated using the form hexBinary(Min:Max), where Min and Max are the minimum and maximum length in characters before Hex Binary encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in hexBinary(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges.
+ +

Note: A Parameter that is defined to be one of the named data types, is +reported as such at the beginning of the Parameter’s description via a +reference back to the associated data type definition (e.g. +[MacAddress]). However, such parameters still indicate their SOAP +data type (as discussed in the table above).

+ +
+

End of Broadband Forum Technical Report TR-106

diff --git a/docs/09-index-html-data-model-reports.html b/docs/09-index-html-data-model-reports.html new file mode 100644 index 0000000..283aa8d --- /dev/null +++ b/docs/09-index-html-data-model-reports.html @@ -0,0 +1,328 @@ + + + + + + + + + + BBF – Appendix I: HTML Data Model Reports + + + + + + + + + + + +
+ + + + +
+

Appendix I: HTML Data Model Reports

+
+ +

I.1 Introduction

+

TR-106 Amendment 2 published the first version of the DM Schema. Since then the normative definitions of all CWMP data models have been published as DM Instances (XML documents that conform to the DM Schema). Since these XML data models might not be easily read by a human, corresponding non-normative HTML data model reports have also been published.

+

This appendix briefly discusses these HTML reports.

+

I.2 Report Types

+

There are two types of HTML reports published for a given version of a data model:

+
    +
  • a full report, covering the given version and all preceding versions of the data model

  • +
  • a partial report, covering only the given version of the data model (i.e. excluding content specific to earlier versions of the data model); i.e. last only changes

  • +
+

For example, TR-181 Issue 2 Amendment 11 defined the Device:2.11 data model revision, declared in tr-181-2-11-0.xml. The full report is in tr-181-2-11-0.html, and includes the aggregate data model definitions from Device:2.11 and earlier (back to Device:2.0 inclusive). The partial report is in tr-181-2-11-0-diffs.html, and only includes the data model definitions added or changed by TR-181 Issue 2 Amendment 11.

+

I.3 Report Layout

+

Each HTML data model report contains the following sections:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoticeThe legal notice, lifted from the top of the associated XML data model file.
SummaryDescribes the reason for this data model version. This is lifted from the associated XML data model file’s document description.
Table of ContentsHyperlinks to the various sections within the report, as well as links to each Object and Profile definition within the report.
Data TypesNamed data type definitions (i.e. not built-in types) that are used to define Parameters within the report. Each data type definition consists of name, type, and description.
ReferencesHyperlinks to external bibliography references cited by Object, Parameter, and Profile descriptions within the report.
Data model definitionObject and Parameter definitions. Which Object and Parameter definitions are included depends on whether it is a full or partial (last only) report.
Inform and Notification RequirementsLists those Parameters within the report that are: forced inform parameters, forced active notification parameters, and parameters for which active notification can be denied.
Profile DefinitionsProfile definitions, showing Object and Parameter requirements. Which Profiles are included depends on whether it is a full or partial (last only) report.
+

I.4 Data Model Definition

+

Parameters make use of a limited subset of the default SOAP data types [13]. The notation used to represent these types within the report is listed in the following table.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDescription
objectA container for parameters and/or other objects. The full Path Name of a parameter is given by the parameter name appended to the full Path Name of the object it is contained within.
stringFor strings, a minimum and maximum allowed length can be indicated using the form string(Min:Max), where Min and Max are the minimum and maximum string length in characters. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in string(Max). Multiple comma-separated ranges can be specified, in which case the string length will be in one of the ranges.
intInteger in the range -2147483648 to +2147483647, inclusive. For some int types, a value range is given using the form int(Min:Max) or int(Min:Max step Step) where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
longLong integer in the range -9223372036854775808 to 9223372036854775807, inclusive. For some long types, a value range is given using the form long(Min:Max) or long(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
unsignedIntUnsigned integer in the range 0 to 4294967295, inclusive. For some unsignedInt types, a value range is given using the form unsignedInt(Min:Max) or unsigned(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
unsignedLongUnsigned long integer in the range 0 to 18446744073709551615, inclusive. For some unsignedLong types, a value range is given using the form unsignedLong(Min:Max) or unsignedLong(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
booleanBoolean, where the allowed values are “0” or “1” (or equivalently, “true” or “false”).
dateTimeThe subset of the ISO 8601 date-time format defined by the SOAP dateTime type [13].
base64Base64 encoded binary (no line-length limitation). A minimum and maximum allowed length can be indicated using the form base64(Min:Max), where Min and Max are the minimum and maximum length in characters before Base64 encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in base64(Max). Multiple comma-separate ranges can be specified, in which case the length MUST be in one of the ranges.
hexBinaryHex encoded binary. A minimum and maximum allowed length can be indicated using the form hexBinary(Min:Max), where Min and Max are the minimum and maximum length in characters before Hex Binary encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in hexBinary(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges.
+

Note: A Parameter that is defined to be one of the named data types, is reported as such at the beginning of the Parameter’s description via a reference back to the associated data type definition (e.g. [MacAddress]). However, such parameters still indicate their SOAP data type (as discussed in the table above).

+
+

End of Broadband Forum Technical Report TR-106

+
+
+ +
+ + diff --git a/docs/09-index-html-data-model-reports.yaml b/docs/09-index-html-data-model-reports.yaml new file mode 100644 index 0000000..f3918ed --- /dev/null +++ b/docs/09-index-html-data-model-reports.yaml @@ -0,0 +1,6 @@ +doctitle: 'Appendix I: HTML Data Model Reports' +date: '' +subtitle: '' +title: 'Appendix I: HTML Data Model Reports' +author: [] +titleid: 'sec:html-data-model-reports' diff --git a/docs/96-index-tocfull.htmf b/docs/96-index-tocfull.htmf new file mode 100644 index 0000000..242c9eb --- /dev/null +++ b/docs/96-index-tocfull.htmf @@ -0,0 +1,112 @@ + + diff --git a/docs/96-index-tocfull.html b/docs/96-index-tocfull.html new file mode 100644 index 0000000..09e4737 --- /dev/null +++ b/docs/96-index-tocfull.html @@ -0,0 +1,305 @@ + + + + + + + + + + BBF – Tocfull + + + + + + + + + + + +
+ + + + +
+

Tocfull

+
+

Cover Page

+

1 Introduction

+ +

2 Architecture

+

2.1 Data Hierarchy

+ +

2.2 Object Versioning

+ +

2.3 Profiles

+ +

2.4 DEPRECATED and OBSOLETED Items

+ +

3 Object Definitions

+

3.1 General Notation

+

3.2 Data Types and Representation

+ +

3.3 Vendor-Specific Elements

+

4 Normative References

+

Annex A: CWMP Data Model Definition XML Schema

+

A.1 Introduction

+ +

A.2 Normative Information

+ +

A.3 DM Schema

+

Annex B: CWMP Device Type XML Schema

+

B.1 Introduction

+

B.2 Normative Information

+ +

B.3 DT Schema

+

Annex C: Requirements for BBF Standard Data Models

+

C.1 Introduction

+

C.2 Character Encoding and Character Set

+

C.3 XML Usage

+ +

C.4 Initial XML Comment Formatting

+ +

Appendix I: HTML Data Model Reports

+ +
+ +
+ + diff --git a/docs/96-index-tocfull.yaml b/docs/96-index-tocfull.yaml new file mode 100644 index 0000000..fd2ca83 --- /dev/null +++ b/docs/96-index-tocfull.yaml @@ -0,0 +1,6 @@ +doctitle: Tocfull +date: '' +subtitle: '' +title: Tocfull +author: [] +titleid: tocfull diff --git a/docs/97-index-metadata.yaml b/docs/97-index-metadata.yaml new file mode 100644 index 0000000..57d6af4 --- /dev/null +++ b/docs/97-index-metadata.yaml @@ -0,0 +1,318 @@ +doctitle: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents' +citation-style: '../../../install/pandoc/csl/bbf.csl' +bbfWorkArea: '' +siteurl: 'index.html' +version: '' +refIndexTemplate: '\[i\]\[suf\]' +link-citations: true +bbfYear: 2020 +figureTemplate: '\[figureTitle\] \[i\]\[titleDelim\] \[t\]' +bbfType: 'Technical Report' +reference-section-title: References +cref: false +linkReferences: true +include-entry: '../../../install/pandoc/' +subfigGrid: false +bbfRevisionHistorySpec: + after: '

Comments or questions about this Broadband Forum Technical Report should be directed to info@broadband-forum.org.

' + optional: true + labels: + - number + - approval + - publication + - editors + - changes + headers: + - 'Issue Number!!!' + - 'Approval Date!!!!' + - 'Publication Date!' + - 'Issue Editor!!!!!' + - 'Changes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + before: '

Issue History

' +lolTitle: '

List of Listings

' +listingTemplate: '\[listingTitle\] \[i\]\[titleDelim\] \[t\]' +bbfNumber: 'TR-106' +bbfCertProductType: '<type of product>' +codeBlockCaptions: false +lang: 'en-US' +bbfPSLsSpec: + optional: true + before: '

Project Stream Leader(s)

' +uspRevisionHistorySpec: + after: '

Comments or questions about this Broadband Forum Technical Report should be directed to info@broadband-forum.org.

' + optional: true + labels: + - number + - changes + headers: + - 'Issue Number' + - 'Changes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + before: '

Issue History

' +chapDelim: '.' +date: 'Issue Date: November 2020' +bbfRevisionHistory: + - changes: Original + number: 'Issue 1' + editors: '

Jeff Bernstein, 2Wire
Christele Bouchat, Alcatel
Tim Spets, Westell

' + approval: 'September 2005' + - changes: 'Clarification of original document' + number: 'Issue 1 Amendment 1' + editors: '

Jeff Bernstein, 2Wire
John Blackford, 2Wire
Mike Digdon, SupportSoft
Heather Kirksey, Motive
William Lupton, 2Wire
Anton Okmianski, Cisco

' + approval: 'November 2006' + - changes: 'Addition of data model definition XML Schema and normative XML common object and component definitions' + number: 'Issue 1 Amendment 2' + editors: '

William Lupton, 2Wire
Håkan Westin, Tilgin

' + approval: 'November 2008' + - changes: 'Addition of device type XML Schema' + number: 'Issue 1 Amendment 3' + editors: '

William Lupton, 2Wire
Håkan Westin, Tilgin

' + approval: 'September 2009' + - changes: 'Moved data model definitions to TR-181 Issue 1' + number: 'Issue 1 Amendment 4' + editors: '

William Lupton, 2Wire
Paul Sigurdson, Broadband Forum

' + approval: 'February 2010' + - changes: '

Replaced definitions of named data types such as IPAddress with references to normative XML.
Minor changes to DM Schema (v1.3) and DT Schema (v1.1).

' + number: 'Issue 1 Amendment 5' + editors: 'Paul Sigurdson, Broadband Forum' + approval: 'November 2010' + - changes: '

Removed definition of proxying, now defined in TR-069.
Removed Common objects.
Alias Parameter Requirements added.

' + number: 'Issue 1 Amendment 6' + editors: '

Sarah Banks, Cisco
Andrea Colmegna, FASTWEB
Tim Spets, Motorola Mobility

' + approval: 'July 2011' + - number: 'Issue 1 Amendment 7' + editors: 'William Lupton, Cisco' + changes: '

Added descriptions of new features in DM Schema (v1.4 & v1.5) and DT Schema (v1.2 & v1.3).
Added Annex defining additional requirements for BBF standard data models.

' + publication: '7 October 2013' + approval: 'September 2013' + - number: 'Issue 1 Amendment 8' + editors: '

Jean-Didier Ott, Orange
William Lupton, Broadband Forum

' + changes: '

Added support of USP (mountable objects).
Removed references to obsolete data models.
Moved device requirements to TR-069.

' + publication: '10 May 2018' + approval: '16 March 2018' + - changes: '

Schema updates; document not updated.

' + number: 'Issue 1 Amendment 9' + - number: 'Issue 1 Amendment 10' + editors: '

William Lupton, Broadband Forum

' + changes: '

Converted document to markdown.
Various editorial improvements.

' + publication: '5 November 2020' + approval: '5 November 2020' +autoSectionLabels: true +uspAcknowledgmentsSpec: + optional: true + headers: + - 'Name!!!!!!!!!!!!!!!!!!' + - 'Company!!!!' + - 'Email!!!!!!!!!!' + before: '

Acknowledgments

The following individuals are being acknowledged for their efforts in the testing and development of this specification.

' +uspWADsSpec: + optional: true + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Work Area Directors

' +secHeaderTemplate: '\[i\]\[secHeaderDelim\]\[t\]' +uspPSLsSpec: + optional: true + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Project Stream Leaders

' +uspEditorsSpec: + optional: true + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Editors

' +bbfEditors: 'William Lupton, Broadband Forum' +references: + - issued: + year: 1997 + call-number: 'RFC 2119' + id: RFC2119 + title: 'Key words for use in RFCs to Indicate Requirement Levels' + URL: 'https://tools.ietf.org/html/rfc2119' + publisher: IETF + - issued: + year: 1999 + call-number: 'RFC 2648' + id: RFC2648 + title: 'A URN Namespace for IETF Documents' + URL: 'https://tools.ietf.org/html/rfc2648' + publisher: IETF + - issued: + year: 2005 + call-number: 'RFC 3986' + id: RFC3986 + title: 'Uniform Resource Identifier (URI): Generic Syntax' + URL: 'https://tools.ietf.org/html/rfc3986' + publisher: IETF + - issued: + year: 2018 + call-number: 'TR-069 Amendment 6' + id: 'TR-069' + title: 'CPE WAN Management Protocol' + URL: 'https://www.broadband-forum.org/technical/download/TR-069.pdf' + publisher: 'Broadband Forum' + - issued: + year: 2017 + call-number: 'TR-140 Amendment 3' + id: 'TR-140' + title: 'TR-069 Data Model for Storage Service Enabled Devices' + URL: 'https://www.broadband-forum.org/technical/download/TR-140.pdf' + publisher: 'Broadband Forum' + - issued: + year: 2015 + call-number: 'TR-143 Amendment 1 Corrigendum 1' + id: 'TR-143' + title: 'Enabling Network Throughput Performance Tests and Statistical Monitoring' + URL: 'https://www.broadband-forum.org/technical/download/TR-143.pdf' + publisher: 'Broadband Forum' + - issued: + year: 2018 + call-number: 'TR-181 Issue 2 Amendment 12' + id: 'TR-181i2' + title: 'Device Data Model for TR-069' + URL: 'https://www.broadband-forum.org/technical/download/TR-181_Issue-2.pdf' + publisher: 'Broadband Forum' + - issued: + year: 2018 + call-number: 'TR-369' + id: 'TR-369' + title: 'User Services Platform' + URL: 'https://www.broadband-forum.org/technical/download/TR-369.pdf' + - id: OUI + title: 'Organizationally Unique Identifiers (OUIs)' + URL: 'https://standards.ieee.org/faqs/OUI.html' + publisher: IEEE + - issued: + year: 2000 + publisher: W3C + id: SOAP + title: 'Simple Object Access Protocol (SOAP) 1.1' + URL: 'https://www.w3.org/TR/2000/NOTE-SOAP-20000508' + - issued: + year: 2008 + publisher: W3C + id: XML + title: 'Extensible Markup Language (XML) 1.0 (Fourth Edition)' + URL: 'https://www.w3.org/TR/REC-xml' + - issued: + year: 2004 + publisher: W3C + id: 'XML-Schema-Primer' + title: 'XML Schema Part 0: Primer Second Edition' + URL: 'https://www.w3.org/TR/xmlschema-0' + - issued: + year: 2004 + publisher: W3C + id: 'XML-Schema-Datatypes' + title: 'XML Schema Part 2: Datatypes Second Edition' + URL: 'https://www.w3.org/TR/xmlschema-2' +subfigLabels: 'alpha a' +eqnPrefixTemplate: '\[p\] \[i\]' +figLabels: arabic +ccsDelim: ', ' +permalinkicon-width: '0.8em' +titleDelim: ':' +figPrefix: + - Figure + - Figures +title-prefix: BBF +title: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents' +theme-color: '#157878' +tableTitle: Table +tblPrefix: + - Table + - Tables +rangeDelim: '-' +lofTitle: '

List of Figures

' +autoEqnLabels: false +tagline: 'How to use the data model schema' +bbfVersion: '1 Amendment 10' +eqLabels: arabic +tblPrefixTemplate: '\[p\] \[i\]' +tableTemplate: '\[tableTitle\] \[i\]\[titleDelim\] \[t\]' +tableEqns: false +figureTitle: Figure +permalinkicon-url: 'permalink.png' +subtitle: 'Issue: 1 Amendment 10 ' +permalinkicon: '' +lstPrefixTemplate: '\[p\] \[i\]' +refDelim: ', ' +bbfWADs: + - 'Jason Walls, QA Cafe' + - 'John Blackford, CommScope' +subfigureTemplate: '\[figureTitle\] \[i\]\[titleDelim\] \[t\]. \[ccs\]' +description: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents: How to use the data model schema' +buttons: + - label: CWMP + url: 'https://www.broadband-forum.org/technical/download/TR-069.pdf' + - label: 'CWMP Data Models' + url: 'https://cwmp-data-models.broadband-forum.org' + - label: USP + url: 'https://usp.technology' + - label: 'USP Data Models' + url: 'https://usp-data-models.broadband-forum.org' + - label: HTML + url: 'index.htm' + - label: PDF + url: 'index.pdf' +listingTitle: Listing +ccsTemplate: '\[i\]\[ccsLabelSep\]\[t\]' +nameInLink: true +tocTitle: '

Table of Contents

' +lotTitle: '

List of Tables

' +tblLabels: arabic +sectionsDepth: '-1' +secPrefixTemplate: '\[p\] \[i\]' +bbfStatus: '' +lstPrefix: + - 'lst.' + - 'lsts.' +lstLabels: arabic +secLabels: arabic +secHeaderDelim: ' ' +copydate: 2020 +reponame: '' +figPrefixTemplate: '\[p\] \[i\]' +shortname: 'TR-106' +secPrefix: + - Section + - Sections +toc-depth: 3 +ccsLabelSep: ' — ' +pairDelim: ' and ' +numberSections: true +subfigureChildTemplate: '\[i\]' +author: [] +build: '' +project: 'Data Model Template for CWMP Endpoints and USP Agents' +analyticstag: '' +bbfContrib: '' +bbfCertProgram: '<BBF.NNN>' +status: '' +ignore: true +listings: false +subfigureRefIndexTemplate: '\[i\]\[suf\] (\[s\])' +chapters: false +bbfWADsSpec: + title: '

Broadband User Services Work Area Director(s)

' +bbfProjectStream: '' +bbfTitle: 'Data Model Template for CWMP Endpoints and USP Agents' +bbfEditorsSpec: + optional: true + before: '

Editors

' +bbfIssue: Issue +crossrefYaml: 'pandoc-crossref.yaml' +eqnPrefix: + - 'eq.' + - 'eqns.' +lastDelim: ', ' +bbfMonth: November +chaptersDepth: 1 diff --git a/docs/98-index-navigation.htmf b/docs/98-index-navigation.htmf new file mode 100644 index 0000000..d841264 --- /dev/null +++ b/docs/98-index-navigation.htmf @@ -0,0 +1,15 @@ + + diff --git a/docs/98-index-navigation.html b/docs/98-index-navigation.html new file mode 100644 index 0000000..c5f895d --- /dev/null +++ b/docs/98-index-navigation.html @@ -0,0 +1,209 @@ + + + + + + + + + + BBF – Navigation + + + + + + + + + + + +
+ + + + +
+

Navigation

+
+

Cover Page | Executive Summary | 1 Introduction | 2 Architecture | 3 Object Definitions | 4 Normative References | Annex A: CWMP Data Model Definition XML Schema | Annex B: CWMP Device Type XML Schema | Annex C: Requirements for BBF Standard Data Models | Appendix I: HTML Data Model Reports

+
+ +
+ + diff --git a/docs/98-index-navigation.yaml b/docs/98-index-navigation.yaml new file mode 100644 index 0000000..7d0da9b --- /dev/null +++ b/docs/98-index-navigation.yaml @@ -0,0 +1,6 @@ +doctitle: Navigation +date: '' +subtitle: '' +title: Navigation +author: [] +titleid: navigation diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..78c4665 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +data-model-template.broadband-forum.org diff --git a/docs/bbf.css b/docs/bbf.css new file mode 100644 index 0000000..ea19b7f --- /dev/null +++ b/docs/bbf.css @@ -0,0 +1,355 @@ +/* + * I add this to html files generated with pandoc. + * BBF: originally from https://gist.github.com/killercup/5917178 + * BBF: some ideas from https://www.the-art-of-web.com/css/format-dl + * BBF: edits are noted + */ + +html { + font-size: 100%; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + color: #444; + /* font-family: Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif; */ + font-family: Arial, Helvetica, Liberation, sans-serif; + font-size: 12px; + line-height: 1.7; + padding: 1em; + margin: auto; + max-width: 80em; /* BBF: was 42em; */ + background: #fefefe; +} + +a { + color: #0645ad; + text-decoration: none; +} + +a:visited { + color: #0b0080; +} + +a:hover { + color: #06e; +} + +a:active { + color: #faa700; +} + +a:focus { + outline: thin dotted; +} + +*::-moz-selection { + background: rgba(255, 255, 0, 0.3); + color: #000; +} + +*::selection { + background: rgba(255, 255, 0, 0.3); + color: #000; +} + +a::-moz-selection { + background: rgba(255, 255, 0, 0.3); + color: #0645ad; +} + +a::selection { + background: rgba(255, 255, 0, 0.3); + color: #0645ad; +} + +p { + margin: 1em 0; +} + +img { + max-width: 100%; +} + +h1, h2, h3, h4, h5, h6 { + color: #111; + line-height: 125%; + margin-top: 2em; + font-weight: normal; +} + +h4, h5, h6 { + font-weight: bold; +} + +h1 { + font-size: 2.5em; +} + +h2 { + font-size: 2em; +} + +h3 { + font-size: 1.5em; +} + +h4 { + font-size: 1.2em; +} + +h5 { + font-size: 1em; +} + +h6 { + font-size: 0.9em; +} + +blockquote { + color: #666666; + margin: 0; + padding-left: 3em; + border-left: 0.5em #EEE solid; +} + +hr { + display: block; + height: 2px; + border: 0; + border-top: 1px solid #aaa; + border-bottom: 1px solid #eee; + margin: 1em 0; + padding: 0; +} + +pre, code, kbd, samp { + color: #000; + /* font-family: monospace, monospace; */ + font-family: 'Courier New', Courier, 'Liberation Mono', monospace; + /* BBF: I think the underscore is just to comment out the following? */ + _font-family: 'courier new', monospace; + font-size: 0.98em; +} + +pre { + white-space: pre; + /* BBF: commented this out (it overrides the above) + white-space: pre-wrap; */ + word-wrap: break-word; +} + +b, strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +ins { + background: #ff9; + color: #000; + text-decoration: none; +} + +mark { + background: #ff0; + color: #000; + font-style: italic; + font-weight: bold; +} + +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +ul, ol { + margin: 1em 0; + padding: 0 0 0 2em; +} + +li p:last-child { + margin-bottom: 0; +} + +ul ul, ol ol { + margin: .3em 0; +} + +dl { + border: 3px double #ccc; /* BBF: added */ + margin-bottom: 1em; +} + +dt { + float: left; /* BBF: added */ + clear: left; /* BBF: added */ + width: 10%; /* BBF: added */ + font-weight: bold; + margin-bottom: .8em; +} + +/* BBF: TBD work out how to handle multi-paragraph dd elements */ +dd { + margin: 0 0 .8em 2em; +} + +dd:last-child { + margin-bottom: 0; +} + +img { + border: 0; + -ms-interpolation-mode: bicubic; + vertical-align: middle; +} + +figure { + display: block; + text-align: center; + margin: 1em 0; +} + +figure img { + border: none; + margin: 0 auto; +} + +figcaption { + font-size: 0.8em; + font-style: italic; + margin: 0 0 .8em; +} + +table { + margin-bottom: 2em; + border-bottom: 1px solid #ddd; + border-right: 1px solid #ddd; + border-spacing: 0; + border-collapse: collapse; +} + +table th { + padding: .2em 1em; + background-color: #eee; + border-top: 1px solid #ddd; + border-left: 1px solid #ddd; +} + +table td { + padding: .2em 1em; + border-top: 1px solid #ddd; + border-left: 1px solid #ddd; + vertical-align: top; +} + +.author { + font-size: 1.2em; + text-align: center; +} + +/* BBF: added this */ +.display-none { + display: none; +} + +@media only screen and (min-width: 480px) { + body { + font-size: 14px; + } +} +@media only screen and (min-width: 768px) { + body { + font-size: 16px; + } +} +@media print { + * { + /* BBF: this hid the pencil icon in notes + background: transparent !important; */ + color: black !important; + filter: none !important; + -ms-filter: none !important; + } + + body { + font-size: 12pt; + max-width: 100%; + } + + a, a:visited { + text-decoration: underline; + } + + hr { + height: 1px; + border: 0; + border-bottom: 1px solid black; + } + + + /* BBF: this isn't desirable + a[href]:after { + content: " (" attr(href) ")"; + } + */ + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { + content: ""; + } + + pre, blockquote { + /* BBF: this doesn't look nice + border: 1px solid #999; */ + padding-right: 1em; + page-break-inside: avoid; + } + + tr, img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + @page :left { + margin: 15mm 20mm 15mm 10mm; + } + + @page :right { + margin: 15mm 10mm 15mm 20mm; + } + + p, h2, h3 { + orphans: 3; + widows: 3; + } + + h2, h3 { + page-break-after: avoid; + } + + /* BBF: added this */ + .annex1, .appendix1, .new-page { + page-break-before: always; + } +} diff --git a/docs/bbflogo-bw.png b/docs/bbflogo-bw.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2afe9b61fa670d8101ddda882ae734a26684ef GIT binary patch literal 19281 zcmY&fby!r-*I#-mVI?F)Qb0gJkZxE&R7$#g0qO3LTv7oAmJnSKbU~0-Iut~fmTu|p zuHSs$|K5j(*t>AKGjryg^NESm(oiKQVIYA(AmnOK;4dH$9CPrq7L*Wt)z)X40pIZL z71R|Vkn-20msSMeHH*!Y7wQm5ASVP89tDA%gG=G75QvW;1hQ@kfka?Z7 z8-&)+RN;`D|2{r67NvnJ#O_awydV%#s{cN5AXzzd;3AQ?nz}O4KRhBTdZuEv_|Fi? zQ+YMGg0BC>mYH9$t=`ei`;(bNjx?<83sE~AKe6#Fv-H9j1%6tg)XMUEL~NJT-#$E{ zN=e2YEI>xYbCV2erxy;^jK1wb3|(*ts}(k%^zOVy5ew*~s*O*7KDY`_7Zl!^4%+^4 zk{dMpMV`U2AVuZ>f9bd;5@vR|y}UK1v(ytNOmUOlf_?kX=Sz*>huF6r)S26+8b9PS z>EQ)e4RkHHA(D`rF5U?Zo*NTs;BgE z1UT+I@%yD5YFKP6o?-Z@h!Ug$BFl#Uh$r*@aUr4b3Pk)?cPO7_t9$k@pb?N_5mJ?W*eiL6%(TqdWW}BBloZG6 za&O12->F&mEjZBzg>~;y6bJs&0%YXmD^7lLh?rm23a+JBFt+pMSIg=Q7ev@iM<*vS zCyIyi{$?~Z569%;v6Lx)uw_Tb$GOx{e9pV>NT{fZM&2)Li3FsqbpL{y%}c=p;VV3`TGTZwmKY00lruy5?%I86(9FiwyKIs^7{I^N?4d2?kjoI`~w^; znF8gU`y!i^6l2iI_OIfyhM2I18wxTqGI_2wdBvx0;Sfk}K|9UONl!l*!Iy18Y3WUp z?Xhy3w!#7oPkem*n{1~HipQ@9$I76t({;mq@&BR(?yD(USt&d@2yy6pFGI(`khN<{ z91*_Mok8@FwmWR!WGRfn-`1AQq}DZ>BZS8oMIR6l@Vnb9F)xY>YM#_j5Y7x{$82(9 z0kX$7V;so z|L$xe>ei|^+eFBLy-8wAdOY~V#&lOD(NS)^#w9ycHi!?-`jqYE%a`9A7dTBX8kyT1 z9^Z3FEljd)3cHwa^QzhEoM~>pd`_X;eDLW8PyHEM_7*lh9;yK~5N%HbYh4k3JEutdd(* zubvILl7D%A=fv+OZI^963&m@E`>O$>(BaJ!tntLG%^fN;sZpYYE`OP!YYugG)#Jm% zv6Y~=&;P!u0gpQ6vm&z_*my8=S`>}AZGb0E-(n2;5s!wZ?ASpXAtQLFyf6`!raax2 zN5U|e=CGJ>2JR_CcqGmkDj-3l=t2~7Lwz`bbC+~Z5b_REL8F|KDFJCAx4aX6g3|!| zWW$riMc@5B7_`BL*=z? zHCnJXkYmUxS9mjJil$c>kC)(*$RitzSG&TMB=RX3%x&QdoGRQ?7R5*}{tl+IV7fLO z7%$Eu27`IMTSwZW0@*-13_V}giTAcV32gK+FLUE`*%WgicN8-Z6P7=%y;ljYarEaD)C zX(Ui*VQ~&Vf^-c{pFZ8sFDtVc+&D67?Ky=y>^T&C2NbT9xwUVTi z6hYC@7e>YdE$`=qk@xhSj@6>02@He}Si&cfs{=pGg9NdMH0Fsm zbqWd<@Z8*d#^Bl0cxJ?MEb6QizW5s3Y7QAEt|Nw=62cmPW9@PMsl!=Yeb_^ro3Rd$ z_3`|FFYMi$7$3KCmyG2o8F{&H_KLaYylcjb>g5VY2EVO$jb8FAR#4{tMuPPhke1EKZcpf7@azBbC`^N zHOaW&O@i(ri3nFtp#Adh9gW}N$w}Evg?`bbC!?d0gF049E*y1H6QPp?sjGKv|}?=oH?QeRx`bjhiwH}5X) z-ml=q*LD6HIu(r#z5y{yudZG{FgYo;o$=+9Lb_dIQb0j(uSS={}!Q+srB64unzbkD}-eUxm|yu>atH`fepUM8lmuRo=0Y8w1NIE;Kg&B#GW zpaBw-#onvZSJ3)b^BaaCZ?;WclDv6VG|e86poz1dvi7T zOu*hL1e6aE5s~XZe@H?Wd9U8fJRCVc56rJ|QP%eO7uWerC4aBjylkg6CMHnF&CR0C zXU_Z9z}yF&*}qjL7Dh%M0gjGq%Gh8KH8hnqscb^qeHhI7#>~vjpN@`cIz~qI4kyq0 z={lJpV{hO3t2bF$_it>Mr689NhvSk+%yqaqCeaj&!I9i?h7ArdQJ1MG#u@>RqQ6Kod%-e0X$ZV`)j* zo&K;3pHnuC=or z*jiYMy$~xkDss5hayRbyIJs_l8SxpD^&$_O7!yNCMs|2-bY!H7L86PKycK@{s`C)N z@KoNQqrZPQZL-ECvU5T0sp?xoJw0uU+3@%8?;Y$fb>H-2M<$hYu?k&=2ch(Wz+ zX*MGxWAyd4!jsg@!SA^mT(XzD?0iNQr$qPf-!CeXtku5t1dH*IUH7BNWK9YuORziM zVv$w@*)G{-vPLO=$?=OSzCt()bgVH*%y)C_$HdCPRSJqigF`y4b>-mWmoLPvmXuw# zMJlVIL6(+t6xm{KU5>6Z!ZSDCEb(l(uOKz9(=mmGg#uBEA6GJe_>#PG!`tm{3_3Ay zv}#vLOia|^g>pV!INp-#9~|75gIv2YNXo|ddmi=o_g8{Oh}YG{C3|EnU$HSipGwMi z(-6b`rzE$FM!Ed&sFKx%b2UepGR(D>F>w6*@ZHt8IW#%FldzZas;Zq28O2<0x3wC)_|rg(kAuNjcP5)TynKmKKWq9u8_t5v zKTx;8aFghln#M6r`Xw?B9%pn$%g;AZR4RMpY>k!UrRAO$RwUns{TJsU7s(`gdU^KC z1Ye*QdU^xH!%6d220Ro4pF%=H{6HhABPS%3x^JziA^@qXsj=!z&UHeafjzkVbMWq& zGp_r__H@q*$afn4JWqdC+FsRERY7HBWF+8^mmrT{DP`16Z`ap2kH7T&5o7Nx1v)-F zyvVUC$Agkh3T$F>vWB;hPmg~OX#~V5{l5^JuFn?0b-!6%rE^@7XAd9Yj^F>g+>=cT z<`W@(62a24b+5I?Ws($a4iR>-?@VUeJu7sRzJnjZ7u!EJ_Sx&ll-RS>?;Ndm+J&+c zGc(u2AlcwYw$k?)`R7x8^K)a&%JwVzS??f_PZ-%0B&!^(OztS8K}@oWuvM`#cGobcfGAa^xub=BSXb#tbI-< znjTDr|G^R^B_>KYc&+e15Y^G&Y}9_Idw8R#m-}`Z?2OH^axY?7W9cV}ig75UcWZsU zuA#cxXE2H5X)Ry3ARU<&H9^|NhVj2lBcz za(jDQ(MX@)8j)L*`x_B-G&eV=T<<%qq?cA~*=D29H70+%M+!FQ`?}!qj<%Xq&bxQj zqn7>5+ed-+*v~)Of&~juJqTTW{mrx*0tI<1tB-Z=R$l~odAspG;LJ}IFMZVd{5e0r zy? zncx&&NlHqRnHa3_n?k04cVmD0^l1bE0f9nVR{`!Sjus^uVbu1vxss}C?99edvfSN! zukD|jJN)IXb(^RfXCR4Am3D2JVM~sZijU+t&OA2_`mJ_{SrP`}Zmr`NML(AUqM zotkQB`1&=st?uv#One~C&dLf0Q+!8+f$ZD>NBS9@@$qOT_4U2gh!(^As<`k+*m!f|I&&^k$O`CfEGLMi4Re!Y1p zEYRKCduiSd zhuPZNzE_4Ds6@LaHo3e(ZVzl6bqbi&YzolOEIp~pk5OdZoSrm}{$_LY)~3Svt6`n@ z+P%ouT{*aSqsl5jlrZw99?%(49ekDJQ8c{iul03xr%2|Wum#Gqdn>@7!*^fG*)iU88D8p2gk6#Kc7LqmyWMdGML1ML@vW5kyuK{u&-#+Hv(I z1Nk1}{sLUA=GEuZNmNmKN`WJ6AFcRtsIETfc~_K%j}MK0iQyi4z(G0=S(-p%rhd}{ z_a+L@2N-eNsIE%X_Ax`@rWB2!u(u==nBhdb?sOSf!BtIm^o~QcYZRdXOhyxK&u92; zF1y%ZRHCx7lIndhSjxFQ|56;wdH1TtM^{&PG_n>A6wQ3R+&sqN!^IoxV0k6rhr>@k zK%HD}!>b~ZrH|;yipmVjFPEZ8@ARVjd$8D_gP*FU)H#R7;oefPqnGC{tY{}8VPOIA zRK7ng1v#`XC}Uz`K48}O7@9_YOqb?^UH$-;E17%iS;h!qcX#&=t~(j*N{Gi>BqR(D zH^_QkI0VLe9jL5)c8Kp*WyAKe$`C7%o{_Ql%AHs0P0ZtmDk>`OXEYgrRRIAh;Uvb( zOA7AgI=@Gp{P5n~_jwLG^a(rWVb};Y+ZA*#Y7C{g# znB6l98{m2r(@<7hQJV322HVq=zt&7|*aouNV7^13Q6yX{qo-$8 zJ6Z0(_s=(1!;b;h$Ru@*FFkf2+GYpt>^AOPWAr)?simbgCzjnq;UJbx$B2Vm{Z&#@ zl1D>J%Sm>^#Kc4(Ts9aS^4#9uPmN6$~eB9osdvC+@^f%SMUrcv@N5!xOmq1 zo29~^HZg`mhO1x~J3BjjfEGd@Zh3tmchttm#mVviM=XByH?2J6;uiAX6dfbrwLqtR z8Np(z1m9{|)DK9Sw@F0y{ujUV)v|dM03hFzpSQhYBqPl1S>}Y8RE5CZoed0Xsk_|} z9T5bi;@~;%v(?F+n^lZ@^x%#2$NzKe&JfV_|Jt_#QmE|Rd1$?Wudna@oQ<3uXKET6 z8N4~Mv?HcTxo~?I(a8hA9(*a8r?IigH+m({;=1WuPY$x{13W z&z?RV8Q(fK+6elp&r8eCcf}Z9uSOLoGJF@}&&9>H(gDzYR0Kee6c~&-q=k;8E0*&` zWfYzp#!`^3mkTY!z?$KGi!CgOL#-jd#Mx@cInPRg@=eBy1D>G5s?){a)8b|n3I$6H zabjmXy~2TT$5o}!L-9wF6BB<{7jg4|5-{g3ZqACHL~~u(_Lsz2K`e}#g2xRp43T>U z6tF@_bbC8q!7 za)D9N&{aTdM4Pz6Z8F07gELw@_va(&9Bbf-jd94Fn(dc=@sGNPqN%uqZ3fWmk04?y za+);qAAgjZ7Y)g18yhned4d!O*f<14l{@~$BT>=x-H!r%e0Sl78K@VlMa!)xYe(lq z&Y~A@U1enRcD&fx^F3UOG4cERLP)f~@?k;lda$y)s*le*KT)SAl+d%YfKWBS8o)z_ z7GEjC1;(5um^jlOY-jx@KEYSk)=x@K?&yIDx6l8M9(N9fwRCjhhu)SPk+_@OgQyJX zSfDtNmq#EF0x%J$&J27!!pM)0QtJ39p}6v)i#9W>tA;LUZZicIT>}H$mZfs(+{9Vf z^&v^b?vQc9oAOJi$MXrGgeOq%fFx@GBk*>SC6^MH1m{ zmW7rGYHDgo%R zbjn8QPQkKnnL1D#%(s9c#MJSS)Q1YmZFbap^N%q~#gCL243EbZxm*NG z{ObB2xBZ3@$7&)#SM+YD7RX2Z^tH* zk>V@(OFi8o>$nAR8{ev-FVkjY<+(IL_{t@L5l;s;vJSW*zbA!qru5Zts3E^QZxvEk z#Qv&bYUPrU&<`kFut%&ONfHWDf;j@=_w+s#dzYkZ1YQ&jyF|FM3? z;8u=5?h&Qao}PNHSp>A4ggXLlGII5d{28QMUzxm0myvaNteXeo`4>2+aoikgsr)H# zboE5MVix1DFWcU|e4G{jEo`qU;P!Y63dul5*xp)xT|OU9^oKM$f>_f;C0`pyu#_~f zHRtp&@M@Qug7uM?E8DD@+Tg1vtIEOYwQoD_DHOL_=4{Qgh*RBjDD`{#0!?LUxT6L? zi`&lNAWr2tV%ap2)e-lRyec76j$jcA|H4$k-jK@Cl@>8K>=c9^`Q&`QdSd&Q zzS7I#aa5;lvB;-v0*dfVv57qeVI^t;2=sn^3Uq$=8!B@7H}m6R6}m4jZ{Io_rc`JB zsY8*CcLhgQKjHSb$$6uPI93VP5VJ|QT(&qoJ~nRxe2a%@1izTr9Yh+vWUlK(gn{1h zUfOmOb)B|(a&mIZ{BJW-%XV)~fs`Se0B-81-=A%GO9F-rwXRC7O}#+tbgK6k5Ay64 zeV(K;!kmtghn(fSe`jEWoCZ1G(q8na8TuiR*16Wdai-zHNc209ZxMi70XWTEPAhmx?xd=g(hA{6wZfDQk=F61V$HR|mo zOPz8U`NLM`=Nv{vP|)U*$NiKq-un3mI_23#1KiUgK3w^im!UUr?|fR^dBpg!fcTc6 z&_Q2)eSO(fLqIXN+Mxf{8S0Xq?X$3d(h$R-DgUS}O`ZJMlfhXz2xLVwBSU-ULHv32 z$B*+-BR9xf)iyDUKG{9X18^>lA}=UJBkMsA)|3j0UtxX6%J7|K1b6(75#O>F+FfL?~v zHcVUCgNNunJ_}CBC*H8JD$m53>!VG$U%I8mjo&=$hVw16-7XX%6xE*7%R2pPS1SwG zJXgcBgJB;36`*G$k-d0`hGnM^**x}?Rw3Gpzef60chn)SJAl)8xzcMUEKBgyx~}IZ z!=R*;{rj^Ab_@^hN(f6z)}^=8kiSU6F!W7*!u+uVpw@$;+`KHd)p8Y{m_7EmKPSzG zQG>%@RaNzo^d<(eO!eZEM9lRDkQk^iDtxrUaP7-yDk?EtDKuHAf$3>8g1IQiWBN~C zUps~MX*Tj0m15CDYoaE6%iqfhA{E4QBj?;@M^Vu0ZlHfuAker8ih6ovw{A&7?lS9V zXa?o#*H5#ncB&LS5(aw&KzAwR>JAFE7xQ5^iz#Myr}_4f)`OQL&YZ%`a^kCRmp{%i z2{9xE9iGQA5U{oVMl!nA)_c}DnG1JJ9&b-eeciP6O3utbUjPF$01|^7d&s6KU}!(o z)sdWBZn}OhK?B04`HYkb=DURv!~OmaRaxjckT5@u_w}nwKpfi{86jTDNXbJeS0ako z%nVWaMTDLGI_U)^{IRI$D$eB_l(3Em?_X(u3pyqyna0{$F^ydYvcSxqbR38jPOwAm z&(BFybLZ_L16fR%Edp^L%UkZZV}5#dePgq% zR48#QWR%`KJ~)WZc7e3^_fzI*tlWo=NJDkRCOf^&GLdJTa>@7I-=N?;kn}hEP&ca&U9Ikq*zk-7ihw zXTGtz%B`7x$Vr$4TFQrU5oESTt$=&=~=Xkv6oL{l=$___4+YsP~Kj_2x>=pIiVv%!`{- zP6>U@9%k@5F>z`N&|lfD*=@2!uxLoIL*+Pb*UX{s)FaX_>=5Op3Cw_lH5V|)4JVm#zz+e^uqj{>e8HJlXX;z3ub7m4nx z1?D1g;fJQ?=I`ZUY30H?WNK!5I;3ml>!iJ2m!&9@VX(A$UiISF z8``B;|TCYGPIE_yZzmU5%*OKV_@U;Lxd|n zrLJDJI3@Hh02F=OJ3F=2Rh#O8JiR?V${HHI&D@;xz21&Vy9+S@Ki-_DX^wQ7v3CoB zkN`RVqWbdkG7XRh`PhbA^TAb#yX}Sml<+fv4DqGB{DIY?g>J2(xp@t&C1GGEZnbl1 z$*y*ER7{b2VP_mnoq>Mxdt+VQzb_v%?7TjdL2ABsNY>)^24;(9kgbNtMn;l#sm^u2 zLlzGJzU#Zk!0;!@2lKkgGwgDY>sJEp!}FqF)&V1yf|svQ^_0EcJP>!lw+jc$&f0Bl zZCR_Ta*;*|+9y1xRt9t1vU4H<@VeZi>>dGtyl1_>N4UM6Bh%BP0JUhAfsW1)Y%f8L zuucE{15(R!!+R=YVt26(Gp@C6f3R3X8A(Z6zYsyXpK{lGnn2IIlm-wIbc2`NvAi29 zpAv7$zZ>1SNFCjf`1}HTB;X zqVh}u5lS_G**PF$u??o}*k77UL{zkG>mDkd)u$KVEiwGm%HDoO5AbkAn+1$|0&sH2 z3pQ~!S`5arHA3-iI{#+5aplZ$V!-CHwmo!pEDAsD8J@ zte6-TU>2ZW1UyPkiq#Jz%Ac$dlFBRqagzp;9;S4gJVx3AM8O*F8h08SiDZGcSq5iwaC&#TC@xE-7u>*1n5&d0}BO)moe|_zKV{Ll^z4#L^ ztRZ?I`q(^EH{TORq#x0!{tJ0^1xrbX-imEEH8lLLom!B0i=2Gg>q2wqv;WOi zSfT+IA+ptbcn?47c7N6wz+Wy;%-WQzKtI6fOv2% zJD~F3zjr-6zRjWbhXqZBh~ewDTqdRoM}dAiDmC@?W3gKJReBLY{s0mPSBHmD&$?AR zM`mYVUtfnJ(GF~EI^GT17hSfBWp#Cb0FfG|0iS-f5Y|vqvRN{3HL49XVvoa^6MC2qt*>1M&TbnnG^?cJL|B^LD>k;j!^7IXzQ;_|8rL!#!8BRXV~&D!{N{C4H3D2* zQdad7%ADOownq2l<~5Wn+vmT>BDY5dOXxQe2nfzjGBPqW6<3OA+}f*07WeqH%C9z# z0s)P|o>HrlT3(N@Aa1qvho-ebT6J*q#Xu+<4&g!@|1pk^9*vKWk01)0>A0K0{S?5e zN4J;$-bZ^_G4|vMjo>okVm0^osTCJiT1fM%)tghjX2; zX_OVLtXP4N@kZKnuSG$4n;c}DOYmEYWutvBdsH>+cnwOYPRz-(`mF^Iwm_AbyU29bez-Vxpov-Vpxv*-_WQAe2nKsOdRn0JAs9w zJNB;Ulh|q3JfBIzNStE*uW$v0>%O>EfU}bi8Az_EOgk4bprTO(iZCQ5Ajn*%q#qfV?%jvA*sv>c|JQ zhg))&-`)&3I6t$Su;=p^iFurYDr3HT_j2a^XoKQ&|8ySAk=TELj0IR0cG`%xgCMle zg0-Q_+CY_S?+T$)6E1PA{7z3sxVW-1{~>b3Tfk83R0%Sw^?gd?g{+`g1fS~zB9{^> z{Q19;6y_J#|9&MX0)=jYt3)@L0f?jKWvU7aIJYDn)Pn#sT#Mv>(4*aI|Cm9SO|lHc ze4L1rem&svJ2ee-&ZJdmd7NwRmYAD~X_=aO^M=>A!)&ErQFLjDq?GUc-8fP$H8-nm zYG@z>8EVNRHYt{t&!px#zkt9EP54Is!6QAD#<8XWR7a?zskan7@4>zJ>$_IN?mEz^+y$oh7{cT z^9u^-Y;5iUSg<#0!WJ>$5cSLY)$q&c;jG~;ckyf7xmx()BSFXe&}SYVYEv7zt(M`y zDr9}zDXoKo7G9Nv(&Xpmy)Xtr6pe?6MKUrQ{ zYJ|=avrUN8_YBlLcGH}-Ty8e{I?@fWKys4!KKuH6>Pa^h6+&lG#!X)-5|aHJp7?+4 z@Iy{vi`;CdJ5}cst49$mbW{VBXZ6vjKCnOc#O~heR0gtuVv!f6>j~6a81+c_Fi@sM zpV!k1Jp5g9P=YLE+nL zX|Y5NNkpZj{0w=TieEfTQa^nwmc4coQ3?2S1(KDj>YvGZ?T#;!PIZr;0Ew$(aBwiQ z=2c0_bJ!QIudHgf$w6!Y-tmzQl{}od+s1KZnhM+SwX}3QyRk83MLbtShvT33R19U~ zJ;-xTDo;;OKySav$f)hL?4MPFy8*w%hiTUY9cB1m^M!z?MGteW$sHpjBWHnKA)5}0 zHM1MmwX7WPpBzfan+arm`s~?m<;8Y%_fnQ{ZYc{CNH3oHx^FG$%)aaFD&z0YsBz`& zqgq>AiJQM*;@MwI-X6VLC6WS~>keK&2@5;uSphFGg5eRs5numRMiTMOB(>lx$aCtD zNyuNSl$-*KE%bNL1RGO&HQZ-YNd1Xmn;%BXx?##4CQTuh@A_7xWT;7UA9Q;*jcz0q zEZQQ`_?6?JgM?^P&sH1qg>j<8;12KgjoULrw;&_uSJ%S8EazCkC(wV)t0rk{Yxn`Q zeB^}f7J#eE!*OO|Gg!P{s^DY(%8h}_vqbzRgW|?X=9a!knm_*=7G*Ke_YRVLmyuD* zB7Ldv;wqGt653o&M-~WVXSyVnku~ofW4?5ISZPzenCFhQvUU?ocf63tDt@E+Xp(!i zHDdWc1JO%8yAg9$IFPF9k*n{X1T8^sodn93E__%L49t{=|10F2$m-QJQtnt=|M;L3% zWj6v`1smsDH1{7gcasX79NPfbew#+494CcO648>%@s$hhr}M#}6U+6xq9F%mqj$Gp zbVCMyXi2isOJ*6(*IjfL+#~?r`?+z%Mn}d*{lZcx>Gk;6(G3e>z-i;2zCjYQpD;h{ z-nWWJ|DjsZdE+g)Cc}1a;7{`$kC@DH*1S1Xh6$Ng+JjIE3L-KO+$%dhyOPWH%H1Zz z-)YO0@@on`vorYnv!j#f5~tyMxp)Ts58X#OK-(h|808lVqgqkKVWHBN_j17jZs75h zjT6Y&v-v>H0Vhr!9%13)H2R&#cV6DHW(^;P8vO7lh3M*;QNw;qLNpX8k5zOZCc6K^ z6{*R!-O^MhYU8>`ET4|SJYzpxg&ZcJzcX3onM?32vY*i47!tO`xJQ{%MJL3n1pL%y zNE`Txy%j~E>1gX}3c-y>Kf!)xQ_N$5Zo#XF!kOjeClPS>`+7@&AG-g7#y~!G@TGY*Yn*k|&p2r~UN<3ek@d>kD@jLK$a$*7`=(z*`C+aku8C(UuQGJpoI9ACmcai0wu0XB^vOgo>C_s;26lgY&7WOuFe zOnlvNv6ilGRVtDsqV>Zol-c~xLO9D?nD!@)q752+E2_fZpBU+Fl)0&mG2Bn5l(^#2 zn4vY_7vIkn-=HW?F0S+ib;He|&2gz5YP@VkZM2Be0|4vvZI^OnfD@vpr^o%r6v)M& zOEBT18(XyadkPRu1sx3)rTky?M zzXs(AB+`PPMbr~Gh&SIuQ$4z|e6b;)2BeZiU!YmumPjaR@O}|5I++Q&NmXSI z#LupERu-gdv3V^Qe|Z@!2Wvdte44sy>xORpJFaDdWBus!xwX#xr{Wh2q1TB+VeX+ zijMv?!fj|~Ry{{*A2wgZE_?E$n3spQsT14xQkV5UXxXzmItq(t%uhtkgN{V1s;ghu z-%er-%hay4^*Gw&x*OL0sPnFuSAg<36ZR7F$uQBAUr>+vA|eKFU?sSv>F(&;2)`!! zLBLn)>(jn`nQrOsF8H69So{qYGZa6ftofR-^k#tk8^Xvc@c}8U7<9)IK~soD*vfWoW+G+VMDC zc`ZAiD6Ap3{5wC{KL_Q;hJFRdWu+rKzd8SBvA42v6XBrFkLa+9Wsc8JmR-M`y*#Hs zuxSpy8;@p@nk0GMNp+;m**q&3xWeRzYA|P(4NBp1kW*d%%Y7 z%|*i<+;&>nDdgf;ZVv6|pIOM>)Oq#Ethght31K4J0`u7&&2pSH4RK_^<+wey6H~=a ztqdBvIABRp1Z8>|puO5S2VafYN_?0?*$}I+Ft5g{3haRnIRwfOA;^%l@bND^YUaK9 zgJzbSWS@F)s>Qv|-Uz1beWT;+tB7z(Fr(k2iD9dEX}$Tc!)6dmv&sxh^-wX3C4J4RRA zQag&2_|KQR>6dCJw>kuvL&(&V)K#Z_`f|g7?>X;2dcJB`ot@@+z`tRJK~a|pI401N zHXRcay**LwWF<(KOd$9?s(9sd=@3pNnmbT|a@&8KBCKJ3KK35#>rUYX3;~+M+S!>* z^Jdu*`2R;MI;p^`Xi^f*tJU_`yWoK}q{i+~%+B5%(}sF>f2|gq^1tea$Y#^lITl2Gi8qTt zg#`omht+H|AHX79z%OTmTn#~()7;{a*_DtpI+*S15WF_<`oaRe(|kR_Xdrhu*Z$<~ z(?@|6;E)wQGzI@|JSIHNIRef7?^AOVz8ZCc>yM*OH{pXn$Q0Wb^OHkEk??o?aBch^ zC55}>sNr+NmtLF>2jV~57WU>;N2lcj8*f=hT;8Vc3i?3ar~Ws&AZ@pE6n6{W4TwI>{mvuR}<>lRwg4Q)71e`IrN4T4$o5(TXWNW12;Q<49Tg&vt z?a$l-ca*iI1(%cx!!a1(uKkQD1>(RG;Q9J(?#ThmNl7se|4Hw zrq}gW1P}6%4rV+yB>1?&Ga0>~7GBFWT>%)~fc!R@N-8h4jB@2_P!aOjGZ5%-EXq5t z>p=t&%|mDi<)&`?qsO~9yCFyMz*-5WZ(xQS)5dk z`R+Tx^mojH=cggtg_$o_v6mYHA!nCvW1BT5u66Uv1w4^j+)<=W`*x-Wxy2TMeIQ|b zndG?gMMpzs2@SeoB7w8@n~p{to{9+a4KZ;InWML#ATv2`8;_IDqQ!riEsBhQ6wZo=t-)o*_6} zhQWZY?X=ggY>ftg{_=Bwl4GY5oTALQdi@L}bMm1;in_}H+9g91G|bqs@z^A9r;%})Q7y& z0GT`T@1GuaArd^ejBva(VEOpP7$7VlDHTnQl)z}}fPa)xG`q)MC3-tJWY_)`m3hdS zUPwtEpKyK!8rME#zQhkAO?%}k1lMefU^#r6>bt-6~NHGP&4;iM&wE ze6F&%EJ@cgvKCcwk9*boHt-#8s(jbI)NNSr@mX}O9e4iE$jBPJjqJm1@zQ?Ji3f85 zJ@WI_CR#GWM?#WWN$$`921gF%w%9i)0}dX;?*bn&Jir*bK<0S!3Xsd|prG+}7>(P} z+u!t!<3Kc3|LyBAgz26>O+7Sqad8=Ki~dCA`34+eYy28CzZZBbhEv3hk4yzGQDuRW z?Fa3$6utsn!KxM7rnXx2?;V#gd!;}P8jtc=(&(Ed4jZvsDqA2xP}`fE&OaG)QS|X> z%4HOeP|{hfZ4tAoAl-x;99RnyekFpgVzGp8!vMKTV0mokvdo@2E-t#<K#Cqh$CC zBY5JixwX~B0hQu%{@p^C8h$lWaKUuy!sg%Q%PS+6$_$EmZtO7Ya^NhbYH z%w>8T!a}{IM?xo({qQD*DDv?!MJn-3Xr$G$&-+5Ww5}+?ucZQ=twFS)=YHzDu&%Ch zTzUHnrx%VBmXE(v(QFUt{u;|T@5Ez?yY*)GqR;HT<0cUYbpyOgMp)P>Z)X)zNe@Em z1b7KU&*aA5(30w<7KnF%MS1^T7V;T_XxM|kf25hxxe!-xK^gVAB(nnd*V`xG_;eB6 z7#`Lm$x!QxmrafZdwI!GIMitF>z3!W5OesRUZy^hq5_z%l0)x}MZATn0`| zi)L?mvIPo>8HlBYMntd#9^27Aj8tHTe}DVOG{3r_Dr$k}_0!wt0ZV##;Ws#iMXpGw zV8ZBvjML=t7L}q6iXNDA1sTZe1uvX$@Zx4-z=_Tdl}=|!VXqy%ik_2Gb|!6uy2Dd*|oOPgjFn4JQj=fid$V66?@jH(+M7|@nJOo+|EJLMPN zNF$!jbk`R=fB|xEROWm)--EbSS?y5r zik!>~ZubiH1!V2@^+|>0+-#efI5^RMw+okB9uAD3YugyipK`eV{#rOHKjyI;;4+o9 zKT2f}-GT*x=AZ*fv795MtfvQ@nB0(=xIsAsWMX{}qV{Itt&T>_EOX{AuvPjW4Ug{b zKPw9+Z8^f`+$k!37q$P`~-M7bU=@Pa3{e`6&;{5Fbw~ zANOGWfg0OPpc4}V17kDZoUk^7%~>b52FS|e;Pj=VCbe(23d0R~rmn(Mc%RhWWD_8P z0zZc!6>k-q8?dY`;GjbYh$<89qc-QLPs<9S`Bha_K6S%*g%KQapG){oaQ!`Nsx%^Y zEY6djS@rx$B>i6TDbKVrMbMJz$<*3#4x(P}NVB#z>I{c&gR+?hL*ncrk4?@W?;=lA=* z&+~bnNVJShPXcE?uZp-$N6O`~Wqi8wONN`8@QtLBJig6t!w}lRTvXkDnKyJEgtB6@ zgvf`Vd~G|L_5=_?jqKc=NN4A>rseldwLU#&|9PaBt&5H;~yFp>KE3j;X+ z6_vv>wOC+R&_=#A$sXPsqpLqIDmrvEGsBLgBTfUk*We+r6WeEJt{rgcf^bNbN_H6g z46}W4hJ3UfS**P~16)VIztc0}{J+t4@NUZzb8lH9leni9R}v%cezsN*kM}!VUdqdP zm%ug}fIb5V5T`gM=xSB8wxWw%BK`T2a4Q~skkdGRQCBB|LZLoF*@P0kg5lSVBfl7U z#XNRDQmG<^F|Bc=O{7mGZ$6J#Ja@s;LcMF#V~cjQ&jb2Qr@A`q`~wkd$?^dHv|c(5 z=;}GJ(>S+XU0v_NkKu*Zian*Em{K}j4APzaI;BC7(($#tR~gQ#sqtsWf#vB7zQB1< zq#I+4!673MBu?lP#BHOZ9i?!GB1J)KFCu6OYHdu4J$>&8Li{FABb|t9}u^nI@S>Tj9{+bn5Vx ziq^pS!1>GQoY8h^RZ+UGS;~;=a{f;y@^}{t&Z!U=JYH$8*t{H0S_Poi^Woy8@Ll!^^{ zvHdg1KGt(8YW8W^fiPRUMz0$M{hoHu2|BVfSmHcAe(=oA`0d@g(RG1bWNxSg!JPlc zLdlhfq(C*WN&aH=MIMqm>+%$7wujoo12g*9{t{nO%=+)h(rl167H57)UxBf6>4EWS z5sHnll*7n5`V&}b%>V})QLzKB040;yi;JxIHX&ADwE8FgS+ z1dlvUgAk$TFKIbHUqHjLcNu#W0`N?V#w;yx_6Ib8d3jWrK z=8hFF_gBg)n<3tve^n08`t@@ZS%v#;Y`Q6$uys4`^#$e;>vPMz`-e}fR~JmJo8}-ob>A8tm__@iZ5+_!hv1$U4AD0IhN>#T z)KnXUm2y8NMIUfiQIwQNPl^C>@%SKQvgZhQvvxFLUy9ajz z-1Q-OfVkhfg*oQpU?6%Vn?X?qEv9wF@Mhn_UH;;?`5x2o*u|ty<*7(qwUqy?K2KVC zogk`3eBRWwGj)PWP6onlaLN7Vc8}VJ+a*eCur*X63__f-WfBKRWP}p?|tAf)7 ziZLKzGkTO=UHe9TF)=z9C zPiuRff?@6~8*X&n+UobbMycu$j7^oJa8-UIB!uJ9=81{lcWuuH+@&{=X`2J%m%;|)~N76iP3!Ks!wenMfjs@duEUs;;}q637OKFi8b zzW;C|iNR=)i8*?<#mqcL*JL<2UZ$#{dDI-FSaVsjcISJoyJbuyC4N)SUJQr&j!pl7 zoDo~gP9-T3BOqC_#lw3Q6<#{3&E8+#9`wuG8>TBHExO^OYnhnVokI>&`gs4yxZ&Qc z&Q1i!r0@*lrxUmN$CqgG;hb+M2&4))L-yH4PST-Mn=BvTSV7P$e5S6R7p$B8>7@+(tf_CF9WLE zbx{5ONFYdI+*VHI4KzC1$Hbr0L_-GjRO&*UdBnA6hplV9Vtf#}&s5GHkRO9JfeqX0*)q*86(la+<=XkUh7+fU{YiwLOs)VK{LG*F3b#v7Lwd{XdoBs2b zE_{S3s0@~$`NoJ0^-|{}EF2@e+#|dVJj1-003qP1^@s6Jr84c00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;RX*50|S0l zr~&{0YsE=KK~#9!?VWdc6-5_^e=~badLz9ONCQIey(1tU#V+=WqKFNZPsNTD1q*@& z3#cd{9q9;23q245r1#!)%kG@-kDDM0N$*S0ix^PAK~5|Q#-s{ukX`_joR|+?x94S z*Vs1!KxM8VBEm;U9*?n zN(@l`#mc-&Q40aJn&ET?VN;9&IvoQT0LEaDSoNhK4w!yn!-fqTHf%HvS1I&7IR&1o zU?{?Fz=sF#Sd%AbxvPW|)CACfM3FH9h!Ma5gPvjWP6PCnfFv2AK;6{h*|1^5h7B9nSx~ zq1+&2@fHFp4D=tG%-FDD!-kE22dYEq8?fl;Lv}^_obf85`p;}JGcui-Gg6^KPguNJ zKq2;*Ke-JXHf-3i(Tw0d1IEBp>;J1xsc33h8Wmy$NvKh-6Zm4g0ur|EbsIKp*s#%j z;mNsYJGAI<(FOY^^6(-4IGei{ZM_Bn0M?#gs?o_= zcK$A5Gvl)NMY!1e+*YbL4Z0eY1BfU_rM2JL$@Qk?7mNN#7#}rL&lqdePINGJHF^b2 z0uiyf`^Kqb3lF}&EBlTsTNx0DyB@hgEyCmP_s$ zUk4wDz?sMMcd3keop-QXhx>H0;oPOdLu)#F4OX}J8u7=kNprSuiT~UH z&?o3_{icK^?;c58FLw_dYi!JSRTC%j{*YG1yrDjmzcVDh}SMe ztz#slP(R1eTXj@%GPUgNraqpxX&1#zd}U?q8|V`_Sq^cHZkQwxwPb(lZ|cN?ed;cr zgW8`ei<^{?bpXDuAvd{bd^#S@+x0<^b1U@snUXPU&w$UjUHU={YxS^^UB|ZQOy)jB z`}MP^-t4lo@NsHe>-*v|4;!%Qdk{`+6QL-#I2N|Fm70 zSBEFdj1|Z8D-yT#3%JXWRCa1!utOVtpO8rg0LaWvfS*q*tG4Z>(t~L2+zUj+zBux@ z%6~?rIF_+#?*63J1_!4WeOy#-{c}q%{>)YONrQv$(LAy~@`Yb7ypPG@FB$~9KB2YM-0J;F;wUXpKaB_AQUj6!i}`s-c-q14yUe1kD#&0F1>iq zcjsn5S*9;+3kYYUB7;EyU?5(#i$MgFJ*5oJ)KGH=q2^Lrbc=pV#zZ{3kTF(~RdEr% z4q>&Do2c01#D#s6b!z=}w@XME;qDZ%yNyrhi>7~*&qqh^*e4Z1bm)VR__#(KJdpJ(>*G7wYTG_1b9S83S^`u5vsXDo5pre^zu_sP z!k+2%&vKh8ISUc-^|2p39$$3yg>qKmt0+c|AO)t`Et#ZY41yRq6mX`2#5FQ!EWcmC z#H_(B@9$)4mt=TqLK?QCRIw&@0VcM47CK#i=$eFuzg#Rh86rq&VGue1RP~<(#$<4) zK~;TQEos383PYVcCEwoR#V0h9>z^^1ThZ0;roWXRo4)tSQe%dmNOPTbX9)F*IOXHq z?(mgAKb5-u@d_o+c)j~Lf%&>bo(%E)`+d7FE&qK_*3Z$5n4exT0FX_ujd1`1j4?0} z)Jy{~UK->SdFK8O^Y3PyC7jCr10B4s+4UQY18Kj`KAiU3!-a-SM}WI4WUOju4uYwF zaYhitq2YEQ68V8H;hEz@pL)>SHT>|!f`bV2_^XRsnw*6#JUsPWUS&p9btV5^$Yjl~ z1D5TOQDIQ3KeZc*##ZP74q+pD1dYR=so!-!nzj4$tjeS=roq2#@4X{_^gDgc{xpK_Jqt$JF~f&HZ+D+y{@HDcJv6rLhDY9G5LR8K7ku-aUYIKEsb4}RgoI0kOE%IT_!;a9MrCG)w=$0d*r(_yq*1XE|ncbYo}g_N!c8_ zD&hTv>-GW0Kthk6{*$LqjGXbYrFHJjScw7tci?Eo#%_nwSHD(lC>~d8EC6S<`wnGc zgqzkI&XVJjdwMK>&6PRjCKQ~;fz*|auFzM~F!T>jWA9$+# zHVuooZ+56lmzda`ZD{8`yjJC0kKHLNFevy=?8{u)|8VlA*GlDr;X1jZ*8PP@fm&q; zAIFfLlS7|;*vGB?-_CbFKlT(Qm!84()ChraPt^YwwDTQ2qWYt166= zbPO70u|nqtQ5p50I6r2Da=n62e>b91j~h~%H#P*IN6)$Ob|mLt0??auFFXJ+qC`RcaT zPQ7p}XFV7=nSBpT0%KgMO`WYA!<~M;@ZQ(!FD^QgQIR;VTq&%zG6w(^SEIt1hcrX# zBa8Okp8iMD%G+9bv~Q61wUpBtJA#*;d`do&vHF>OeZGn@yIL!A)3az%uFu8A$}^+C zJN3V#I}(?D(h$l#-E3)@=5V7@S*QNOxC9{^kXm|i$mg*y zUHbLxTlZY~d(L>(pBnlL*j2|195vs^AVIC-3Mr*NpB%n#=gHE2@8(w|!=6bHwFt+} znFJC>WS1w6UJ*a%=*rVCPq;bkdHj6xt$Me058u&PcVW>j@BTR{?_}}5Co{_vz*%i4 zcLa%P05T$5m(q1x>f((X<39eeL*U3-y)0g=FZfq`Y6-4@7*MVkShPujQNe%S0FE&u z6ed9F>Hx zWgN;1^tsrP@WYP>Gglqz;yo5>YS`~%Q^IH1p72f3ir59EF`3)$lSu}^>y;!zK!PL~ zs}wr*=A>mm?n_y-P8ch7);>67Oh8vz-1Emv?<6M{os&4znvSIE+-79zFM>m_RAOh! zk54Q+@hlMu*Hx!KsI#0c)ZQSXu>^8n`@VD(tY5Fi)>C%_=JoaU{D}|p;q%r({?u_lp9JATX1O2s*`VTpVINw zI!hLt^E-&h?&s69m4g{;SCtz}RVq@my7_)H(=iiC009cAa3Fi_ZHo>*c$SE?U>qRx z&-*W5rV_YNp-e~k{CDMw!T-Mv2?;6!GAfft9m-rc2xJ|jKotXyXozwFIP0@Yy<-I4GG>)k^&z~yYHC-*NYY@pv#rCJKzGMEO zyLS(5H5GePSJtTw6lQ#6L)^T><#KU@%SaF)u3&xK=RMZM&0Fn2jwKCQeo`Bz{wyK;-IF-LQ^4l}BP6O6>qt!^rDodSRsLyWEU`1A`+~dXD zhJJGF$zSVI#O}nEEX29}u=oGGHRnX(er^pfF$n^hy2Oa3C!Wp}LbhnJ!2#1e|KEhk zHBFdY)ARz%wi}_Bo5#xBPO|=_gE4?H35lgAC6jTRb>2T?90EXoMf#8*V_(0}!FxCz z&0Jfb5+S$@SOlAN&X&7PE0Gzu1t;qaR@7SePVzhLY^*t;PO*1<@fcT zV!tot=UUaeE`IJUf2RGi#2}1y+C4D`10bLRB*KyG^%G+&kG|6&&rZaCihXm&+2RwQ z=oK9pac~eCdL6+SgBmKt<^37NRMw4h8DDe)dQs+U%^_3bY8XVh+c&3P-zAe2S=;+J zUi@Uh&V;XyRvJn`O#PQJYePeXbNL6OmmZrw-P9b`=$is%#&R`pz_LyDJ{*9AwBp!F z%TGN2IRGRU9ksX&U&r8{i;qv=R%$GAww78kFg3WukW?J&PF%9+tKoK%7Q7iKy4p~k zHLX%7@X?k^R2t-FWAf+ZV*RkYL<|6{I(xQeJym~mj^hP8T7P-+x$nFAO{iCyoEYk= z5N>My7~7M#E;+q8-hqKzb6Ihj>Vb{{I9qzuvmc@6A&Dp)D$XH-13It{~c{wB|A+h-6!aQ9vm=$&c zOnp-{c)w>bS>CI-gv7E_kERu$>=)|R&7ymcW^C|Y89(RGa%27#r8PVfk?EUc+~N_B zdpU%Hi6(J{v>J?5C^g9Vc(cB0TekW5nR_*YLT_vs5hS5z7mJSHweH-aH}@ngZH!tk z|KEkO7y!V>M;=JbF1zU1G;WFvDp|pqf_-kE#5}sOXTYr}G-h7+>H?7l(oz5YDZg&k z5O2I)G*Urf^&1b)WNyWUypt0ym7H43nYMA{{#U}G7|Rh`c*JZhg|AMU&Vs)^_0o=F zxd1AtA*?;|sFspRs4$dS=Lp@(2nHBrBfdNRzaOch#H^wqBFFuyzorRcxFL78xj~d~ zQ2sT6RjOUn6nwG600jU+)vP*NkgK6-1z=<{HX#B*fdT=Ai~tcBWC)>vn1BqKBr+Lg z5zHw71_lmJ5{~C@m^C2up}+lIqVF1AZ5(+>vzyuU10IT6Nj#$0c&%d2pfM~y)u7x>A=RGSMu3#6zl|UWC?r?;b5m7Zgc}i2C7S{P1q1^G$)zf!%<*xDFnN^WGrrGRC*W7X_(<@lAjbJoZ zS#&ldWzHC&b!g(r6$ubH9JQ_mj@)^F3;Vzow?<4a(b{=$0stcFyY0mL9=WV+Mtu3P zAg<_J6Itfw#kdTeP)VO2d3YNUbzrPEUtSF&6M=IH?rQIpV3#%*n7(2`@3vDVwZ<dlbO-5!ON|iDk*=LqEc;+ovy;pAA;z(uhJs z5!7{Xce5r0g2Yv@SGnb?nRLY8A@YPBb2=L2*@k81C888L?XoJ9ddo^>uM$J9J8JP> zC8k1B>DeiXg@;}Wb?=#Yt!sXbeRur%;$tnU57R7@S%8DXfjgB-%C?~aBzMJH+50c%=PJz9RX?f=r z&K({Qr3BSp>$08^lqG;pn(3v|69CcufqUUC#8TRr(mSN~C89!*<| zZh;eUH{QN{9b;^N)&H&sfGu&~3_V@6VSACG7+^A(B3*Y!gh&DhA+s_$>X*2;Is-V2 zdZ7TE;I8scy{GjX!+gEl#2-xCf?k0mfh%M_Rj_BJirJY}=8P05Oa&DYRFVb*1Mi(P zDD?K(rr)mn+qDHE?Kcl@+GtoGx9HNEUw99DornDo+~I`l*-O`3`vB^z$FDx-wT}t@7f&AR^VOGqcy7 zE;usEw1TV(hF4F6wbf_e3p`r*`&boeOm1;zAQ-`!1V`>!Ffn|_s3@P_*X$E<#rxM! zc6}KD@MrRmv73^YMhYT{fk7~CS_L>!0A%(^^qMutQY&*tSnj3UrMAeRtB&7}Rpg zRZX)wehEfJJc_dg`v+`_TeP`A$#!6h%AyR9&SIYbw031$S(P3BS`jaJc z7C2S!>0G~Wa{|uh?+cZQLRF0YZPFBzu??MlhvUP;cP&-O+(tV=VH_$bAi_ykSlC|C~oIp?%`OkXE%LqaugxYnPH?!AIk-pw-;*Tb+sZ!=9E)?y@ zk0)k7kg2;6Y*CruU>u0@?7RGyHm^Ai3cY=HX7;rco>VLIxV#e>8}-!FBU?Y?+Qn;l zI)mQgf$l`^u2Dx*e(hYLFZkQf^Gh>7kYyoR8okj#6=>gLz>+7sf8fy0cfk86GPYg! zS}*Pk0AP&CQ`*lN-NCP?pO1aZN}2NpNgZ4vO21JVnM4*^rwJ(N>o?`om-_zfALY~g za7@~!YhD-SY8nL3WNb$7klWi0Z9UbmwR4wKddQHPU<;lJ2B88xwLa+MGjYUY-9GgQ zbd3Hz*O+uIWexxs74axe=I%sWkG^}K>%G#Yv)jPeW#}!d4-yJ=$zBQNr~6*1%r{MigqJB~Y;=Vom>?&~HGf>|rve7Hynp$*g56ch{AzlH-g)Z2j&qz_yLN^V1~M0~ zL4Y76j;-;Fy8iQbUHymST<(#(iYjx0ENEb;NP&@Lgt>INI410wkgh=!yPnC|3;_RB z=9f8<_8Zy<+`MO2-_`y-d`7)lS1rZ?pp|Qv5uB^QsQCndz0x(UTu=CNhY@l!4I0Bq zz`;R6dq1V_@hR#A0abxk2l?Oi-p!%U-n2jayCMJxagDaPl%&#gm1D!73UBW*aGUA8 zotZr=JejwPAI;c0xXzLb1yRo3^$&KN_ri{IUsnP^x0Vwx|30-W8R2eyk!4JoBV8v> zbafk0)rO8FsnEr3;G1_vzj0qm;i+-}W)nF?d3FK-ROs_cZ)y8dU>lc#KY()(S77#( zjS>FL-u$$K*5fZ}h+Iw7CFJht?^=Wcyp!SAs*AR=UL(#0*tHHI`F-G@)iH+!FrsQ=`Hkd$LH$)&oG-z|l3< z5$!(;05B-v-rNVeeAuzO$B=K0LPquZbz>MR5ljJ&eAL0Ey|j~E$3{K9jWK2bfGd^l zwdm+Iq`D21Tid_>#@Ns&X0xhD>NUZLLy!S`FMRh=_0P^_|ACvso}ps7=y^4(*_f79 zt!~v^jdrg6-WwkFSa^QvrBVR!u^{Kdu-5kh0B(+aCi96dpL<5S^-Pe-NNB{#l$)vr zd$!xsZruaNX8}MPk3ltF@8cL&c7KO?E^aE%3bWmUnQUA#D-*9$+C+pssY|~XH3qV& zY6nJ87$HR4?&JHr%ng@ym1)3V{q}lv3LI~`ow2gQ&|dx2Wm`~W~J z*Y>-eB&S@33pAv^pEaq@npUY(uxP6e6?&!FOh*2RAVRlr6_h5h^Aaf zfvbKW&}!NnPC)$s=@L42$I1Wa7X*M=5+JFc`*REt9lNJFRC@ZSLKlwz@RRv;Rt?V$NKLz==V_9sf3? zOes2pPmVn1n_7BF)Vu}GE*rkJa_soq6TLp04gkGFC!#L&2pISC=#a-+YnXklVr6gu zXzAI>IJLw3H`&1smTr|bHPxsU{d_;?cR9%K>9D}7&xp>GIa}{fTJmE@j#bF<9zIbQn;BmPyiI@GqCi) zL$_D|tVrbFZi(q0f#6~1yL)_xmuCHV{I$9^BLHAvt9z-3-3Y_f=s5$`%)#tx@p_c% z^Cw#pn_Xc>v~lUbEYiK(>_eFw>LvS{^K)@a)U4Zm>{{!HtRD@MF@l=ebu-tZ-1HhTwUGQ}ZJ09lNb-s~|XsnHyH8 z#qj%unOM`T%0;Y_E3*Ze#u2@tWT;|h`xL}rC)wknPV=8TkiHzZcb-!(nE~KJ-a+`e zMjrHY3OimGI}{>vFV*F>HS@qA06}(bOYi77`$+)k={Kfca!-tW9*i;lEzz@soz*R@ zzU3|ik*`zhA6htv9E;Dbml+5E;HHR25m$5!_jUc?Sq;;eosbY1WW6$>O^Yr_FOE}P zC_3cBnH`v!INvg3)WvVuQ~(&>{_zHBi&3HX#Yee!`Kc};m@S3CAd!MrPVMs;V>zMD zZR%8xquP0oCD*yz1zdFucq#AjWWhv@;|LLh9e2XRQSbK;b?Yi?n0viq5RYv$9RP4! z$5}7uzPg_g70Xsb{HIX_s$@vuza&;qhKhI zGu>95p3R6TB)c*R=B9R>$!O)?>33(X_pv?!QyWCyaL-=I)n}oL-{9A)Cl|G0)A>cC zDyY2XXC;6n1+Cq>JWze++)(&C1m(Kf`5q!_5KqYKqLu8}@K#e_1b_&y-VIV_lv@|L zsJ-`xxVPV9-jkC^b*^>OjHNJvEFlvsM&)pUe-{qK^2;G*`}=<6PSv5*=r6~e~Y zcbEg*pJI%vqAb?T->yh1-H*H5zS}O+tw(`i3}6CQkELiKCIdJ^nO?@CO)_*wlQC0s zT$wWhpb$p&v`26Y4pF7Ztr4gDT9|wtIo$2M-fifzTe^0{nD8evd^N#JP0EZBgCYPf zsb|%;4k87810JYxk5Pu=q6pdS7vQXM$C$9^A3mP9yP=x`Ad~0gX>~*yEb$J7CF?hED#w*TKf5PulB+p(^0Z z^}l4n2rZo=mQ+vy+?h**J^#(^X3>M)7w&LkX6J1H{-MxYI`;)*Ou4V)Jl`n$F5ehQ z50jJojQ~f9j<9&M(kxxmu7qTPalJL@6r?~SwTU9ol>LMW3M2XJIz`p9BbCd-Afj4}ZE)FDo@~bPxf~8aK3W z+2`Y<3ER-n#HSuWkYhxOfC92Y#8K0_m?OfoyE?K(k2;s*?Hb1Fl69`MBD=LE!?UC0 zit+7ct#@D^7F=D+HegI~QhR^JEtoLz>l9$TxBCb84+*&YF;A_JX$46HKmpa#jJ{qE zLV#cjh%uB`629CnLm}2IUDE(zN|GQ8Oz5vg=Rg1o0~4x7cReRk;OQ7*)j9?RJt~{~ zfEXCcb=CUePB3K(|(wyE9r!L{J~- z^o0veJ0sRfUCS837z-KIyS;l|khuM3PM5Cq2e(W0{- zU=&q*VNGykz!;$7)=Qd^otK1A@3yaU3uf#pu6D}GPipX~y+Nt0ao>x!YR1IS~3FwXS|>`UwL}bB@h&ixdEMl zqqSe>T1^&ei;JCCp;gOw@Pr3TB5SH`>It^g#Lw{%DqOnL1G*LgIXhn zR_gQ2+Ykwc!ivnejM9r%lR3n*7fidiR%&}<^-fw+SKXmNf+Z_-Nw(g2?&sbTtzA2- z!OizQiz0`Q40{Y`N_HdKWzdrVp4@qMkykOR3^|>wX;*yK(6vOQBc#6LZo1D(7iK(Pu{bZ{CZ)v z4Hp1FnJ&Nnh14X!Tvp@n85lqc>?IfBQu^fFBc6-{L^p1nQA-j9T?SB z3AA$RVwD+A7x&RMeu2bH??V9XtWke*$qD=%|1J?3-OUYijB|AK8v9~Q?k@{eOk3m7 z!@!VGaNHUqUnZ+Ey;p6nZ{^yCNZ}b|<_w*Ppn=m{)|9=%SYTCa&oWVZkG0CqExOP) zTgj^N8pZ@sjWCyB2DriErJl;!iS)Agq1%(bNj4~os*&8Xtpdq}vAs0t z5MWAVe~$&zMkrB2$Um=&P&0VWixnRY~+5Fbv|JeyHn@t6(hYoAvKj><%+`3X} z$QxbTd!jsgt7I}~<*dS`qLbK{`eT4KFFenjS`lL8DJ5AJU(=Vp?I^6uG{FEH@Tm^+kuD}QG> z`ZR1l_xa3Y*;^a5CU19NR2a&pORVNoP-1|eb87&A9>oSD$u(N_o1#w&>`eIaH*2(q zQK4X27A+YGG-l?t#$s^9)EEcJp(?ZR^~Vu4V@NAYyv@(OHR6g+G^h+4E`BkIV3|6+ zVHA2R&#nVMkDY$1K%Y$}!;hwxsP-_DKqN4+pB*~+5iVy8zLAvq6;vuESaxiBgYUzg z%-;K*xrkQ;1~;uoC1cDgRz|&iN0$>blrd5uYB>MmOv3)GwY_3 zZM?83JfZY>EAzhD1P`rO-q@(=1OOg(zGdb+j1C35oEP=FJiki?b&sBPCFfH2p`&Mi zoGJL@X{ipuq=vV8Vx6nXt>$Mnec7l$$@fImpy#@$a<+G`R4RH{`%}}x4j0Og%p+U+_E4_e{veZEr3y<|S7n7a9Ar$%!0B&#pws7XohMKp8832xi(vv=WQ&x0t z==S*j?9A$L+&VR=3`qsYUuT>w(&#tD z8;H%_+wrRtGj~@SD(rb<_`_KVA_e1mYtbfvL9YNz+z`!sT_kWMmB)rHKR$C{eakwQ zwFv<5bL^W7Q_JEUnHhUai4?dw1f8(fvxRze)phZ{DNiBUjD;+NB=k~D=AOmlBA-D@ zMST6*A$=Q0MNOl;@{GM|3oU+~?0jC+GSk+nyQANJb6)^KgJNSomd3vPb8C+t`2P5F z^=_{=LH!Vyx^H%YKBIkIX48zZQqK7xr8M#PksRa+Y^`8TlTV?QitE-Klwv8 z>g${-&QgdeNGpr?*`K^(b-$3i5MOevUgd3!pN~N2aC{g4_7_H>K;bp_8Nn1dsGQfu z7hQmgX%%nRR;$g1+ywwgEH?L#wE(dG%z_4Ki=R)==^S5lJghk%jaq_>z3&U=vXC+o zP)J~B@>eU(oSiJA;9Tp~@gE+Og>1^k zbVKb;TLvQlMuCZawdmqYfFexpS~vKk5CE<)#Frl5eJEkY=(XqP*ID8&zN3*?bnMNO z`Fp3Un3|c}e$z97V7rj-E)*ZJ+VhQym@z>sIihB3djGuhlTed-iEKfHJr0hn@`Qe? zPQLQ--JR#vtDRP#eTOYR^oZTc)OTMq4GDD{7W^IC>{iHNHva?T5>m?I?md{kYTmHW zhwCLf0DPbF{AQg}sx=v9S=$d?f|_ZuHRZdB@g*^RBV4-FtGJsZW?;vq&zEMDoeyV> z%*Lk>LXWZ0&!38L3kLw)+xFcrIhV{%WC#K&Wv7Fe9i6^(Z1l6(a_O@=%lv1?&mbbZ zl(MtOR0?C(&T!Y1oGJJdS_9usX3rBiz!=JmMXI&23u_%Z`JZ(09gXw(`#(5Suz#Qm zi~(d(2!tk8=zh*&<5$GbxmYQevl}G|OkE&FU{XH~I`{zw2J^nxHw+Adn`{-fWv<*< zuGdcjfS7E{6C0f`G+D_XNLo4LyVI|{X6XVc&>s05WBM+@fE{hvbAGzy-LVEmqX3oBY zNx$7(m-};ci2#5-3E#f6J^jarEXx{6i1rwGw1wI$9sr8RJ+4b<&dIPY4!&@L?tM~DWRyG6`ac1 z|I5--bJr&2XSrA3nIXs3SaO9vEAZ#DZ~wG5@w0h)VKgI!xco^3dvtiinosPd^~R}; zJ&1A~@Rnc-xVdviVlXI1?9cvb)~^>n{Gp@wKsQV3IgxEj9Hu5$&$aRMvQ8B4d{B^F zwF_EvKhSW_S~_%j|8J5oR?*U>!y6p31p}o??ky=_-?{wc%&o4>%^v`w7Fym;TT+%y z+LHRk`67LReSL=m7f0W$PF}+{5zKivFhFn!2yDFc+1sn*-uv3V($f(Dj%HexKxAL? zckMqv_C#@d`NavG)oUJ7H;ALmScWYrOE#>EfBzLCvIBr~#WioipUm0;08km=@=NSn zKW$82_A)2)@-s#NS0gTGf4^0+{{sNHYJ;&qV-0hF-CK&;IO-e#ffN~+$}c>!;?%1t z`+oV+7XZ!_S?;>J?%aaD3l82@kf%%YW>7JcN5+jd-Zeb;wtxEx71sa|W>2Izahxwa zHuTe@k0!gQM5HCChvU_rR%bH*K(tSPtd0Nhi`AFjewYLxL2Yp# z=;SeQ$;h^kr(F57LQ2Q+q#cV?l4_PwFtsJ;qjt=W#TTC#kx&+!zB=yR*C$54^hVMh zhY{*?ZI{G7iQh4Ww7v<2hcf<1_@OFoZ~f=?S!GE$lfCUBjX}$6oz-W6C#osAYo0n`8*PjGl}* zk+Joy;jHfM*MT9MAmyoh4^xyj*H5f`(f*W(bnu zu5!({U;l|jMBjb*=WPp%j0NV)VH_F~I9GT$=xouU%(d|!{2cAp^S0w@ zo6$LN)K%9L5!S^nV%>wswfsGK@%95b>szUb15EYr*Wy>;VIR1C?!IwH3z@MSxNJ(Q zRRb!nW?7||f;Utq#QkvUjW6zOKYPZR%-_n}`%k#)+Kke(@ON&DKQmXqx9sHeFP4c? zNUUx)qmBAfb|-v`b}jlvd>#AJ`C?-}s*VPl6pae_Xp0_&rIvch5g2ihQO2Z!_K5Z+ zC=KX;8Rgy+_jGu>Uhier?xF8<&R!s55YVB!_f3hUVDRMVSChvsdHIW7NyqOf*OfaF z3H;O2f)NMV0dJ0zU^J?rk~HNUyhJV80br1Y0fJ;FMaa$up$B8tTW;n>CL%Bn^z)hg z3Me*m%>X8MO8}Cf_5MR7(vT5;`UbWxu)n2 zmJMtD*j1NpzWB+3y=g!9HkXq0YUv4fl7mqtsndfT!m|?#E-vx&2{GgsUNS~|-Sm8H z(N2RRBU-PNyBLMOZjlQa0|`BP_)nTPA>x@&{`u?G=RRC=BzyfM9Mz|PHML1~dz*G} z)LfJAD7oacbnTcOmwWOnPd6VS2_7kPd3a%YT7W?qgN#B~wdYj(&x8@d)y@;o_xkB? zH?NIf`0C+|)pHov!ZIVXf68xqN_&-aC5T;$aO+y0RCw-dcX#))%)E4UxJRc4lPh9< zbjETogHq|nm}T;tz8MY`Bs|t_@hCrsuxp;HtT;3KmUH=sR#8<(OiTS_i3A+f&LE*& z2y~7tk_F!cjs8M@ah@FJ(fQWQviP6^Lq-4u0`x*xC2{TBoj|xd^0m2beFwd8<-_uBg>dZR#5WTFHS_OqJ~8+B&PUvUrW!-YGphH%%ScqWyy@Wv6`%Fosqb zN>zXLi@NQ6H0ty=%BSDpFHSzYzT8+w46KJi-Ozy9(3g>!bZa67Ka8lV(N4N3M zj%hRPqpcTCc5eHA{K55S_xPgPlD3Akep3`R0fVA*1mLJsu1@gvS2{uqTYxe0*7{|P zihSbJ9T%2jXn6e%qAa1C@0jB|E`I*MT^YZ=VScc#9InPI#{3rfd7Im)xMomVagJ$fMFdoBt=|aYldqQF^mnCPW)D#GvApfz zob@cp%K~wMlZ87WK?1;QWn;rQK?no+yL8y>=Mc6fUrt90)z!O2ceHt9!~7$+XXY7l z{8Xg6;&97M`HZ7dE&~_~KVNhd5<_<)6&MqU$xa6Y1LG>w@!}0R(lriUgQoz%zGcUs zo0Cu+^BS}0n5VjLa2OOFGk{tq)*=e@P1(Y}m75?A^! zIr`Mj3PXh>YnDBu>H{HxalN&O3gFPoROgU_R+W?yoF!LGiJCKHOuK0x&07D7_ibO! zJbErO(btj`eAdEAa$-++{kDCvQrKw98~}fwL4)hNBgy4j6q@&`^yzi z0%Iz0q10h_Mxedd(4RYa4qS1)D+afG06Q-HfPn#bJjr;mlepyC{iG%y)Isvt>f zn6tdEFC!x!MQq_-+}Y{1F&bu9`$;L|QtzZO+^QsWb07!z0 zIO-DVoQU9}^=6NB{&)(2YbtX9U=q{K==tLad+r3&dAj8dPmsWc49-*_rUqjKf&?%% zIFrDLEL@TP`+2a_hwp?qcQAjDeoYv-N(GQ)%1lQB49?(W>5%RWi5)zavTq2 z{+MoHx~lYJ&98GX;wIO$J{olKAyAcT+Km|P(4Bd+A;EXG3vbbR_b=!6g)I2vxAYQS zB_{@mCTMyFf(#iwd`H~MRIJcda<6}(wZPThWHtU!mxZ0%cyv!!>f|`fs-kX5RhzvG z#8kCN8blx_5M&><@V2%u-;u4)tMTfg;dh~T@Wk)B`i%a7m|V9_PU0X4fSFdfrj@d} z35^WS>$i2*&V2xUwc!UtUAvBCLNR?OwU|f=0GugcjQwR8XlBfys`izvJfun0TiP`W z!%cs{F1w)-lOXE!7J+E5VO<$x%XJw`NthCiv8op4FjjT#>-Q-J zQ}<_P4Idjpp?CEkAH3w$w5(#ev;lJ3HXS6(xTT*4?fn1)zp-7@?&}|MK)bMok9Gg_ z*{x?jf{)hI>@63I&R|01^cRC1qd&BC3$?z;LZFw|&EGaefR?Ep-`YB~_0*3fCQK<| ztq6mFmo^yg_WskXSx;y0ai>T$cyhpNqL#Gi?m2ka*suXtEU42*%|@^BRfhrqdIyer zuCw>ZH!Gc7YslV+AvfQe zRi2REz!m(B2~p2<3vg(&%am$aY2b5ZGVQ2|BZ!hAOI(m7}Bk(1R1AW=`eAt0HXuH^{EM6gwsC+5WDY76sN?956CXRNJ)} zxF)Ic_}h{N&1*GYNAO_R1w)4W-~EP~6NrS>LWbI_ zv|>`k3uEqxe*Q%Om=yhdt?r-PZUzpfufp9O-ksdX`{tRd>J+>UdDcUKqz1aW4jnZ% z@|j!8NO5b3V!c>|sSUK+FYamg<`k7=rw~bKNY@r(fW6vDJl=Eeuu#Ot z^E{{Z_+m(yV~2x`Nod%?oWLMp&+Lr1b$WS3B?^`TfV~EmP!)pFpkPuzJ9G}H%9=(}vpN2M zZR4^JQu9+?YifFis#%~gWr^biFp{g3MfGY>uCX3owL&5WNDu%K>?IBQ22OnN@z$S9 zj7vp5eJu~BMN9<-Vg3)-*ST%lcy>pLAr}L}roMhphxek|dkwlsAb<2a0U<)P;-vXEe3r)Ds-lEC%@qvwJP6AL4_8U_;-2*+=`6yB#exjK5tma!>!u7 z_kjXE7$b5>O62BN?U^{ul`>}xeajc;x(jLA?32mq-m$bvZ0?< zO?9i!Zv_;zbZ&z&q0e-i*kRV?iF)sPT`H1T;pwdL7ugRE1X!bM0~d_I9(whxpxhv!AxrCI^)rWC(D`7O&b(M+^c) z1P{9a_}aHxJlb!1Mv$`7t`a8A+01ODZJ@Kygb697uQTO^eglBLf zD3GBr4sPL=rvimkg2B%*BDbsW;Kv^AzN97eh716h(D4Om4R%Zx*KdDCkzt@p5Tsf; z$p^dj${QQ?T!+Cvw+{AlY`sejJIG`(Z)8@D5Kx#*AQ>$jTV{9j9r?)A4s%-tI=3zX z0FBy%WD@-PeMg2+6d13O(M*t})uR$Zk!$RGOekz>*AH+seI15`-v8X#uxEOEJGR`S zh86+_2n&z41T!fQJrV3xjtFsz+xyW#Dx3{)G)NZb0sB@c7-L>8jLN-l! zYjMP6BprP1{1EEYY2FKcSJ~g$e$F|@7{<4m0ZCy@KxbC|2GzKG6IZm@pRqc(RL%!u zD%KoU=6???Q{~K0gbBU1i1s%{gJZ-R&6>R-0?V{}`##O3{G>cRDbA?Tsem9U98tlo ze)?_doL9oUf-Y76CP$aqd&jwt?ujou-AUr=R(iQyIB4AbKm?;O=w+cVuv0m4iSdN? zEe55G3V-5d##mx~pFdM~ZmNTDmd#uy=_Ty+)&{0ERJ*5FoJD{`TM&_I#qs}rn5sWJ z(I6XI2pAm=ivDtfmwz^;R^e%`>>PcXqgKI0 zTxV}wCJCHKDpVO)x3UW5(4QhSg)@zkrT#*(8;F_`Bi2x!F6(p6jlh5)if0w9Bc5zeG69kx| zs=+=%ZSSz!fq7I`|NBtdX7mgk1tMy*{N&3YCzqaRt&yBUE97D*q~Py<_NMi&nrXn8 zs#wjW>>fTN6NZI7I+Zb&b0Oyl!o97N+n}11oU;KjdFwZxEBw<-fcfi`G6Jb(fr-gmwbVEcJyXH168q zuj^7rvB-lfHyOKbKKI$%CyI8AmxZCVER1$W#enM5vT96yK?}~LQU|q5ejB$gzmAET zIrCa&Uos|2F0yu#hD41aIU7WwA5B>cdrb?M4GD9LOXTuq<(77(LI)T~Q81yu9XfeY zlO$THuR`B-?jQy)d(nXr%FUjg34vz^-?3xCglWUB{Bfo}6@J>F%m3bXX(>CJxeig@ zgQ3Vql*t7sDoaJLmQ&Enf5PQKKdmetfld*1e)ibHU1;Y%*!qoZ0T=U+;?LBdSfB9w z)s?#P7vi$Et4m6=!PNv3gg~!0Qk2*5?d#(g?D5hBU}V^XjyVhsFlh1cs++pP>6JE!y9cPlnoRC$S z1Yi4>b*?`p|0IH2bZn4kNv=GB5c^K1_Yn6fN<}f7-1cSKm%8%pgsjuDVC5iE;Na+t z@D_uMyZDTl|Jku=tiS&xiuN4>04SkcxUj~tnkFI~Pg>97%40Ar;32%RPw0G-QYdPwApS4LY zJ&q9Px~Gmmn6wVPT8_h+?B8)NKZf1f_GLPgx%08JIs5!dlzb2f4$Ku%KEn-awR&z$ z@{h(r5f4zPOa1#}y*2N;xOo^GHY4Qy!&Bl)k;I?M3`{Bq|+|~W2I@OU-n2uKUXy;>3sD@fHILN`MJ{HR$M1Fv>tJB8D_54WZC6YxFy)EPdJBWi1?Blk(r*5ZX|(6H&y_ zkDqE2Taen`2n-2z^cb94T7V)$B@FsXs5M%+s_hZt?v0d^+?{QGLN0Xii#R%e;9Y92+)l zpq>i-WZLGyjVa4gD-HP&T-^+<+5cLh_iLv`dw-L)G8au}&0ZIUzBlf;{ejHb_fR^_2jfJ6+$2|_4vvvb9u_C4R95-5-})@z&Xd{=mBxPLfcGyZpdA6&uv_ac{ev+ zxL_MLnj>`z?7aHSTnz9Uj5|WGJqHunvZK* zHQO)6Xx`oN-6KY!XfG=s3w9Xd^U|H3-@N2+OHf7v4$j_N0bEz1ufKR0W5ar2M^el~ zQE%O`IK3cCTUi~JkpGo=T)Aw$TqO%P{ViV^>X55JAbfLpb6<%|dF|f4JA3mB-vtFr zwTqlmq1UO_o!h4f64G^Daug#19o&_iCZ{17;9|w=CeD*e;+9RWC;&d$-0g?nm=fDW%Y-)Vx zQD3|mlU$r*x>)+l0ge9o&e#?2kxM8tlwn=W_7^vu_+#dCtL6`xck7J3SJrdq*KeX{ zKpRZ?{>?XMZTaFgoiLgTkxWL))e-NAS9w@eRb#R)u6B-M5Fo5NvnT4;*u7^5ESh$3 z-pvp9x%KmxvFfpR>)XsWZ2W7flf~D>b~F8#U3xXC+>qD2wD=V;5R3r2dJey*lXq~l z4oho#9@BKB-sMy+s%yHYgIhpkoA;(39JX-!(o1=1S{*e&)G|gOA$V+7qF=Y!W95O1 zpI%z)7BK5O&d|ceU7B@x{;BM;VsA#(b`mw+VSydRjnH+>^L}drb;>?UpTTj_r6&C**nu4--Ue?}eD& zA#Y61{ok!mG|oY!4I9mrS}XLF;!|!54^K@jHWYY}xzX?j#1!O`pkgWv_Mh_B#J01( zCuR!tVB`9{ec&emz&pEtxVP>5_n$bIb)hGt>Ye)fHy$Tb2no(5}8Pu#(WdM$jS z{HYC}Iyc-?FdR&~I5RFIzO5;ID*G#_$G;o`z!_J+vSz`yyrLZ9s=9k`Fan4(R2X#l z{p|jyr>$N%dra%@cyYv?PB(w?Vt#sQ#!ZSM8Z6}|<0_=(XM2wP_^H$1#Qff)soT9(Ee<80ayXoNzU2GUySm@qe(=$HS0YK+ z6CVSv(K10*VPl%#oV3o!Lh!7zLO_z3sK-2psvX=p!JrU6+577oi6wcPQ}c5cok~6H z3RI;HwK#5?`T7)zA-y;sZ*TkV5CArP(^vRt^aD-Zq&95aP*^lg|1<3u5Rw0H=ReNL z)Fp%8z?sI(p;Kh^@)Rl%NhgRkPL^NqtOpw+u1*@-)J^$G$Sn1%)J68JIyHz?GPgn_LJ&;G%`G38H$Lk5 zc>pjj$_hC{{za_5U>Yz-EqU?fx7L0(TyRr{rN(;wGG|aE33}OpJC?k(V)sMy?CYzH zi8a&i+YqpZSus~bReuB+%8YuA!Wf7%t8H`w_tXZ z-V(cLSH3>oq!FpPotraAP+(N_7}xUA9|wm&_QJ+? zj}Rad_+sB`EZFm-<4Zr!Ur{dWLFSHGh)ll41aQTafsIvVVpFNKaCCI9ilS^<)A8zS zMfJ7UM_~+L5<8Qfpjo-~o4wBrxuf1~#$j^NGqo2WU6wx><6E4IBRnYBY*lcmAW92eQ_7meAZ3c{PMe$ms1qdU}tbTR#SXo7>bb zA9Zs;VpI;oXhz^9aam=+;|5N*S#WC%h`o5_4-}HXH0o22^qYj+zL|ZZSXZgB}s>cA}B z3T6ziZ&}`V; zj>G@-aB!LZP`e=)I=1bY3;?NVN&ZjoSngA(D|&eEx#N!u$QHTaNeah_9T85^MPPmfe{FOeI~pzA?mr0n_4Do^77~hWB|LW|8017;Ar6b zK}N2ifIj+T$3K5~=g$j3Klkjj?2li=xTG>$4kHFYft}W|vUgD1c{`q5@Bw42bm_qj z=->V?FC)fSF@RzKsQ|VgO1u#9*s8a`Jf3!;Uv;E1bLX!{7-7`uw>;2!L|}c|jFEu7 z+Rpe$|8escOrHL79Dtnw-o`@>`*LnTsyz({gtR}m`h};Gn>k87oe0%eb?{ z@F!ONvH9H@d%wMunw_kIB-L1p!WmAc$JxbPh>h$T-tK%;x2X*qHv-pPd#yV2)~W(s zwnWWMn*)$QAX3oAZQzF!qMm!FspV;Os45L?9a%c%SsY8f@Bvh6vx7Gm1jYqiom&*g zzxZ{)&S?u@V~mvoz{9=9)OfFpn#Ui1;hX;7-2T$nrdY88=8Wh$B zjT?e%D)f}n3paz5kfs){wlD}NkP+(C{ptI=yz>D7JlN&ErWUJN@%+ypW8`vBe*qs1?hr5kf_2j_Y-zAc3yk2lXFb-kV z4+MbSNhfMmA0vXR+Oe#ARP+yT{`y4|v~bhY$t(11_rNwMemS|zqU)dQIRO_dva#&m zm+w(=%g)jnV{o%`KKER&iJKQ3S!dBb-KtW!9)9Mt@15)&EvW<{4(>feT-)1ONN9Im>8hWE{RE>s73?LGKAdHOcF>vPQ zC8h7*UjKaRiziN--7maHjwP$JoZ?)3eQfJ%gIac~RUJfxU{AlZkN27&&z}5No-I$bYTEOKH(t5^*bo=$yL3h_l%wa(tFEE1HERN|FW!7yk8#bB|S1I)4 zIeYyo4dun}TQ1(7a& zp1Z%>hyQBVw8r9K!ik{_=3Rk_OZlTc!t)xse#RJH7CqP_317 zh`V<~i`_gRfZI7DBB<5Dy4*gx$3R57`C1e_x0R!3y+qA7R8(3Ln9^vhlj(*H8~;kK z8Vn0{sQ~dCJ_{8G0VL4IZSeaKba`)nQ_J&jp`fIAfVp_*BxKy&rf0#R9zz=3(BhZl zJMnn`$uGJ%xYT$Z697|b)MG;02Gpto0*v)d(%oEPfREOtUPbtOc$(b?2LONf`YH5q zCl7Ei3xdqt*yEH98;wb`-Fj5Wh;Y|_uio8p_DeR`w1y+LBokn~#zC8L342O17F(nK zTRNNEsNC!wi)y}7KnMkAvM)7W`nP5bt4eq3?O=iRcuiQ?+V$PzyQX)A4I4IUG<9a1*w_)Qy%2i+Ykic7+Vv3u3LqeRPqjTR^ z9_cp!)25cihV_tG&7nUTOd&|+hR*R_R~lgJS1YOO9x&a84IBS?u2SfIT23v{fRQEf zni~_7ID`ntKJVSx^_~A-IM+r(rP2bZ%9wUt7}h4Avg(viCd*qM0J`(k#Y%JPyeBRVt^KkwTxF1sYZ#_I?SLMU>g zv8=&e=l+He=8vBk5ak`%yS`Nw=*n-bS+orsHkuVzDfIY?7z_%yca@W!S5wOd0S-VX zdIsEbWPI54aoM_5cxh_qrDO@YWhuLElsGyC6*+%4W&QoayPkrmS+6k0p_eOL98HP$ zvxW@s9a!_MIsXgB2#hhYV&qd5mX%sJx_h@Yo6?mLA)z?0&Jj*htL7xWPHwg>cN;cr z)S0V>%?O9C*cA6MTqKWOqKUWNg)pGI-)%=GL_F0aSC;`FyCAF7fLK@Uru_UR{b|`;Fp|uadE%sp=jW))@fcsIg10 zX;I1uAV@fobmr-~+gEhCuwmmGTvv}daF>HY&Jmv)ncO5AyMtYM8QpHENPXCm16*vLXHS{WhffxfZASExo^Qf<1x!~jB zT_*#%-%jiX0Gv*{)cfPZzpdq51%fHwz_m~b)0uUUhff>;Oz%J0s%`Pfk!^dpnSM_U z0OvTHd9lM&s}|NeIrop-*N!PQmZCW&M6zMS#*Igf3Y{^gZ|5~MSPf3hg3L$tMTUab zuALT741c;S0IRReuXxUjL3TmQnl74-0-1o0UPJ$2POPYjgt*M$uul70dIjzfj9@Mv z0atOh<4C|CQ5?a_D2jhK=Tm z*->Of>#6DeTTJO@$Lygn(`vF|UAzbc1{ntQ_MiOg{T=5%m8;8W^oHmZbn|?POQ!ST zMqVg!;;@tKl?jp0*6jecff>5wCG-o4eg(1&g1ObH1O|@nXZO1L%$|^?=qpB>D}V0x zA1?p@#II)U?lAYE6S<}N05}wL+uIx%6w%|tyVRw~~P%1%|O=wSL zUO@Y~_oZ}-Zm$7=@6YVK>YB|ly8!@`+YjhFY}t(DLSy+27s$zm4I9l5vkJYO3NgIh z!^c{?_3H1Yat9N}`i6tPS_lSoavQp2eE76m8sp6TT6Fgr8y9FFc}Zb1cq3c)%TVBJ zAGDP*R^I3jehqd!`X0W$Yu2F=ZTs%vX10L|rU?)SM_y@x*P@-PHg=qMe|*mckKHqC zb=3|ailSFPtvp*1nP29%QltZED2971O3)iV0N_y730QB+{> zR_%0sL!wW>?9`@ee}{9NNxS6k_|gddfKQ)!_t4psUFiy^ej-x+l5nK=;E$hP5b?o% z`!Y)kooy+@Y}l~T5STspbY$)T0C$c1{vq8y^jUH2)x)nI5=2jRA8@28h8gD$(^|OZ_#pg}(?APMib&KJnaUOFtHMXdr zvRrHKdd5t#)fs0vm2x4RnE3Wk(rLW2^9T66F$vyk2b?R(L6;9722=zN4iXGZEitAL zNU}hu5#fI~-LvD3n;*6QUi%g7e&*B1RWk>jRul!6oO5%|SfxRSeep+M+I#-UON$P# zL%X-{LV=*_t^ZG)%;V=9ZE zsqS#dWI#KQzEc@vnN8XN|6swmX?SVmRNcF`J~PHyWe0OERSNrSwN9J?OaeFugpBN> zT%68LhODmyR2+Z=0S4lxBOD>s9G6fM0w6(cy@GTj`i#1%_uKb2T06v~p95p;OsK2> zK}$0bimJ8{jG5X%krA7hg3Q7kQ=gJJh!X_JbcAKYh7B7HK&>~=PiJp6jBNGryLYu( z;L_Tq!~eV-eDh>5kPtO)N(xdSNI?t7U<5j~Sw1TCkwJI0pEIG7aw`B}K+r8s+7Rw4 zQ)IlGT0ik>Z~saA1eG>I3RxLFeMc=D9r^UPP5SWH;p@}e@o49f+sAbo^a1p8lgS|% zN0?Vj7CUQ&V_)}R<1Dq2eUUkcq#YK04Awg>P00O00jy(Tm#Ov#l8+f89^Q$zaJiS-*Qt) zp8)_yg+JERZSXe=L@GRZQ2%dFz7lu7_;4g6f*=BG;FT0-Kr5GSe@=>e`QhZUID|Mw zHT9!k#r^Gv0RVouxz&Sv~(HKVA5)l*#xI4JxtA}12y7b7VCUHZ! zt^HsCNVxOc*>|jr*}0N~L2#2XXG6jT0nD@uuh6<;G%T{kpMvfm;i@>r9nU# z1i;9&>Vg7SwFgEA-+$+ncC#P8P;d&t&Rv`OaV=uefwh>{d;HLu!|t3A=;8xO5EwBq zG6j06FQ#;;07!rd07e~dit1hb!ic*aCq(pYa%BzxOO9;8Q@zIY{olB0+k`NJ2?B3` znI0okX2GGso##e+212pA?S>5-HvWy+6uKEkw|?~NnY~td`niPvWXD}VLO@|K8vvym z0)s*dw2~b{9osB>zV}al16tj`5&*(IIyCj;SZw$V3#F#dH?+bAE zhG>A8!9)rMhW9Mo@$APh5N8e2o;GaQ`0vr+`KneH_2 zO>Y4f^soBXLRHmNe_K|o$cBx75jKTx0nr{q004}!901cU79M%-kK~^;9leH4Je0Gp zt*=wqOrx<}B5)My@^?vEDJIIU^Xinc(`QBpJgIm03^V}G006oM-(+=pCw3a5=E7jf zrP^Pyuh!*%dglwcefbJAOJ1&3u^s^tl0w4dE_NLhMS+98z0?rx zY_D-Bq0F+Di!S}%;p+n%wj583^M;B+QWyj{I1!Ypnz#@U9AJWj7{G*pmxDVV8aV#` zw|%BAXE24#jqnMAEEHTfdJ_>^dj?+h-FEkD%OM%AZ|gw>VnBqKKg%fU?kJO$h{T>fYCyr0xgTeG+^s?szwE7x#NE<)??08FkSarG*fp%H@p!S4StbX%R?iC56BG zy14BMbn!m6=E1kmF~*9Q|FI5J`;TiBS$D=C!H|gV4O-?Szb$C{+n+ll9Gso*2zBy0000b zbVXQnWMOn=I%9HWVRU5xGB7eQEigGPFga8)I65;mIx{jWFflqXFc!}n00000C3Hnt zbYx+4WjbwdWNBu305UK#FfA}SEigG$F*rIiH99jgD=;xSFfeD5qr3nB002ovPDHLk FV1mTx510S| literal 0 HcmV?d00001 diff --git a/docs/extra.css b/docs/extra.css new file mode 100644 index 0000000..f796fa3 --- /dev/null +++ b/docs/extra.css @@ -0,0 +1,176 @@ +/* BBF CSS to be used in addition to GitHub CSS */ + +/* experimental "note" style */ + +div.note { + margin-top: 5px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + background-color: #f1f8fc; + background-image: url(pencil.png); + background-size: 16px; + background-position: 20px 20px; + background-repeat: no-repeat; + border: solid 1px #3498db; + border-radius: 6px; + line-height: 18px; + overflow: hidden; + padding: 15px 60px; +} + +/* experimental "left" and "right" styles */ + +div.left { + width: 49%; + float: left; + /* border: solid 1px; */ +} + +div.right { + width: 49%; + float: right; + /* border: solid 1px; */ +} + +div.clear { + clear: both; +} + +/* experimental headerlink logic derived from Sphinx basic.css */ + +a.headerlink, +nav li > a > span { + display: none; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +div:hover > a.headerlink, +span:hover > a.headerlink, +caption:hover > a.headerlink, +figcaption:hover > a.headerlink { + display: inline; +} + +/* experimental definition list support based on ideas from + https://www.the-art-of-web.com/css/format-dl */ + +dl { + border: 3px double #ccc; + margin-bottom: 1em; +} + +dt { + float: left; + clear: left; + width: 15%; + font-weight: bold; + margin-bottom: .8em; +} + +/* BBF: TBD work out how to handle multi-paragraph dd elements */ +dd { + margin: 0 0 .8em 2em; +} + +dd:last-child { + margin-bottom: 0; +} + +/* this makes elements invisible */ +.display-none { + display: none; +} + +/* media settings originally from https://gist.github.com/killercup/5917178 */ + +@media only screen and (min-width: 480px) { + body { + font-size: 14px; + } +} +@media only screen and (min-width: 768px) { + body { + font-size: 16px; + } +} + +@media print { + * { + /* BBF: this hid the pencil icon in notes + background: transparent !important; */ + color: black !important; + filter: none !important; + -ms-filter: none !important; + } + + body { + font-size: 12pt; + max-width: 100%; + } + + a, a:visited { + text-decoration: underline; + } + + hr { + height: 1px; + border: 0; + border-bottom: 1px solid black; + } + + /* BBF: this isn't desirable + a[href]:after { + content: " (" attr(href) ")"; + } + */ + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { + content: ""; + } + + pre, blockquote { + /* BBF: this doesn't look nice + border: 1px solid #999; */ + padding-right: 1em; + page-break-inside: avoid; + } + + tr, img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + @page :left { + margin: 15mm 20mm 15mm 10mm; + } + + @page :right { + margin: 15mm 10mm 15mm 20mm; + } + + p, h2, h3 { + orphans: 3; + widows: 3; + } + + h2, h3 { + page-break-after: avoid; + } + + /* page break control is a BBF addition */ + .annex1, .appendix1, .new-page { + page-break-before: always; + } +} diff --git a/docs/github.css b/docs/github.css new file mode 100644 index 0000000..c400a52 --- /dev/null +++ b/docs/github.css @@ -0,0 +1,685 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,700");html { + font-family + : + sans-serif + ; + -ms-text-size-adjust + : + 100% + ; + -webkit-text-size-adjust + : + 100% +} +body { + margin : 0 +} +article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary { + display : block +} +audio,canvas,progress,video { + display : inline-block; + vertical-align : baseline +} +audio:not([controls]) { + display : none; + height : 0 +} +[hidden] +, +template { + display : none +} +a { + background-color : transparent +} +a:active,a:hover { + outline : 0 +} +abbr[title] { + border-bottom : 1px dotted +} +b,strong { + font-weight : bold +} +dfn { + font-style : italic +} +h1 { + font-size : 2em; + margin : 0.67em 0 +} +mark { + background : #ff0; + color : #000 +} +small { + font-size : 80% +} +sub,sup { + font-size : 75%; + line-height : 0; + position : relative; + vertical-align : baseline +} +sup { + top : -0.5em +} +sub { + bottom : -0.25em +} +img { + border : 0 +} +svg:not(:root) { + overflow : hidden +} +figure { + margin : 1em 40px +} +hr { + box-sizing : content-box; + height : 0 +} +pre { + overflow : auto +} +code,kbd,pre,samp { + font-family : monospace, monospace; + font-size : 1em +} +button,input,optgroup,select,textarea { + color : inherit; + font : inherit; + margin : 0 +} +button { + overflow : visible +} +button,select { + text-transform : none +} +button,html input[type="button"],input[type="reset"],input[type="submit"] { + -webkit-appearance : button; + cursor : pointer +} +button[disabled],html input[disabled] { + cursor : default +} +button::-moz-focus-inner,input::-moz-focus-inner { + border : 0; + padding : 0 +} +input { + line-height : normal +} +input[type="checkbox"],input[type="radio"] { + box-sizing : border-box; + padding : 0 +} +input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button { + height : auto +} +input[type="search"] { + -webkit-appearance : textfield; + box-sizing : content-box +} +input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration { + -webkit-appearance : none +} +fieldset { + border : 1px solid #c0c0c0; + margin : 0 2px; + padding : 0.35em 0.625em 0.75em +} +legend { + border : 0; + padding : 0 +} +textarea { + overflow : auto +} +optgroup { + font-weight : bold +} +table { + border-collapse : collapse; + border-spacing : 0 +} +td,th { + padding : 0 +} +.highlight table td { + padding : 5px +} +.highlight table pre { + margin : 0 +} +.highlight .cm { + color : #999988; + font-style : italic +} +.highlight .cp { + color : #999999; + font-weight : bold +} +.highlight .c1 { + color : #999988; + font-style : italic +} +.highlight .cs { + color : #999999; + font-weight : bold; + font-style : italic +} +.highlight .c,.highlight .cd { + color : #999988; + font-style : italic +} +.highlight .err { + color : #a61717; + background-color : #e3d2d2 +} +.highlight .gd { + color : #000000; + background-color : #ffdddd +} +.highlight .ge { + color : #000000; + font-style : italic +} +.highlight .gr { + color : #aa0000 +} +.highlight .gh { + color : #999999 +} +.highlight .gi { + color : #000000; + background-color : #ddffdd +} +.highlight .go { + color : #888888 +} +.highlight .gp { + color : #555555 +} +.highlight .gs { + font-weight : bold +} +.highlight .gu { + color : #aaaaaa +} +.highlight .gt { + color : #aa0000 +} +.highlight .kc { + color : #000000; + font-weight : bold +} +.highlight .kd { + color : #000000; + font-weight : bold +} +.highlight .kn { + color : #000000; + font-weight : bold +} +.highlight .kp { + color : #000000; + font-weight : bold +} +.highlight .kr { + color : #000000; + font-weight : bold +} +.highlight .kt { + color : #445588; + font-weight : bold +} +.highlight .k,.highlight .kv { + color : #000000; + font-weight : bold +} +.highlight .mf { + color : #009999 +} +.highlight .mh { + color : #009999 +} +.highlight .il { + color : #009999 +} +.highlight .mi { + color : #009999 +} +.highlight .mo { + color : #009999 +} +.highlight .m,.highlight .mb,.highlight .mx { + color : #009999 +} +.highlight .sb { + color : #d14 +} +.highlight .sc { + color : #d14 +} +.highlight .sd { + color : #d14 +} +.highlight .s2 { + color : #d14 +} +.highlight .se { + color : #d14 +} +.highlight .sh { + color : #d14 +} +.highlight .si { + color : #d14 +} +.highlight .sx { + color : #d14 +} +.highlight .sr { + color : #009926 +} +.highlight .s1 { + color : #d14 +} +.highlight .ss { + color : #990073 +} +.highlight .s { + color : #d14 +} +.highlight .na { + color : #008080 +} +.highlight .bp { + color : #999999 +} +.highlight .nb { + color : #0086B3 +} +.highlight .nc { + color : #445588; + font-weight : bold +} +.highlight .no { + color : #008080 +} +.highlight .nd { + color : #3c5d5d; + font-weight : bold +} +.highlight .ni { + color : #800080 +} +.highlight .ne { + color : #990000; + font-weight : bold +} +.highlight .nf { + color : #990000; + font-weight : bold +} +.highlight .nl { + color : #990000; + font-weight : bold +} +.highlight .nn { + color : #555555 +} +.highlight .nt { + color : #000080 +} +.highlight .vc { + color : #008080 +} +.highlight .vg { + color : #008080 +} +.highlight .vi { + color : #008080 +} +.highlight .nv { + color : #008080 +} +.highlight .ow { + color : #000000; + font-weight : bold +} +.highlight .o { + color : #000000; + font-weight : bold +} +.highlight .w { + color : #bbbbbb +} +.highlight { + background-color : #f8f8f8 +} +* { + box-sizing : border-box +} +body { + padding : 0; + margin : 0; + font-family : "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size : 16px; + line-height : 1.5; + color : #606c71 +} +a { + color : #1e6bb8; + text-decoration : none +} +a:hover { + text-decoration : underline +} +.btn { + display : inline-block; + margin-bottom : 1rem; + color : rgba(255,255,255,0.7); + background-color : rgba(255,255,255,0.08); + border-color : rgba(255,255,255,0.2); + border-style : solid; + border-width : 1px; + border-radius : 0.3rem; + transition : color 0.2s, background-color 0.2s, border-color 0.2s +} +.btn:hover { + color : rgba(255,255,255,0.8); + text-decoration : none; + background-color : rgba(255,255,255,0.2); + border-color : rgba(255,255,255,0.3) +} +.btn+.btn { + margin-left : 1rem +} +@media screen and (min-width: 64em) { + .btn { + padding : 0.75rem 1rem + } +} +@media screen and (min-width: 42em) and (max-width: 64em) { + .btn { + padding : 0.6rem 0.9rem; + font-size : 0.9rem + } +} +@media screen and (max-width: 42em) { + .btn { + display : block; + width : 100%; + padding : 0.75rem; + font-size : 0.9rem + } + .btn+.btn { + margin-top : 1rem; + margin-left : 0 + } +} +.page-header { + color : #fff; + text-align : center; + background-color : #159957; + background-image : linear-gradient(120deg, #155799, #159957) +} +@media screen and (min-width: 64em) { + .page-header { + /* padding : 5rem 6rem */ + padding-top : 2.0rem; + padding-right : 1.0rem; + padding-bottom : 1.0rem; + padding-left : 1.0rem; + } +} +@media screen and (min-width: 42em) and (max-width: 64em) { + .page-header { + /* padding : 3rem 4rem */ + padding-top : 2.0rem; + padding-right : 1.0rem; + padding-bottom : 1.0rem; + padding-left : 1.0rem; + } +} +@media screen and (max-width: 42em) { + .page-header { + /* padding : 2rem 1rem */ + padding-top : 2.0rem; + padding-right : 1.0rem; + padding-bottom : 1.0rem; + padding-left : 1.0rem; + } +} +.project-name { + margin-top : 0; + margin-bottom : 0.1rem +} +@media screen and (min-width: 64em) { + .project-name { + font-size : 3.25rem + } +} +@media screen and (min-width: 42em) and (max-width: 64em) { + .project-name { + font-size : 2.25rem + } +} +@media screen and (max-width: 42em) { + .project-name { + font-size : 1.75rem + } +} +.project-tagline { + margin-bottom : 2rem; + font-weight : normal; + opacity : 0.7 +} +@media screen and (min-width: 64em) { + .project-tagline { + font-size : 1.25rem + } +} +@media screen and (min-width: 42em) and (max-width: 64em) { + .project-tagline { + font-size : 1.15rem + } +} +@media screen and (max-width: 42em) { + .project-tagline { + font-size : 1rem + } +} +.main-content { + word-wrap : break-word +} +.main-content :first-child { + margin-top : 0 +} +@media screen and (min-width: 64em) { + .main-content { + max-width : 64rem; + padding : 2rem 6rem; + margin : 0 auto; + font-size : 1.1rem + } +} +@media screen and (min-width: 42em) and (max-width: 64em) { + .main-content { + padding : 2rem 4rem; + font-size : 1.1rem + } +} +@media screen and (max-width: 42em) { + .main-content { + padding : 2rem 1rem; + font-size : 1rem + } +} +.main-content img { + max-width : 100% +} +.main-content h1,.main-content h2,.main-content h3,.main-content h4,.main-content h5,.main-content h6 { + margin-top : 2rem; + margin-bottom : 1rem; + font-weight : normal; + color : #159957 +} +.main-content p { + margin-bottom : 1em +} +.main-content code { + padding : 2px 4px; + font-family : Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size : 0.9rem; + color : #567482; + background-color : #f3f6fa; + border-radius : 0.3rem +} +.main-content pre { + padding : 0.8rem; + margin-top : 0; + margin-bottom : 1rem; + font : 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace; + color : #567482; + word-wrap : normal; + background-color : #f3f6fa; + border : solid 1px #dce6f0; + border-radius : 0.3rem +} +.main-content pre>code { + padding : 0; + margin : 0; + font-size : 0.9rem; + color : #567482; + word-break : normal; + white-space : pre; + background : transparent; + border : 0 +} +.main-content .highlight { + margin-bottom : 1rem +} +.main-content .highlight pre { + margin-bottom : 0; + word-break : normal +} +.main-content .highlight pre,.main-content pre { + padding : 0.8rem; + overflow : auto; + font-size : 0.9rem; + line-height : 1.45; + border-radius : 0.3rem; + -webkit-overflow-scrolling: touch +} +.main-content pre code,.main-content pre tt { + display : inline; + max-width : initial; + padding : 0; + margin : 0; + overflow : initial; + line-height : inherit; + word-wrap : normal; + background-color : transparent; + border : 0 +} +.main-content pre code:before,.main-content pre code:after,.main-content pre tt:before,.main-content pre tt:after { + content : normal +} +.main-content ul,.main-content ol { + margin-top : 0 +} +.main-content blockquote { + padding : 0 1rem; + margin-left : 0; + color : #819198; + border-left : 0.3rem solid #dce6f0 +} +.main-content blockquote>:first-child { + margin-top : 0 +} +.main-content blockquote>:last-child { + margin-bottom : 0 +} +.main-content table { + display : block; + width : 100%; + overflow : auto; + word-break : normal; + word-break : keep-all; + -webkit-overflow-scrolling: touch +} +.main-content table th { + font-weight : bold +} +.main-content table th,.main-content table td { + padding : 0.5rem 1rem; + border : 1px solid #e9ebec +} +.main-content dl { + padding : 0 +} +.main-content dl dt { + padding : 0; + margin-top : 1rem; + font-size : 1rem; + font-weight : bold +} +.main-content dl dd { + padding : 0; + margin-bottom : 1rem +} +.main-content hr { + height : 2px; + padding : 0; + margin : 1rem 0; + background-color : #eff0f1; + border : 0 +} +.site-footer { + padding-top : 2rem; + margin-top : 2rem; + border-top : solid 1px #eff0f1 +} +@media screen and (min-width: 64em) { + .site-footer { + font-size : 1rem + } +} +@media screen and (min-width: 42em) and (max-width: 64em) { + .site-footer { + font-size : 1rem + } +} +@media screen and (max-width: 42em) { + .site-footer { + font-size : 0.9rem + } +} +.site-footer-owner { + display : block; + font-weight : bold +} +.site-footer-credits { + color : #819198 +} +a.button { + background : -webkit-linear-gradient(top, #8dc26f, #76b852); + padding : 2ex; + margin : 1ex; + color : white; + text-decoration : none +} +section.main-content { + max-width : 80rem +} +section.page-header { + background-color : #79c041; + background-image : linear-gradient(120deg, #333, #333) +} diff --git a/specification/figure-1.png b/docs/images/figure-1.png similarity index 100% rename from specification/figure-1.png rename to docs/images/figure-1.png diff --git a/specification/figure-2.png b/docs/images/figure-2.png similarity index 100% rename from specification/figure-2.png rename to docs/images/figure-2.png diff --git a/specification/figure-3.png b/docs/images/figure-3.png similarity index 100% rename from specification/figure-3.png rename to docs/images/figure-3.png diff --git a/specification/figure-4.png b/docs/images/figure-4.png similarity index 100% rename from specification/figure-4.png rename to docs/images/figure-4.png diff --git a/docs/index.htf b/docs/index.htf new file mode 100644 index 0000000..a9660c2 --- /dev/null +++ b/docs/index.htf @@ -0,0 +1,4132 @@ + + +

List of Tables

+ +
    +
  1. XML Description Markup
  2. +
  3. XML Description Templates
  4. +
  5. XML Named Data Types
  6. +
  7. XML Data Type Facets
  8. +
  9. Path Name Scope Definition
  10. +
  11. PathRef Facet Definition
  12. +
  13. InstanceRef Facet Definition
  14. +
  15. EnumerationRef Facet Definition
  16. +
  17. XML Facet Inheritance Rules
  18. +
  19. XML Glossary Items
  20. +
  21. XML Abbreviation Items
  22. +
  23. XML Bibliographic References
  24. +
  25. XML Template Elements
  26. +
  27. XML Component Definition
  28. +
  29. XML Root and Service Objects
  30. +
  31. XML Parameter Definition
  32. +
  33. XML Parameter Syntax
  34. +
  35. XML Command Definition
  36. +
  37. XML Command Input / Output Arguments Definition
  38. +
  39. XML Object Definition
  40. +
  41. XML Table Definition
  42. +
  43. XML Profile Definition
  44. +
  45. XML Parameter Modification
  46. +
  47. XML Command Modification
  48. +
  49. XML Event Modification
  50. +
  51. XML Object Modification
  52. +
  53. XML Profile Modification
  54. +
  55. XML Description Modification
  56. +
+ +

List of Figures

+ +
    +
  1. CWMP Positioning in the End-to-End Architecture
  2. +
  3. USP Architecture Overview
  4. +
  5. Specification Structure
  6. +
+ +

Notice

+ +

The Broadband Forum is a non-profit corporation organized to create guidelines +for broadband network system development and deployment. This Technical Report +has been approved by members of the Forum. This Technical Report is subject to +change. This Technical Report is owned and copyrighted by the Broadband Forum, +and all rights are reserved. Portions of this Technical Report may be owned +and/or copyrighted by Broadband Forum members.

+ +

Intellectual Property

+ +

Recipients of this Technical Report are requested to submit, with their +comments, notification of any relevant patent claims or other intellectual +property rights of which they may be aware that might be infringed by any +implementation of this Technical Report, or use of any software code +normatively referenced in this Technical Report, and to provide supporting +documentation.

+ +

Terms of Use

+ +

1. License

+ +

Broadband Forum hereby grants you the right, without charge, on a perpetual, +non-exclusive and worldwide basis, to utilize the Technical Report for the +purpose of developing, making, having made, using, marketing, importing, +offering to sell or license, and selling or licensing, and to otherwise +distribute, products complying with the Technical Report, in all cases subject +to the conditions set forth in this notice and any relevant patent and other +intellectual property rights of third parties (which may include members of +Broadband Forum). This license grant does not include the right to sublicense, +modify or create derivative works based upon the Technical Report except to the +extent this Technical Report includes text implementable in computer code, in +which case your right under this License to create and modify derivative works +is limited to modifying and creating derivative works of such code. For the +avoidance of doubt, except as qualified by the preceding sentence, products +implementing this Technical Report are not deemed to be derivative works of the +Technical Report.

+ +

2. NO WARRANTIES

+ +

THIS TECHNICAL REPORT IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN +PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT AND ANY IMPLIED WARRANTIES ARE +EXPRESSLY DISCLAIMED. ANY USE OF THIS TECHNICAL REPORT SHALL BE MADE ENTIRELY +AT THE USER’S OR IMPLEMENTER’S OWN RISK, AND NEITHER THE BROADBAND FORUM, NOR +ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY +USER, IMPLEMENTER, OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, +DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS TECHNICAL REPORT, +INCLUDING BUT NOT LIMITED TO, ANY CONSEQUENTIAL, SPECIAL, PUNITIVE, INCIDENTAL, +AND INDIRECT DAMAGES.

+ +

3. THIRD PARTY RIGHTS

+ +

Without limiting the generality of Section 2 above, BROADBAND FORUM ASSUMES NO +RESPONSIBILITY TO COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY +ASSERTIONS OF PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN +THE FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE TECHNICAL REPORT IN ITS +CURRENT, OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE +TECHNICAL REPORT, BROADBAND FORUM TAKES NO POSITION AS TO THE VALIDITY OR +INVALIDITY OF SUCH ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE +MADE ARE SO LISTED.

+ +

All copies of this Technical Report (or any portion hereof) must include the +notices, legends, and other provisions set forth on this page.

+ +

Issue History

+ +
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Issue NumberApproval DatePublication DateIssue EditorChanges
Issue 1September 2005Jeff Bernstein, 2Wire
Christele Bouchat, Alcatel
Tim Spets, Westell
Original
Issue 1 Amendment 1November 2006Jeff Bernstein, 2Wire
John Blackford, 2Wire
Mike Digdon, SupportSoft
Heather Kirksey, Motive
William Lupton, 2Wire
Anton Okmianski, Cisco
Clarification of original document
Issue 1 Amendment 2November 2008William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of data model definition XML Schema and normative XML common object and component definitions
Issue 1 Amendment 3September 2009William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of device type XML Schema
Issue 1 Amendment 4February 2010William Lupton, 2Wire
Paul Sigurdson, Broadband Forum
Moved data model definitions to TR-181 Issue 1
Issue 1 Amendment 5November 2010Paul Sigurdson, Broadband ForumReplaced definitions of named data types such as IPAddress with +references to normative XML.
Minor changes to DM Schema (v1.3) and DT Schema (v1.1).
Issue 1 Amendment 6July 2011Sarah Banks, Cisco
Andrea Colmegna, FASTWEB
Tim Spets, Motorola Mobility
Removed definition of proxying, now defined in TR-069.
Removed Common objects.
Alias Parameter Requirements added.
Issue 1 Amendment 7September 20137 October 2013William Lupton, CiscoAdded descriptions of new features in DM Schema (v1.4 & v1.5) and DT +Schema (v1.2 & v1.3).
Added Annex defining additional requirements for BBF standard data +models.
Issue 1 Amendment 816 March 201810 May 2018Jean-Didier Ott, Orange
William Lupton, Broadband Forum
Added support of USP (mountable objects).
Removed references to obsolete data models.
Moved device requirements to TR-069.
Issue 1 Amendment 9Schema updates; document not updated.
Issue 1 Amendment 105 November 20205 November 2020William Lupton, Broadband ForumConverted document to markdown.
Various editorial improvements.
+ +

Comments or questions about this Broadband Forum Technical Report should be +directed to info@broadband-forum.org.

+ +
+
+ +

Editors

+ +
+

William Lupton, Broadband Forum

+ +
+
+ +

Broadband User Services Work Area Director(s)

+ +
+

Jason Walls, QA Cafe
John Blackford, CommScope

+ +
+
+ +
+
+ +
+
+ +
+
+ +

Executive Summary

+ +

TR-106 specifies data model guidelines to be followed by all CWMP [1] +Endpoints and USP [2] Agents. These guidelines include structural +requirements for the data hierarchy, requirements for versioning of data +models, and requirements for defining profiles.

+ +

In addition, TR-106 defines an XML Schema that as far as possible +embodies these guidelines, and which is used for defining all CWMP and +USP data models. This makes data model definitions rigorous, and helps +to reduce the danger that different implementations will interpret data +model definitions in different ways.

+ +

TR-106 also defines an XML Schema that allows a device to describe its +supported CWMP data models. This description is both specific and +detailed, allowing a Controller to know exactly what is supported by the +device, including any vendor-specific objects and parameters. Use of +this Schema enhances interoperability and significantly eases the +integration of new devices with a Controller. USP uses a different +mechanism (GetSupportedDM message) for the same purpose. That mechanism +is specified in TR-369 [2].

+ +
+

Important warning

+ +

The InternetGatewayDevice:1 (TR-098) and Device:1 (TR-181 Issue 1) Root +Data Models are now DEPRECATED and any reference to elements specific to +those models have been removed from this document.

+ +

The last revision of TR-106 to be used with those models is TR-106 +Amendment 7.

+ +

TR-157 data models Components have been incorporated into Device:2.12. +TR-157 is therefore also DEPRECATED.

+ +

1 Introduction

+ +

CWMP

+ +

TR-069 [1] defines the generic requirements of the CPE WAN Management +Protocol (CWMP) methods which can be applied to any CWMP Endpoint. It is +intended to support a variety of different functionalities to manage a +collection of CPE, including the following primary capabilities:

+ +
    +
  • Auto-configuration and dynamic service provisioning

  • +
  • Software/firmware image management

  • +
  • Status and performance monitoring

  • +
  • Diagnostics

  • +
+ +

The ability to manage the home network remotely has a number of benefits +including reducing the costs associated with activation and support of +broadband services, improving time-to-market for new products and +services, and improving the user experience.

+ +

The following figure places TR-069 in the end-to-end management +architecture:

+ +
+ +
Figure 1: CWMP Positioning in the End-to-End Architecture
+
+ +

The ACS is a server that resides in the network and manages devices in +the subscriber premises. It uses the methods, or RPCs, defined in TR-069 +to get and set the state of the device, initiate diagnostic tests, +download and upload files, and manage events. Some portions of this +state are common across managed devices and some are relevant only to +certain device types or services.

+ +

USP

+ +

The User Services Platform is made of a network +of USP Controllers and USP Agents to allow applications to manipulate +service elements (i.e. objects). It represents the evolution of CWMP +into the following use cases:

+ +
    +
  • Improvements on TR-069 based on deployment experience

  • +
  • Multi-tenant management of a given endpoint (that is, manipulation +by multiple controllers)

  • +
  • Application to additional market spaces, including consumer +electronics and the Internet of Things

  • +
+ +

An agent exposes service elements to one or more controllers, either +directly or by proxy. An application could use a Controller to manage a +provider controlled system, as in a CWMP ACS, or to act as a user portal +in the cloud, on a gateway, or accessed through a smart phone. Agents +and controllers can also be used in tandem to create a peer-to-peer +network of smart applications, such as an automated smart home.

+ +
+ +
Figure 2: USP Architecture Overview
+
+ +

USP was designed in a modular manner, and can make use of the CWMP data +model and data model schema in order to represent an evolution of CWMP +into the world of consumer electronics, virtual services, and the +Internet of Things. As such, this document describes how to use the data +model schema in both the context of CWMP and USP.

+ +

Specification Structure

+ +

Figure 3 shows the overall specification structure for the CWMP [1] and +USP [2] family of standards (as currently defined). Please note that +this will gradually become out of date as new documents are published.

+ +
+ +
Figure 3: Specification Structure
+
+ +

TR-069 [1] defines the generic requirements of the CWMP methods which +can be applied to any CWMP Endpoint. TR-369 [2] does the same for USP +Agents. TR-106 (this document) specifies a baseline object structure to +be supported by any CWMP Endpoint or USP Agent (referred to generically +as an Agent). It specifies how to structure and define data models, +which are collections of objects and parameters on which the generic +methods act to configure, diagnose, and monitor the state of specific +devices and services. The actual data models are defined in their own +specifications.

+ +

For a particular type of device, it is expected that the baseline +defined in a document such as TR-181i2 [3] would be augmented with +additional objects and parameters specific to the device type. The data +model used in any Agent MUST follow the guidelines described in this +document. These guidelines include the following aspects:

+ +
    +
  • Structural requirements for the data hierarchy

  • +
  • Requirements for versioning of data models

  • +
  • Requirements for defining profiles

  • +
+ +

In addition, this document defines two XML Schemas:

+ +
    +
  • An XML Schema that as far as possible embodies these guidelines, and +which is used for defining all CWMP and USP data models. This makes +data model definitions rigorous, and helps to reduce the danger that +different implementations will interpret data model definitions in +different ways.

  • +
  • An XML Schema that allows a device to describe its supported CWMP +data models. This description is both specific and detailed, +allowing an ACS to know exactly what is supported by the CPE, +including any vendor-specific objects and parameters. Use of this +Schema enhances interoperability and significantly eases the +integration of new devices with an ACS.

    + +

    Please note that USP uses a different mechanism (GetSupportedDM +message) for the same purpose. It is specified in TR-369 [2].

  • +
+ +

1.1 Terminology

+ +

The following terminology is used throughout this Technical Report.

+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ACSAuto-Configuration Server. This is a component in the broadband network responsible for CWMP auto-configuration of the CPE for advanced services.
AgentA generic term that refers (as appropriate) to either a CWMP Endpoint or to a USP Agent.
BBFThe Broadband Forum.
Base Supported Data ModelThe Data Model that is supported by all CPE of a given make, model and firmware version. This refers to the Objects, Parameters, Commands and/or Events that have code support in the current firmware.
CPECustomer Premises Equipment; refers (as appropriate) to any CWMP-enabled [1] or USP-enabled [2] device and therefore covers both Internet Gateway devices and LAN-side end devices.
CommandA named element allowing a USP Controller to execute an operation on a USP Agent. This concept does not apply to CWMP, which uses Objects and/or Parameters to simulate operations.
ComponentA named collection of Objects, Parameters, Commands, Events and/or Profiles that can be included anywhere within a Data Model.
ControllerA generic term that refers (as appropriate) to either a CWMP ACS or a USP Controller.
Current Supported Data ModelThe Data Model that is currently supported by an individual CPE, i.e. the Base Supported Data Model plus any additional Objects, Parameters, Commands and/or Events supported by extra modules that have been installed on the CPE. This refers to the Objects, Parameters, Commands and/or Events that have code support in the CPE.
CWMPCPE WAN Management Protocol. Defined in TR-069 [1], CWMP is a communication protocol between an ACS and CWMP-enabled CPE that defines a mechanism for secure auto-configuration of a CPE and other CPE management functions in a common framework.
CWMP EndpointA CWMP termination point used by a CWMP-enabled CPE for communication with the ACS.
Data ModelA hierarchical set of Objects, Parameters, Commands and/or Events that define the managed Objects accessible via a particular Agent.
DeviceUsed here as a synonym for CPE.
DM InstanceData Model Schema instance document. This is an XML document that conforms to the DM Schema and to any additional rules specified in or referenced by the DM Schema.
DM SchemaData Model Schema. This is the XML Schema [4] that is used for defining data models for use with CWMP and USP.
DT InstanceDevice Type Schema instance document. This is an XML document that conforms to the DT Schema and to any additional rules specified in or referenced by the DT Schema. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).
DT SchemaDevice Type Schema. This is the XML Schema [4] that is used for describing a Device’s Supported Data Model. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).
EventAn indication that something of interest has happened that requires the Agent to notify the Controller.
Instantiated Data ModelThe Data Model that currently exists on an individual CPE. This refers to the Object instances, Parameters, Commands and/or Events that currently exist within the data model. It can be thought of as the Current Supported Data Model with all the “{i}” placeholders expanded to be the actual Instance Numbers. For example, “Device.Services.ABCService.{i}.” in the Current Supported Data Model might correspond to “Device.Services.ABCService.1.” and “Device.Services.ABCService.2.” in the Instantiated Data Model.
Instance AliasA writeable string that uniquely identifies an instance within a Multi-Instance Object
Instance IdentifierA value that uniquely identifies an instance within a Multi-Instance Object. It is either an Instance Number or an Instance Alias.
Instance NumberA read-only positive integer (>=1) that uniquely identifies an instance within a Multi-Instance Object.
Mountable ObjectAn Object that is defined in a DM Instance as a direct child of the Root Object, but that can also exist as a child of a Mount Point in the Instantiated Data Model of a USP Agent. This concept does not apply to CWMP.
Mount PointAn Object that is defined in a DM Instance as being able to have Mountable Objects as children in the Instantiated Data Model of a USP Agent. By extension, one of the instances of that object in the Instantiated Data Model. This concept does not apply to CWMP.
Multi-Instance ObjectAn Object that can have multiple instances, all of which are located at the same level within the name hierarchy. Each instance is identified by an Instance Identifier.
ObjectAn internal node in the name hierarchy, i.e., a node that can have Object, Parameter, Command and/or Event children. An Object name is a Path Name.
ParameterA name-value pair that represents part of a CPE or USP Agent’s configuration or status. A Parameter name is a Path Name.
Path NameA name that has a hierarchical structure similar to files in a directory, with each level separated by a “.” (dot). References an Object, Parameter, Command or Event.
ProfileA named collection of requirements relating to a given Root Object, Service Object or Component.
RPCRemote Procedure Call.
Root ObjectThe top-level Object of a CPE’s Data Model that contains all of the manageable Objects. The name of the Root Object is “Device.”.
Service ElementA Service Element represents a piece of service functionality that is exposed by an Agent, usually represented by one or more Objects.
Service ObjectThe top-most Object associated with a specific service within which all Objects, Parameters, Commands and Events associated with the service are contained.
Supported Data ModelRefers to either Base Supported Data Model or Current Supported Data Model, depending on the context.
URIUniform Resource Identifier.
URLUniform Resource Locator.
USPUniversal Service Platform. Defined in TR-369, USP is an evolution of CWMP that allows applications to manipulate Service Elements in a network of Controllers and Agents.
USP AgentA USP Agent is a USP Endpoint that exposes Service Elements to one or more USP Controllers.
USP ControllerA USP Controller is a USP Endpoint that manipulates Service Elements through one or more USP Agents.
USP EndpointA USP Endpoint is a termination point for a USP message.
+ +

1.2 Document Conventions

+ +

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL +NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and +“OPTIONAL” in this document are to be interpreted as described in [5].

+ +

2 Architecture

+ +

All elements described hereunder apply to both CWMP and USP, unless +specifically mentioned otherwise.

+ +

2.1 Data Hierarchy

+ +

The data model for a Agent will follow a common set of structural +requirements. The detailed structure depends on the nature of the Agent.

+ +

An Agent’s data model will always have a single Root Object, which will +be called “Device.”.

+ +

The Root Object contains three types of sub-elements: the Objects +defined in TR-181i2 [3], Components defined in TR-181i2 or other +specifications such as TR-143 [6], and a single “Services” object that +contains all Service Objects associated with specific services.

+ +

A single Agent might include more than one Service Object. For example, +a device that serves both as a VoIP endpoint and a game device, might +include both VoIP-specific and game-specific Service Objects.

+ +

A single Agent might also include more than one instance of the same +type of Service Object. An example of when this might be appropriate is +an Agent that provides an instance of the TR-140 [7] StorageService +for each of the device’s attached disks.

+ +

2.1.1 Data Hierarchy Requirements

+ +

A CWMP or USP data model MUST adhere to the following structural +requirements:

+ +
    +
  1. A root data model definition MUST contain exactly one Root Object, +called “Device.”.

  2. +
  3. A Root Object definition MUST contain exactly one “Services.” +object.

  4. +
  5. A service data model definition MUST define an object hierarchy that +starts just under the “Device.Services.” object.

  6. +
  7. For each Multi-Instance Object defined, a data model MUST also +define a corresponding parameter indicating the number of instances +of the Multi-Instance Object. The name of this parameter MUST be the +name of the object concatenated with “NumberOfEntries”. This +parameter MUST appear in the same object as the Multi-Instance +Object it is related to.

  8. +
+ +

Formally, the top level of the data hierarchy is defined as follows:

+ +
    Element = "Device"
+            | "Device." TR-181DeviceObject
+            | "Device.Services." ServiceObject "NumberOfEntries"
+            | "Device.Services." ServiceObject ".{i}"
+
+    TR-181DeviceObject = // As defined in TR-181i2, e.g. "UserInterface" or "ManagementServer"
+
+    ServiceObject = // As defined in other specs, e.g. TR-140
+ +

2.1.2 The Supported Data Model and the Instantiated Data Model

+ +

There is a distinction between an Agent’s Supported Data Model and its +Instantiated Data Model.

+ +
    +
  • The Supported Data Model is those Objects and/or Parameters that +have code support in the Agent.

  • +
  • The Instantiated Data Model is those Object instances and/or +Parameters that currently exist.

  • +
+ +

TR-181i2 [3] defines a SupportedDataModel Object that allows an Agent +to indicate its Supported Data Model to a Controller, which assists the +Controller in managing that device.

+ +

The SupportedDataModel object has the following properties:

+ +
    +
  1. It contains a list of URLs, each of which allows the Controller to +determine details of part of the Supported Data Model.

  2. +
  3. When the Supported Data Model changes, e.g. because software is +loaded or unloaded, entries are added to or removed from this list +of URLs.

  4. +
+ +

This object is not used with USP. TR-369 [2] defines the +GetSupportedDM message to provide this information.

+ +

2.2 Object Versioning

+ +

To allow the definition of a Service Object or Root Object to change +over time, the definition of a Service Object or Root Object MUST have +an explicitly specified version.

+ +

Version numbering of Service Objects and Root Objects is defined to use +a major/minor version numbering convention. The object version is +defined as a pair of integers, where one integer represents the major +version, and the second integer represents the minor version. The +version MUST be written with the two integers separated by a dot +(Major.Minor).

+ +

The first version of a given object SHOULD be defined as version “1.0”.

+ +

For each subsequent version of the object, if the later version is +compatible with the previous version, then the major version SHOULD +remain unchanged, and the minor version SHOULD be incremented by one. +For example, the next compatible version after “2.17” would be “2.18”. +The requirements for a version to be considered compatible with an +earlier version are described in Section 2.2.1.

+ +

For each subsequent version of the object, if the later version is not +compatible with the previous version, then the major version MUST +increment by one, and the minor version MAY reset back to zero. For +example, the next incompatible version after “2.17” might be “3.0”.

+ +

2.2.1 Requirements for Compatible Versions

+ +

For one version of an object to be considered compatible with another +version, the later version MUST be a strict superset of the earlier +version. Using major/minor versioning, this requirement applies only +between minor versions that share the same major version.

+ +

More specifically, this requires the following of the later version with +respect to all earlier versions to which it is to be compatible:

+ +
    +
  • The later version MAY add objects and parameters not previously in +any earlier version, but MUST NOT remove objects or parameters +already defined in earlier versions.

  • +
  • The later version MUST NOT modify the definition of any parameter or +object already defined in an earlier version (unless the original +definition was clearly in error and has to be modified as an erratum +or clarified through a corrigendum process).

  • +
  • The later version MUST NOT require any of the objects or parameters +that have been added since the earliest compatible version to be +explicitly operated upon by the Controller to ensure proper +operation of the device (except those functions specifically +associated with functionality added in later versions). That is, the +later version will accommodate a Controller that knows nothing of +elements added in later versions.

  • +
+ +

The goal of the above definition of compatibility is intended to ensure +bi-directional compatibility between a Controller and Agent. +Specifically that:

+ +
    +
  • If a Controller supports only an earlier version of an object as +compared to the version supported by the Agent, the Controller can +successfully manage that object in the Agent as if it were the +earlier version.

  • +
  • If an Agent supports only an earlier version of an object as +compared to the version supported by a Controller, the Controller +can successfully manage that object in the Agent as if it were the +later version (without support for new components defined only in +later versions).

  • +
+ +

2.2.2 Version Notation

+ +

For objects, the following notation is defined to identify specific +versions:

+ + ++++ + + + + + + + + + + + + + + + + + + + +
NotationDescriptionExample
ObjectName:Major.MinorRefers to a specific +version of the object.Device:2.0
ObjectName:MajorRefers to any minor version +of the object with the specified +major version.Device:2
ObjectNameRefers to any version of the object.Device
+ +

Note that the version notation defined here is only to be used for +purposes of documentation. The actual names of objects and parameters in +the data model MUST NOT include version numbers.

+ +

2.3 Profiles

+ +

Note: Originally, profiles were seen as a means of limiting the +variability that a Controller needs to accommodate among various devices +that it might manage. This feature is now provided:

+ +
    +
  • For CWMP, by the TR-181i2 [3] SupportedDataModel object (see +Section 2.1.2) and associated Device Type XML documents (DT +Instances).

  • +
  • For USP, by the TR-369 [2] GetSupportedDM message.

  • +
+ +

A profile is a named collection of requirements associated with a given +object. An Agent can adhere to zero or more profiles. Adherence to a +profile means that the Agent supports all of the requirements defined by +that profile. The use of profiles gives Service Providers a shorthand +means of specifying data model support requirements.

+ +

The following sections define the conventions to be used when defining +profiles associated with Data Models.

+ +

2.3.1 Scope of Profiles

+ +

A given profile is defined only in the context of a specific Service +Object or Root Object with a specific major version. For each profile +definition, the specific object name and major version to which the +profile is to apply MUST be explicitly identified.

+ +

A profile’s name MUST be unique among profiles defined for the same +object and major version, but a name MAY be reused to define a different +profile for a distinct combination of object name and major version. For +example, if we define profile “A” associated with object “X:2” (major +version 2 of object X), the same name “A” might be used to define a +different profile for object “Y:1” or for object “X:3”.

+ +

A given profile is defined in association with a minimum minor version +of a given object. The minimum REQUIRED version of an object is the +minimum version that includes all of the REQUIRED elements defined by +the profile. For each profile definition, the specific minimum version +MUST be explicitly identified.

+ +

2.3.2 Multiple Profile Support

+ +

For a given type of Service Object or Root Object, multiple profiles MAY +be defined. Profiles MAY be defined that have either independent or +overlapping requirements.

+ +

2.3.3 Profile Versions

+ +

To allow the definition of a profile to change over time, the definition +of every profile MUST have an associated version number.

+ +

Version numbering of profiles is defined to use a minor-only version +numbering convention. That is, for a given profile name, each successive +version MUST be compatible with all earlier versions. Any incompatible +change to a profile MUST use a different profile name.

+ +

For one version of a profile to be considered compatible with another +version, the later version MUST be a strict superset of the earlier +version. This requires the following of the later version with respect +to all earlier versions to which it is to be compatible:

+ +
    +
  • The later version MAY add requirements that were not in earlier +versions of the profile, but MUST NOT remove requirements.

  • +
  • The later version MAY remove one or more conditions that had +previously been placed on a requirement. For example, if a previous +profile REQUIRED X only if condition A was True, then the later +profile might require X unconditionally.

  • +
+ +

For profiles, the following notation is defined to identify specific +versions:

+ + ++++ + + + + + + + + + + + + + + +
NotationDescriptionExample
ProfileName:VersionRefers to a specific version of the +profile.Baseline:1
ProfileNameRefers to any version of the profile.Baseline
+ +

ProfileName MUST start with a letter or underscore, and subsequent +characters MUST be letters, digits, underscores or hyphens. The terms +“letter” and “digit” are as defined in the XML +specification [Appendix B/8].

+ +

Hyphens can easily be confused with the discretionary hyphens that are +sometimes inserted by hyphenation algorithms. For this reason, +ProfileName SHOULD NOT include any hyphens. In BBF standards, ProfileName will +always start with an upper-case letter (or an underscore for an internal profile) and will never include any +hyphens (see C.3.1 for the corresponding normative +requirement).

+ +

2.3.4 Baseline Profiles

+ +

For every Service Object (and Root Object) there SHOULD be at least one +profile defined. In many cases it is desirable to define a Baseline +profile that indicates the minimum requirements REQUIRED for any device +that supports that Object.

+ +

2.3.5 Types of Requirements in a Profile

+ +

Because a profile is defined within the context of a single Object (and +major version), all of the requirements associated with the profile MUST +be specific to the data model associated with that object.

+ +

Profile requirements can include any of the following types of +requirements associated with an Object’s data model:

+ +
    +
  • A requirement for read support of a Parameter.

  • +
  • A requirement for write support of a Parameter.

  • +
  • A requirement for support of a Command.

  • +
  • A requirement for support of a sub-Object contained within the +overall Object.

  • +
  • A requirement for the ability to add or remove instances of a +sub-Object.

  • +
  • A requirement to support active notification for a Parameter.

  • +
  • A requirement to support access control for a given Parameter.

  • +
+ +

For each of the requirement categories listed above, a profile can +define the requirement unconditionally, or can place one or more +conditions on the requirement. For example, a profile might require that +a Parameter be supported for reading only if the device supports some +other Parameter or Object (one that is not itself REQUIRED by the +profile). Such conditions will be directly related to the data model of +the overall object associated with the profile.

+ +

Because a device has to be able to support multiple profiles, all +profiles MUST be defined such that they are non-contradictory. As a +result, profiles MUST only define minimum requirements to be met, and +MUST NOT specify negative requirements. That is, profiles will not +include requirements that specify something that is not to be supported +by the device, or requirements that exclude a range of values.

+ +

2.4 DEPRECATED and OBSOLETED Items

+ +

The key word “DEPRECATED” in a data model definition is to be +interpreted as follows: This term refers to an object, parameter or +parameter value that is defined in the current version of the standard +but is meaningless, inappropriate, or otherwise unnecessary. It is +intended that such objects, parameters or parameter values will be +removed from the next major version of the data model. Requirements on +how to interpret or implement deprecated objects, parameters or +parameter values are given below. For more information on how to +interpret or implement specific deprecated objects, parameters or +parameter values, refer to the definition of the object or parameter.

+ +

The key word “OBSOLETED” in a data model definition is to be interpreted +as follows: This term refers to an object, parameter or parameter value +that meets the requirements for being deprecated, and in addition is +obsolete. Such objects, parameters or parameter values can be removed +from a later minor version of a data model, or from a later version of a +profile, without this being regarded as breaking backwards compatibility +rules. Requirements on how to interpret or implement obsoleted objects, +parameters or parameter values are given below. For more information on +how to interpret or implement specific obsoleted objects, parameters or +parameter values, refer to the definition of the object or parameter.

+ +

2.4.1 Requirements for DEPRECATED Items

+ +

This section defines requirements that apply to all DEPRECATED objects, +parameters and parameter values unless specifically overridden by the +object or parameter definition.

+ +

Data model requirements:

+ +
    +
  1. The definition of a DEPRECATED parameter, object or parameter value +MUST include an explanation of why the item is deprecated.

  2. +
  3. The definition of a DEPRECATED parameter, object or parameter value +MAY specify further requirements relating to the item; such +requirements MAY override general Agent or Controller requirements +regarding DEPRECATED elements specified in TR-069 [1] or TR-369 +[2].

  4. +
+ +

Agent requirements:

+ +
    +
  1. A DEPRECATED parameter MUST have a value which is valid for its data +type and fulfils any range (for numeric parameters), length (for +string, base64 or hexBinary parameters) and enumerated value (for +string parameters) requirements.

  2. +
  3. Detailed behavioral requirements for a DEPRECATED parameter, e.g. +that its value is a unique key, MAY be ignored by the Agent.

  4. +
  5. The Agent MUST, if such operations are permitted by the data model +definition, permit creation of DEPRECATED objects, modification of +DEPRECATED parameters, and setting of DEPRECATED parameter values. +However, it MAY choose not to apply such changes to its operational +state.

  6. +
  7. Regardless of whether DEPRECATED changes are applied to the Agent’s +operational state, a read of a DEPRECATED writable parameter SHOULD +return the value that was last written, i.e. the Agent is expected +to store the value even if it chooses not to apply it to its +operational state.

  8. +
  9. The Agent MAY reject an attempt by a Controller to set any parameter +to a DEPRECATED value.

  10. +
+ +

Controller requirements:

+ +
    +
  1. The Controller SHOULD NOT create DEPRECATED objects, modify +DEPRECATED parameters, or set DEPRECATED parameter values.

  2. +
  3. The Controller SHOULD ignore DEPRECATED objects, parameters and +parameter values.

  4. +
  5. The Controller SHOULD NOT set a DEPRECATED parameter to a value that +is invalid for its data type or fails to fulfill any range (for +numeric parameters), length (for string, base64 or hexBinary +parameters) or enumerated value (for string parameters) +requirements.

  6. +
  7. The Controller SHOULD NOT set any parameter to a DEPRECATED value.

  8. +
+ +

2.4.2 Requirements for OBSOLETED Items

+ +

This section defines requirements that apply to all OBSOLETED objects, +parameters or parameter values unless specifically overridden by the +object or parameter definition.

+ +

An OBSOLETED object, parameter or parameter value MUST meet all the +requirements of the previous section. In addition, the following +requirements apply.

+ +
    +
  1. An OBSOLETED object, parameter or parameter value MAY be removed +from a later minor version of a data model without this being +regarded as breaking backwards compatibility rules.

  2. +
  3. An OBSOLETED object, parameter or parameter value MUST NOT be +removed from the current version of a profile, but MAY be removed +from a later version of a profile without this being regarded as +breaking backwards compatibility rules.

  4. +
  5. A data model definition MUST include a list of those OBSOLETED +objects, parameters or parameter values that have been removed from +the data model or from its profiles. This is to prevent future +namespace conflicts.

  6. +
+ +

3 Object Definitions

+ +

3.1 General Notation

+ +

Parameter names use a hierarchical form similar to a directory tree. The +name of a particular Parameter is represented by the concatenation of +each successive node in the hierarchy separated with a “.” (dot), +starting at the trunk of the hierarchy and leading to the leaves. When +specifying a partial path, indicating an intermediate node in the +hierarchy, the trailing “.” (dot) is always used as the last character.

+ +

Parameter names MUST be treated as case sensitive. The name of each node +in the hierarchy MUST start with a letter or underscore, and subsequent +characters MUST be letters, digits, underscores or hyphens. The terms +“letter” and “digit” are as defined in the XML +specification [Appendix B/8].

+ +

Hyphens can easily be confused with the discretionary hyphens that are +sometimes inserted by hyphenation algorithms. For this reason, the names +of nodes in the hierarchy SHOULD NOT include any hyphens. Additionally, +the names of nodes in the hierarchy SHOULD NOT start with underscores. +In BBF standards, the names of nodes in the hierarchy always start with +an upper-case letter and never include any hyphens or underscores (see +C.3.1 for the corresponding normative requirement).

+ +

Where multiple instances of an object can occur, the placeholder node +name {i} is shown. In actual use, this placeholder is to be replaced by +an Instance Identifier.

+ +

3.2 Data Types and Representation

+ +

Parameters make use of a limited subset of the default SOAP data types. +The supported data types are defined by the DM Schema and are +also listed in A.2.3.

+ +

The named data types that specify the representations of IP addresses, +MAC addresses etc, are defined in a DM Instance document (see Annex A). +The XML file with those definitions and the corresponding HTML file can +be found in the data model resources +page. +Note that this DM Instance defines named data types that are expected to +be used in several data model definitions; it is possible to define +local named data types in any DM Instance document.

+ +

The following sub-sections specify additional rules governing parameter +value representation within XML documents.

+ +

3.2.1 Date and Time Rules

+ +

All times MUST be expressed in UTC (Universal Coordinated Time) unless +explicitly stated otherwise in the definition of a parameter of this +type.

+ +

If absolute time is not available to the Agent, it SHOULD instead +indicate the relative time since boot, where the boot time is assumed to +be the beginning of the first day of January of year 1, or 0001 01 01T00:00:00. For example, 2 days, 3 hours, 4 minutes and 5 seconds since +boot would be expressed as 0001 01 03T03:04:05. Relative time since boot +MUST be expressed using an untimezoned representation. Any untimezoned +value with a year value less than 1000 MUST be interpreted as a relative +time since boot.

+ +

If the time is unknown or not applicable, the following value +representing “Unknown Time” MUST be used: 0001-01-01T00:00:00Z. For an +infinite timeline, the following value representing “Infinite Time” MUST +be used: 9999-12-31T23:59:59Z.

+ +

Any dateTime value other than one expressing relative time since boot +(as described above) MUST use UTC timezoned representation (that is, it +MUST include a timezone suffix of “Z”, “-00:00” or “+00:00”).

+ +

3.2.2 Comma-separated Lists

+ +

For strings that are defined to contain comma-separated lists, the +format is defined as follows. Between every pair of successive items in +a comma-separated list there MUST be a separator. The separator MUST +include exactly one comma character, and MAY also include one or more +whitespace characters before or after the comma. The entire separator, +including any whitespace characters, MUST NOT be considered part of the +list items it separates. The last item in a comma-separated list MUST +NOT be followed with a separator. Individual items in a comma-separated +list MUST NOT include a whitespace or comma character within them. Any +whitespace or comma characters within an item value MUST be escaped +using percent-encoding as specified in RFC 3986 [Section 2.1/9].

+ +

It is possible to create a list of lists, although other solutions +SHOULD be preferred when possible. If a string contains a list of lists, +the rules of the previous paragraph imply that the comma separators of +the inner list will be percent encoded. For example, a three element +list with elements “a”, “b,c” (a two element list) and “d” could be +represented as “a,b%2Cc,d”. In order to avoid the need to percent encode +the inner separators, inner lists MAY be “protected” by placing them +within square brackets, e.g. the above list could be represented as +“a,[b,c],d”. In order to avoid ambiguity (a Controller that didn’t +understand the new syntax would interpret “a,[b,c],d” as the four +element list “a”, “[b", "c]”, “d”), the data type and/or parameter +definition MUST explicitly state that the new syntax is supported +(A.2.3.1, A.2.7.1).

+ +

3.2.3 Parameters that Reference Parameters or Objects

+ +

For string parameters that are defined to contain the hierarchical Path +Name of an object (or for each item in parameters that are defined to +contain comma-separated lists of object Path Names), the representation +of the object name MUST NOT include a trailing “dot.” An example of a +parameter of this kind in the TR-181i2 [3] Device:2 data model is +Device.InterfaceStack.{i}.LowerLayer. For this parameter, the following +is an example of a properly formed value:

+ +

Device.Ethernet.Interface.1

+ +

Path Names in parameter values MUST always be full Path Names. For CWMP +there is an exception such that a path that begins with a dot is +relative to the Root or Service Object. For example, in the Device Root +Object, a parameter value of “.DeviceInfo” always means +“Device.DeviceInfo”. NOTE: This exception does NOT hold for USP.

+ +

In order to be able to use reference parameters as unique keys +(A.2.10.1), their Path Names MUST conceptually be converted to full Path +Names before being compared. For example, in the Device Root Object, +“.DeviceInfo.” and “Device.DeviceInfo.” would compare as equal. If a +reference parameter is list-valued, i.e. it is a list of Path Names or +Instance Numbers, the parameter value MUST conceptually be regarded as a +set when being compared, i.e. the comparison has to ignore the item +order and any repeated items. For example, “1,2,1” and “2,1” would +compare as equal because both reference instances 1 and 2.

+ +

References are defined as strong or weak in the data model. A strong +reference always either references an existing parameter or object, or +else is a null reference. On the other hand, a weak reference does not +necessarily reference an existing parameter or object.

+ +

3.2.4 Units Conventions

+ +

For numeric parameters whose values are defined in terms of units, bit +and byte-related units will always refer to powers of 2. For example, a +kilobyte will always be 1024 bytes, a megabyte always 1024 * 1024 +bytes, etc.

+ +

3.2.5 Default Maximum String Length

+ +

For string-valued parameters, a maximum length is either explicitly +indicated or implied by the size of the elements composing the string. +For strings in which the content is an enumeration, the longest +enumerated value determines the maximum length. Similarly, for strings +in which the content is a pattern, the longest possible matching value +determines the maximum length. For strings in which the content is a +list, the maximum number of items and the individual item lengths can +help to determine the maximum string length.

+ +

3.3 Vendor-Specific Elements

+ +

A vendor MAY extend the standardized data model with vendor-specific +elements (parameters, objects, commands, events). Vendor-specific elements MAY be defined either in a separate naming hierarchy or within the standardized +naming hierarchy.

+ +

The name of a vendor-specific parameter, object, command, or event that is not contained within another vendor-specific object MUST have the form:

+ +
+

X_<VENDOR>_VendorSpecificName

+
+ +

In this definition <VENDOR> is a unique vendor identifier, which MAY +be either an OUI or a domain name. The OUI or domain name used for a +given vendor-specific parameter MUST be one that is assigned to the +organization that defined this parameter (which is not necessarily the +same as the vendor of the Agent). An OUI is an organizationally unique +identifier as defined in [10], which MUST be formatted as a +six-hexadecimal-digit string using all upper-case letters and including +any leading zeros. A domain name MUST be upper case with each dot (“.”) +replaced with a hyphen or underscore.

+ +

The VendorSpecificName MUST NOT contain a “.” (period) or a space +character.

+ +
+

Note – the use of the string “X_” to indicate a vendor-specific +parameter implies that no standardized parameter can begin with +“X_”.

+
+ +

The name of a vendor-specific element that is contained +within another vendor-specific object which itself begins with the +prefix described above need not itself include the prefix.

+ +

The full Path Name of a vendor-specific element MUST NOT +exceed 256 characters in length.

+ +

Below are some example vendor-specific element names:

+ +

A parameter:

+ +
Device.UserInterface.X_012345_AdBanner
+ +

A single-instance object:

+ +
Device.X_EXAMPLE-COM_MyConfig.Status
+ +

A command:

+ +
Device.X_EXAMPLE-COM_MyCommand()
+ +

An event:

+ +
Device.X_EXAMPLE-COM_MyEvent!
+ +

When appropriate, a vendor MAY also extend the set of values of an +enumeration. If this is done, the vendor-specified values MUST be in the +form “X_<VENDOR>_VendorSpecificValue”. The total length of such a +string MUST NOT exceed 31 characters.

+ +

4 Normative References

+ +

A list of the currently valid Broadband Forum Technical Reports is +published at https://www.broadband-forum.org. The following documents +are referenced by this specification.

+ +
+
+

[1] TR-069 Amendment 6, CPE WAN Management Protocol, Broadband Forum, 2018

+ +
+

[2] TR-369, User Services Platform, 2018

+ +
+

[3] TR-181 Issue 2 Amendment 12, Device Data Model for TR-069, Broadband Forum, 2018

+ + + +
+

[5] RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, IETF, 1997

+ +
+

[6] TR-143 Amendment 1 Corrigendum 1, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, 2015

+ +
+

[7] TR-140 Amendment 3, TR-069 Data Model for Storage Service Enabled Devices, Broadband Forum, 2017

+ + + +
+

[9] RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, IETF, 2005

+ + + +
+

[11] RFC 2648, A URN Namespace for IETF Documents, IETF, 1999

+ + + +
+ +

Annex A: CWMP Data Model Definition XML Schema

+ +

A.1 Introduction

+ +

The CWMP Data Model Definition XML Schema [4], or DM Schema, is used +for defining CWMP [1] and USP [2] data models, and is specified in +A.2.12.6.

+ +

DM Schema instance documents can contain any or all of the following:

+ +
    +
  • Data type definitions

  • +
  • Root Object definitions (including profiles)

  • +
  • Service Object definitions (including profiles)

  • +
  • Component definitions

  • +
  • Vendor extension definitions

  • +
+ +

Annex C contains some additional normative requirements that apply only +to BBF standard DM Schema instance documents.

+ +

Most of the data model elements are common to CWMP and USP. Those that are specific to either protocol will be noted in the description.

+ +

A.1.1 Character Encoding and Character Set

+ +

BBF standard DM Schema instance documents use UTF-8 encoding and their +character set is restricted to printable ASCII characters. See +C.2 for the corresponding normative +requirements.

+ +

A.2 Normative Information

+ +

It is possible to create instance documents that conform to the DM +Schema but nevertheless are not valid data model definitions. This is +because it is not possible to specify all the normative data model +definition requirements using the XML Schema language. Therefore, the +schema contains additional requirements written using the usual +normative language. Instance documents that conform to the DM Schema and +meet these additional requirements are referred to as DM Instances.

+ +

For example, the definition of the parameter element includes the +following additional requirements on the name and base attributes:

+ +
    <xs:complexType name="ModelParameter">
+      <xs:annotation>
+        <xs:documentation>
+        Parameter definition and
+        reference.
+        </xs:documentation>
+      </xs:annotation>
+
+      ...
+
+      <xs:attribute name="name" type="tns:ParameterName">
+        <xs:annotation>
+          <xs:documentation>
+          MUST be unique within the parent object
+          (this is checked by schema validation).
+
+          MUST be present if and only if defining a new
+          parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+
+      <xs:attribute name="base" type="tns:ParameterName">
+        <xs:annotation>
+          <xs:documentation>
+            MUST be present if and only if modifying an existing
+            parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+
+      ...
+
+    </xs:complexType>
+ +

In some cases, a requirement that is in fact implied by the DM Schema is +emphasized within the schema via the xs:documentation element (the +uniqueness requirement on the name is an example of this).

+ +

In other cases, a schema-implied requirement is not highlighted. For +example, the name and base attributes are of type tns:ParameterName:

+ +
    <!DOCTYPE cwmp-datamodel [
+      ...
+      <!ENTITY name "([\i-[:]][\c-[:\.]]*)">
+      ...
+    ]>
+      ...
+      <xs:simpleType name="ParameterName">
+        <xs:annotation>
+          <xs:documentation>Parameter name (maximum length 256); the same as xs:NCName except that periods are not permitted.  This name MUST in addition follow the vendor-specific parameter name requirements of Section 3.3.</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:token">
+          <xs:maxLength value="256"/>
+          <xs:pattern value="&name;"/>
+        </xs:restriction>
+      </xs:simpleType>
+ +

This states that the parameter name is a string that follows the +following rules:

+ +
    +
  • It is derived from xs:token, which has a whitespace facet of +“collapse”, meaning that any leading whitespace in the name will be +ignored.

  • +
  • It has a maximum length of 256 characters.

  • +
  • Its first character matches the pattern “[\i-:]]”, which means +“any character permitted as the first character of an XML name, +except for a colon”, and any subsequent characters match the pattern +“[\c-[:\.]]”, which means “any character permitted in an XML +name, except for a colon and a dot”.

  • +
  • It follows the vendor-specific parameter name requirements of +Section 3.3.

  • +
+ +

The question of the location of the definitive normative information +therefore arises. The answer is as follows:

+ +
    +
  • All the normative information in the main part of the document +remains normative.

  • +
  • The DM Schema, and the additional requirements therein, are +normative. Some of these additional requirements are duplicated (for +emphasis) in this Annex.

  • +
  • The DM Schema references additional material in this Annex. Such +material is normative.

  • +
  • If the DM Schema conflicts with a normative requirement in the main +part of the document, this is an error in the DM Schema, and the +requirement in the main part of the document takes precedence.

  • +
+ +

A.2.1 Importing DM Instances

+ +

DM Instances are imported using the top-level import element. The DM +Schema specifies that the DM Instance is located via the file attribute.

+ +

The rules governing the file attribute’s value and its use for locating +the DM Instance are as follows:

+ +
    +
  • It MUST be a URL adhering to RFC 3986 [9].

  • +
  • If the URL includes a scheme, it MUST be http, https or ftp.

  • +
  • If the URL includes an authority, it MUST NOT include credentials.

  • +
  • For standard BBF DM Instances, the rules that apply to the filename +part (final path segment) of the A.2.1.1 BBFURL also apply to the +filename part of this URL. This means that the corrigendum number +can be omitted in order to refer to the latest corrigendum. See +C.3.6 for the corresponding normative requirement.

  • +
  • If the URL is a relative reference, processing tools MUST apply +their own logic, e.g. apply a search path.

  • +
+ +

A.2.1.1 URI Conventions

+ +

The top-level spec attribute contains the URI of the associated +specification document, e.g. the BBF Technical Report.

+ +

This URI SHOULD uniquely identify the specification. More than one DM +Schema instance document MAY reference the same specification.

+ +

The top-level file attribute contains the name of the DM Schema instance +document, e.g. the XML file that defines a given version of a data +model.

+ +

The following rules apply to the value of the top-level spec attribute:

+ +
    +
  • For a BBF Technical Report, it will be of the form +“urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the +specification number (including leading zeros), i is the issue +number, a is the amendment number, and c is the corrigendum number. +The issue, amendment and corrigendum numbers do not include leading +zeros. For example, “urn:broadband-forum-org:tr-106-1-0” refers to +TR-106 (Issue 1 Amendment 0), and +“urn:broadband-forum-org:tr-106-1-2” refers to TR-106 (Issue 1) +Amendment 2. See C.3.4 for the corresponding normative requirement.

  • +
  • For specifications issued by other standards organizations, or by +vendors, it SHOULD be of a standard form if one is defined. For +example, RFC 2648 [11] specifies a syntax for referencing RFCs.

  • +
  • Note that processing tools are likely to assume that all files that +share a spec value are related to each other. Therefore, use of +meaningful spec values is RECOMMENDED.

  • +
+ +

The following rules apply to the value of the top-level file attribute.

+ +
    +
  • For a BBF Technical Report, it will be of the form +“tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where nnn, i, a and +c are the same as in the spec attribute. The label, which MUST NOT +begin with a digit, is not needed if only one DM Schema instance +document is associated with the specification. See C.3.5 for the +corresponding normative requirement.

  • +
  • It SHOULD be the same as the actual file name (omitting the +directory name). Under some circumstances this will not be possible, +e.g. because the content is stored in a database and not in a file +system.

  • +
+ +

Formally, the values of the spec and file attributes are defined as +follows:

+ +
    SpecAttr = SpecURI
+    FileAttr = FileName
+    SpecURI = BBFURI
+            | OtherURI
+    BBFURI = "urn:broadband-forum-org:" BBFDoc
+    FileName = BBFDoc BBFSubDoc ".xml"
+    BBFDoc = "tr-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
+    BBFNumber = [DIGIT]{3,}     // including leading zeros, e.g. 069
+    BBFIssue = "-" NoLeadingZeroPositiveNumber
+    BBFAmendment = "-" NoLeadingZeroNumber
+    BBFCorrigendum = "-" NoLeadingZeroNumber
+    BBFSubDoc = "-" LABEL       // distinguishing label (not beginning with a digit)
+              | ""              // not needed if only one DM Instance is associated with spec
+    NoLeadingZeroNumber = [DIGIT]
+                        | [NONZERODIGIT] [DIGIT]*
+    NoLeadingZeroPositiveNumber = [NONZERODIGIT] [DIGIT]*
+    OtherURI = <of a standard form if one is defined>
+ +

Standard BBF DM Instances can be accessed at the following URL:

+ +
    BBFURL = "http://www.broadband-forum.org/cwmp/" FileName
+    FileName = <as before, except that BBFCorrigendum is modified as follows:>
+    BBFCorrigendum = "-" NoLeadingZeroNumber
+                   | ""         // if omitted, most recent corrigendum is assumed
+ +

For example, the DM Instance associated with TR-181 Issue 2 Amendment 11 +can be accessed at +https://www.broadband-forum.org/cwmp/tr-181-2-11-0.xml.

+ +

A.2.2 Descriptions

+ +

Many elements have descriptions, and the same rules apply to all +description elements in the DM Schema. A description is free text which +can contain a limited amount of MediaWiki-like markup as specified in +A.2.2.3.

+ +

A.2.2.1 Character Set

+ +

Character set requirements apply to the entire DM Instance, so the contents of +this section have been moved to C.2, +which contains the normative requirements that apply to standard BBF DM +Instances.

+ +

A.2.2.2 Pre-processing

+ +

All DM Instance processing tools MUST conceptually perform the following +pre-processing before interpreting the markup:

+ +
    +
  1. Remove any leading whitespace up to and including the first line +break. Note: It can be assumed that all line breaks are represented by a +single line feed, i.e. ASCII 10. See +C.2.

  2. +
  3. Remove the longest common whitespace prefix (i.e. that occurs at the +start of every line) from each line. See the example below, where +three lines start with four spaces and one line starts with five +spaces, so the longest whitespace prefix that occurs at start of +each line is four spaces. In this calculation, a tab character +counts as a single character. To avoid confusion, the description +SHOULD NOT contain tab characters.

  4. +
  5. Remove all trailing whitespace, including line breaks.

  6. +
+ +

This pre-processing is designed to permit a reasonable variety of layout +styles while still retaining predictable behavior. For example, both the +following:

+ +
    <description>This is the first line.
+    This is the second line.
+     This is the indented third line.
+    This is the fourth line.</description>
+ +

And:

+ +
    <description>
+        This is the first line.
+        This is the second line.
+         This is the indented third line.
+        This is the fourth line.
+    </description>
+ +

…result in the following:

+ +
    This is the first line.
+    This is the second line.
+      This is the indented third line.
+    This is the fourth line.
+ +

A.2.2.3 Markup

+ +

The pre-processed description can contain the following markup, which is +inspired by, but is not identical to, MediaWiki markup. All DM Instance +processing tools SHOULD support this markup to the best of their +ability.

+ +
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1: XML Description Markup
NameMarkup ExampleDescription
Italics''italic text''Two apostrophes on each side of some text will result in the contained text being emphasized in italics.
Bold'''bold text'''Three apostrophes on each side of some text will result in the contained text being emphasized in bold.
Bold italics'''''b+i text'''''Five apostrophes on each side of some text will result in the contained text being emphasized in bold italics.
ParagraphThis paragraph just ended.A line break is interpreted as a paragraph break.
Bulleted lists* level one
** level two
* level one again
** level two again
*** level three
*: level one continued
outside of list
A line starting with one or more asterisks (*) denotes a bulleted list entry, whose indent depth is proportional to the number of asterisks specified.
If the asterisks are followed by a colon (:), the previous item at that level is continued, as shown.
An empty line, or a line that starts with a character other than an asterisk, indicates the end of the list.
Numbered lists# level one
## level two
# level one again
## level two again
### level three
#: level one continued
outside of list
A line starting with one or more number signs (#) denotes a numbered list entry.
All other conventions defined for bulleted lists apply here (using # rather than *), except that numbered list entries are prefixed with an integer decoration rather than a bullet.
Indented lists: level one
:: level two
: level one again
:: level two again
::: level three
outside of list
A line starting with one or more colons (:) denotes an indented list entry.
All other conventions defined for bulleted lists apply here (using : rather than *), except that indented list entries have no prefix decoration, and item continuation is not needed.
Verbatimcode example:
if (something)
{
/* do something */
} else {
/* do other */
}
A block of lines each of which starts with a space is to be formatted exactly as typed, preferably in a fixed width font.
This allows code fragments, simple tables etc. to be included in descriptions.
Note that the pre-processing rules of A.2.2.2 imply that it is not possible to process an entire description as verbatim text (because all the leading whitespace would be removed). This is not expected to be a problem in practice.
Hyperlinkshttp://www.broadband-forum.orgURL links are specified as plain old text (no special markup).
Templates{{bibref|1|section 2}}
{{section|table}}
{{param|Enable}}
{{enum|Error}}
Text enclosed in double curly braces ({}) is a template reference, which is replaced by template-dependent text.
A.2.2.4 specifies the standard templates.
+ +

A.2.2.4 Templates

+ +
+

The term “template” is used for both template elements (A.2.4.4) +and for the description templates described here.

+ +

A template invocation is encoded as two curly braces on either side of +the template name and arguments. Arguments can follow the template name, +separated by vertical pipe (|) characters. All whitespace is +significant. For example:

+ +

{{someTemplate|arg1|arg2|...|argN}}

+ +

In some cases, one template can impact the behavior of another template, +e.g. the definitions of both the {{enum}} and the {{hidden}} templates +state that the template expansion can be automatically placed after the +rest of the description, which raises the question of which template +expansion would come first. This ambiguity is resolved by stating that +processing tools SHOULD generate such automatic text in the same order +that the templates are defined below. In the above example, {{enum}} is +defined before {{hidden}}, so an automatically-generated list of +enumeration values would be placed before an automatically-generated +explanation that the parameter value is hidden.

+ +

The following standard templates are defined. Any vendor-specific +template names MUST obey the rules of Section 3.3.

+ +
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: XML Description Templates
NameMarkup DefinitionDescription
Glossary reference{{gloref|id}}Glossary reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level glossary element’s item elements (A.2.4.1).
Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”.
Markup examples:
{{gloref|Parameter}}
Abbreviation reference{{abbref|id}}Abbreviation reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level abbreviations element’s item elements (A.2.4.2).
Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”.
Markup examples:
{{abbref|CWMP}}
Approval date{{appdate|date}}The date on which this file was approved.
The date argument SHOULD be of the form “day month year” where “day” is the OPTIONAL day number (no leading zero), “month” is the full (capitalized) month name, and “year” is the year (including century).
Markup examples:
{{appdate|5 November 2011}}
{{appdate|November 2012}}
Document name{{docname|name}}The DM Instance name or title.
The name argument MUST distinguish this file from other different files but not from other versions of the same file or data model.
Markup examples:
{{docname|Device Data Model for TR-069}}
TR name{{trname|name}}The name and version of the corresponding Word / PDF document.
The name argument MUST identify the Word / PDF document corresponding to this DM Instance, and be of the form “TR-nnnixaycz” as defined in A.2.4.3.
Markup examples:
{{trname|TR-181i2a5}}
XML reference{{xmlref|ref}}
{{xmlref|ref|label}}
A reference to this or another DM Instance.
The ref argument MUST identify a DM Instance and be the filename part of the referenced DM Instance (a) optionally omitting the corrigendum number, and (b) omitting the trailing “.xml”.
The OPTIONAL label argument MAY be used by processing tools as a user-visible label; if it is omitted, processing tools will derive the label from the value of the ref argument.
Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the label, possibly rendered in a distinctive font, and (if referencing a different file) a hyperlink.
Markup examples:
{{xmlref|tr-181-2-5}}
{{xmlref|tr-196-2-0-1|Corrigendum 1}}
Bibliographic reference{{bibref|id}}
{{bibref|id|section}}
A bibliographic reference.
The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level bibliography element’s reference elements (A.2.4.3).
The OPTIONAL section argument specifies the section number, including any leading “section”, “annex” or “appendix” text.
Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “[id] section”.
Markup examples:
{{bibref|RFC3986}}
{{bibref|RFC3986|Section 3}}
Template reference{{template|id}}A template element reference.
The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level template elements (A.2.4.4).
Markup examples:
{{template|BULK-DATA-HTTP-REF}}
Section separator{{section|category}}
{{section}}
The beginning or end of a section or category. This is a way of splitting the description into sections.
If the category argument is present, this marks the end of the previous section (if any), and the beginning of a section of the specified category. The “table”, “row” and “examples” categories are reserved for the obvious purposes.
If the category argument is absent, this marks the end of the previous section (if any). Typically, processing tools will (a) validate the category, and (b) replace the template reference with a section marker.
Markup examples:
{{section|table}}
{{section|row}}
{{section|examples}}
Number of entries parameter description{{numentries}}A description of a “NumberOfEntries” parameter.
This template SHOULD be used for all such parameters. It will be expanded to something like “The number of entries in the <table> table.”.
In most cases, the description will consist only of {{numentries}} but it MAY be followed by additional text if desired.
Parameter and object reference{{param|ref}}
{{param|ref|scope}}
{{param}}
{{object|ref}}
{{object|ref|scope}}
{{object}}
A reference to the specified parameter or object.
The OPTIONAL ref and scope arguments reference a parameter or object. Scope defaults to normal. Parameter and object names SHOULD adhere to the rules of A.2.3.4.
Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current parameter or object name, possibly rendered in a distinctive font.
Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
Markup examples:
{{param|Enable}}
{{object|Stats.}}
Profile reference{{profile|ref}}
{{profile}}
A reference to the specified profile.
The OPTIONAL ref argument references a profile.
Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current profile name, possibly rendered in a distinctive font.
Markup examples:
{{profile|Baseline:1}}
{{profile}}
List description{{list}}
{{list|arg}}
{{nolist}}
A description of the current parameter’s list attributes.
This template SHOULD only be used within the description of a list-valued parameter (A.2.7.1).
This is a hint to processing tools to replace the template reference with a description of the parameter’s list attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{nolist}}) of describing the list attributes before the rest of the description.
The OPTIONAL argument specifies a fragment of text that describes the list and SHOULD be incorporated into the template expansion.
Typically processing tools will generate text of the form “Comma-separated list of <dataType>.” or “Comma-separated list of <dataType>, <arg>.”.
Reference description{{reference}}
{{reference|arg}}
{{reference|arg|opts}}
{{noreference}}
A description of the object or parameter that is referenced by the current parameter.
This template SHOULD only be used within the description of a reference parameter (A.2.3.7).
This is a hint to processing tools to replace the template reference with a description of the parameter’s reference attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{noreference}}) of describing the reference attributes after the list attributes (for a list-valued parameter) or before the rest of the description (otherwise).
The OPTIONAL arg argument is relevant only for a pathRef; it specifies a fragment of text that describes the referenced item and SHOULD be incorporated into the template expansion.
The OPTIONAL opts argument is a comma-separated list of keywords that give additional information about the reference and can affect the generated text. The following keywords are currently defined:
- ignore: ignore any non-existent targetParents; this is useful when a parameter references different objects in different data models.
- delete: this object (the referencing object) and the referenced object have the same lifetime, so this object will always be deleted when the referenced object is deleted; therefore the reference cannever be null.
Typically processing tools will generate text of the form “The value MUST be the full path name of <arg>…”, in which the generated text can be expected to be sensitive to whether or not the parameter is list-valued.
Markup examples:
{{reference|a protocol object}}
{{reference|all Host table entries|ignore}}
Named data type{{datatype}}
{{datatype|arg}}
{{nodatatype}}
A description of the current parameter’s named data type.
This template SHOULD only be used within the description of a parameter of a named data type (A.2.3.1).
This is a hint to processing tools to replace the template reference with an indication of the parameter’s named data type, possibly including additional details or a hyperlink to such details. This overrides processing tools’ expected default behavior (unless suppressed by {{nodatatype}}) of describing the named data type before the rest of the description.
The OPTIONAL argument affects how the data type is described. If it has the literal value “expand”, processing tools SHOULD replace the template reference with the actual description of the named data type (as opposed to referencing the description of the named data type).
Profile description{{profdesc}}
{{noprofdesc}}
An auto-generated description of a profile.
This template SHOULD only be used within the description of a profile (A.2.11).
This is a hint to processing tools to replace the template reference with a description of the profile. This overrides processing tools’ expected default behavior (unless suppressed by {{noprofdesc}}) of describing the profile before the rest of the description.
Typically processing tools will generate text of the form “This table defines the <profile:v> profile for the <object:m> object. The minimum REQUIRED version for this profile is <object:m.n>.” (or more complex text if the profile is based on or extends other profiles).
Enumeration reference{{enum|value}}
{{enum|value|param}}
{{enum|value|param|scope}}
{{enum}}
{{noenum}}
A reference to the specified enumeration value.
The OPTIONAL value argument specifies one of the enumeration values for the referenced parameter. If present, it MUST be a valid enumeration value for that parameter.
The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed.
If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s enumerations, possibly preceded by text such as “Enumeration of:”. This overrides processing tools’ expected default behavior (unless suppressed by {{noenum}}) of listing the parameter’s enumerations after the rest of the description.
Otherwise, typically processing tools will (a) validate that the enumeration value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
Markup examples:
{{enum|None}}
{{enum|None|OtherParam}}
Pattern reference{{pattern|value}}
{{pattern|value|param}}
{{pattern|value|param|scope}}
{{pattern}}
{{nopattern}}
A reference to the specified pattern value.
The OPTIONAL value argument specifies one of the pattern values for the referenced parameter. If present, it MUST be a valid pattern value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed.
If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s patterns, possibly preceded by text such as “Possible patterns:”. This overrides processing tools’ expected default behavior (unless suppressed by {{nopattern}}) of listing the parameter’s patterns after the rest of the description.
Otherwise, typically processing tools will (a) validate that the pattern value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
Markup examples:
{{pattern|None}}
{{pattern|None|OtherParam}}
Hidden value{{hidden}}
{{hidden|value}}
{{nohidden}}
Text explaining that the value of the current parameter is hidden and cannot be read. This template SHOULD only be used within the description of a hidden parameter (A.2.7.1).
This is a hint to processing tools to replace the template reference with text explaining that the value of the current parameter is hidden and cannot be read. This overrides processing tools’ expected default behavior (unless suppressed by {{nohidden}}) of placing this text after the rest of the description.
The OPTIONAL argument indicates the value that is returned when the current parameter is read. If omitted this defaults to the expansion of the {{null}} template.
Typically, processing tools will generate text of the form “When read, this parameter returns <arg>, regardless of the actual value.”.
Command parameter{{command}}
{{nocommand}}
Text explaining that the current parameter is a command parameter that triggers an Agent action. This template SHOULD only be used within the description of such a command parameter (A.2.7.1).
This is a hint to processing tools to replace the template reference with text explaining that the current parameter is a command parameter that always reads back as {{null}}. This overrides processing tools’ expected default behavior (unless suppressed by {{nocommand}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The value is not part of the device configuration and is always {{null}} when read.”.
Factory default value{{factory}}
{{nofactory}}
Text listing the factory default for the current parameter. This template SHOULD only be used within the description of a parameter that has a factory default value.
This is a hint to processing tools to replace the template reference with text listing the factory default value. This overrides processing tools’ expected default behavior (unless suppressed by {{nofactory}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The factory default value MUST be <value>.”.
Unique keys description{{keys}}
{{nokeys}}
A description of the current object’s unique keys.
This template SHOULD only be used within the description of a Multi-Instance Object (table) that defines one or more unique keys (A.2.10.1).
This is a hint to processing tools to replace the template reference with a description of the object’s unique keys. This overrides processing tools’ expected default behavior (unless suppressed by {{nokeys}}) of describing the unique keys after the description.
Units reference{{units}}The parameter’s units string.
Typically, processing tools will (a) check that the parameter has a units string, and (b) substitute the value of its units string.
Boolean values{{false}}
{{true}}
Boolean values.
Typically, processing tools will substitute the value False or True, possibly rendered in a distinctive font.
Discriminator parameter description{{union}}
{{nounion}}
Text explaining the available options and use for the sub-objects which are part of the union.
This template SHOULD only be used within the description of a parameter declared as a discriminatorParameter (A.2.10.1).
This is a hint to processing tools to replace the template reference with text explaining the union and possible choices of sub-objects. This overrides processing tools’ expected default behavior (unless suppressed by `{{nounion}}) of placing this text after the rest of the description.
Typically, processing tools will generate text of the form “This parameter defines the name of the currently active sub-object of a union, members of the union are <objects>.” but it MAY be followed by additional text, explaining the use of the available options, if desired.
Miscellaneous{{issue|descr}}
{{issue|opts|descr}}
An open issue.
If only one argument is supplied, it is descr, which describes the open issue. If two arguments are supplied, they are opts and descr.
The OPTIONAL opts argument is a comma-separated list of options:
- The first list item is an issue category that defaults to “XXX”.
- The second list item is an issue status that defaults to an empty string. Any non-empty status implies that the issue has been resolved.
Typically, processing tools will assign a unique ID, e.g. a separate counter for each category of issue, and replace the template reference with the issue category, ID, status and description, possibly rendered in a distinctive font.
Markup examples:
{{issue|Will be labeled XXX.}}
{{issue|IPsec|Will be labeled IPsec.}}
{{issue|DNS,fixed|Resolved DNS issue.}}
{{empty}}Represents an empty string. Typically, processing tools will render such values in a distinctive font, possibly using standard wording, such as <Empty> or “an empty string”.
{{null}}Expands to the appropriate null value for the current parameter’s data type (A.2.3.5), e.g. {{empty}}, {{false}} or 0.
+ +

A.2.2.5 HTML Example

+ +

This includes examples of most of the markup and templates.

+ +
    <model name="Goo:1.1" base="Goo:1.0">
+      <object name="GooTop." access="readOnly" minEntries="1" maxEntries="1">
+        <parameter name="ExampleParam" access="readOnly">
+          <description>
+    {{section|Introduction}}This is an ''example'' parameter that
+    illustrates many of the '''formatting''' templates. For
+    '''''example''''', this references {{bibref|TR-106a1|section 3.2}}.
+
+    {{section|Usage}}This parameter is called {{object}}{{param}}. One can
+    also reference other parameters in the same object, such as
+    {{param|OtherParameter}}, and indicate that the parameter value is
+    measured in {{units}}.
+
+    One can also include bulleted lists:
+    * level one
+    ** level two
+    * level one again
+    ** level two again
+    *** level three
+    *: level one continued
+
+    and numbered lists:
+    # level one
+    ## level two
+    # level one again
+    ## level two again
+    ### level three
+    #: level one continued
+
+    and indented lists
+    : level one
+    :: level two
+    : level one again
+    :: level two again
+    ::: level three
+
+    and hyperlinks such as http://www.google.com
+
+    and code examples:
+     if (something) {
+       /* do something */
+     } else {
+       /* do other */
+     }
+
+    If the parameter was Boolean, one could refer to its values {{false}}
+    and {{true}}.
+
+    One can refer to its enumerations individually, e.g. {{enum|Disabled}},
+    or to other parameters' enumerations, such as {{enum|Value|OtherParam}},
+    or can list them all. {{enum}}
+
+    Finally, if there were any patterns they could be listed too. {{pattern}}
+          </description>
+          <syntax>
+            <string>
+              <enumeration value="A"/>
+              <enumeration value="B"/>
+              <units value="packets"/>
+            </string>
+          </syntax>
+        </parameter>
+ +

The resulting HTML would look something like this:

+ + + +

A.2.3 Data Types

+ +

CWMP [1] and USP [2] data models support only the primitive data +types listed in the last row of Table 3 “on the wire”. However, the DM +Schema allows data types to be derived from the primitive types or from +other named data types. Such derived types can be named or anonymous.

+ +

A.2.3.1 Named Data Types

+ +

Named data types are defined using the top-level dataType element. A DM +Instance can contain zero or more top-level dataType elements.

+ +

When defining a new named data type, the following attributes and +elements are relevant (normative requirements are specified in the +schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3: XML Named Data Types
NameDescription
nameThe data type name.
baseThe base type name, i.e. name of the data type from which this data type is derived. This is used only where the base type is itself a named data type, not a primitive type.
statusThe data type’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new data type.
descriptionThe data type’s description (A.2.2).
list
minItems
maxItems
nestedBrackets
size
If the data type is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3).
Note that a list-valued data type is always a string as far as the protocol is concerned. For a list, the rest of the data type specification refers to the individual list items, not to the parameter value.
size
pathRef
instanceRef
range
enumeration
enumerationRef
pattern
units
default
Data type facets (A.2.3.3). These are permitted only when the base type is a named data type, i.e. when the base attribute is specified.
base64
boolean
dateTime
hexBinary
int
long
string
unsignedInt
unsignedLong
Primitive data type definition. These are permitted only when the base type is primitive. There is an element for each primitive data type, and each element supports only the facets (A.2.3.3) that are appropriate to that data type.
+ +

For example:

+ +
    <dataType name="String255">
+      <description>String of maximum length 255.</description>
+      <string>
+        <size maxLength="255"/>
+      </string>
+    </dataType>
+
+    <dataType name="String127" base="String255">
+      <description>String of maximum length 127.</description>
+      <size maxLength="127"/>
+    </dataType>
+
+    <dataType name="String127List" base="String127">
+      <description>List of up to 7 strings, each of maximum length 127. If a
+      list item is itself a list, it will be "protected" by square
+      brackets.</description>
+      <list maxItems="7" nestedBrackets="required"/>
+    </dataType>
+ +

A.2.3.2 Anonymous Data Types

+ +

Anonymous data types are defined within parameter syntax elements +(A.2.7.1), and can apply only to the parameters within which they are +defined. For example:

+ +
    <parameter name="Example1" access="readOnly">
+      <syntax>
+        <string>
+          <size maxLength="127"/>
+          </string>
+      </syntax>
+    </parameter>
+
+    <parameter name="Example2" access="readOnly">
+      <syntax>
+        <dataType base="String255">
+          <size maxLength="127"/>
+        </dataType>
+      </syntax>
+    </parameter>
+ +

If an anonymous data type is modified in a later version of a data +model, the modified anonymous data type is regarded as being derived +from the original anonymous data type. Therefore the base type +restriction rules of A.2.3.8 MUST be obeyed.

+ +

A.2.3.3 Data Type Facets

+ +

A facet specifies some aspect of a data type, e.g. its size, range or +units.

+ +

Note that XML Schema [4] also associates facets with data types. The +XML Schema and DM Schema concepts are the same, but the set of facets is +not identical.

+ +

The DM Schema defines the following facets (normative requirements are +specified in the schema):

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4: XML Data Type Facets
NameDescription
sizeSize ranges for the data type (applies to string, base64, hexBinary and their derived types). Note that the size facet always refers to the actual value, not to the base64- or hexBinary-encoded value. Prior to the definition of the DM Schema, the maximum sizes of base64 parameters referred to the base64-encoded values.
Processing tools that generate reports from DM Instances SHOULD include explicit clarification of whether the size ranges refer to the actual or encoded values.
Note that the size facet is also used to specify the size range for list-valued parameters, which are always strings (A.2.7.1).
pathRefDetails of how to reference parameters and objects via their Path Names (applies to string and its derived types; A.2.3.7).
instanceRefDetails of how to reference object instances (table rows) via their Instance Numbers (applies to int, unsignedInt and their derived types; A.2.3.7).
rangeValue ranges and step (default step is 1) for the data type (applies to numeric data types and their derived types).
enumerationEnumerations for the data type (applies to string and its derived types).
enumerationRefEnumerations for the data type, obtained at run-time from the value of a specified parameter (applies to string and its derived types; A.2.3.7).
patternPatterns for the data type (applies to string and its derived types). Pattern value syntax is the same as for XML Schema regular expressions. See [Section F/12].
unitsUnits for the data type (applies to numeric data types and their derived types).
defaultObject, factory, implementation or parameter default.
- Object defaults apply only to parameters that can be created as a result of an AddObject RPC.
- Factory defaults apply to all parameters (if a factory default is specified, it also acts as object default for applicable parameters).
- Implementation defaults apply to all parameters (they are informational defaults that are likely after a reset or if no other value is available).
- Parameter defaults apply only to command and event arguments.
+ +

It is important to note that the enumeration facet does not necessarily +define all the valid values for a data type. This is for the following +reasons:

+ +
    +
  • As specified in Section 3.3, vendors are allowed to add additional +enumeration values.

  • +
  • A future version of a data model may need to add additional +enumeration values.

  • +
+ +

A.2.3.4 Reference Path Names

+ +

Some description templates (A.2.2.4), and all reference facets +(A.2.3.7), need to specify parameter or object names. It is always +possible to specify a full Path Name, but it is frequently necessary or +convenient to specify a relative Path Name. For example, it might be +necessary to reference another parameter in the current object. Any +Instance Numbers in the parameter’s full Path Name cannot be known at +data model definition time, so this can only be done using a relative +Path Name.

+ +

The following rules apply to all Path Names that are used in data model +definitions for referencing parameters or objects:

+ +
    +
  • Path Names MAY contain “{i}” placeholders, which MUST be interpreted +as wild cards matching all Instance Numbers, e.g. +“Device.Ethernet.Interface.{i}.” references all Ethernet.Interface +instances.

  • +
  • Path Names MUST NOT contain Instance Numbers.

  • +
+ +

A Path Name is always associated with a path name scope, which defines +the point in the naming hierarchy relative to which the Path Name +applies.

+ +
+ + +++ + + + + + + + + + + + + + + + +
Table 5: Path Name Scope Definition
NameDescription
normalThis is a hybrid scope which usually gives the desired behavior:
- If the path begins with a “Device” component, it is relative to +the top of the naming hierarchy.
- If the path begins with a dot, it is relative to the Root or +Service Object (c.f. scope=model).
- Otherwise, the path is relative to the current object (c.f. +scope=object).
modelThe path is relative to the Root or Service Object.
objectThe path is relative to the current object.
+ +

Formally, if the path name scope is normal:

+ +
    +
  • If the path is empty, it MUST be regarded as referring to the top of +the naming hierarchy.

  • +
  • Otherwise, if the path begins with a “Device” component, it MUST be +regarded as a full Path Name.

  • +
  • Otherwise, if the path begins with a dot (“.”), it MUST be regarded +as a path relative to the Root or Service Object. For example, in +the Device Root Object “.DeviceInfo.” means “Device.DeviceInfo.”, +and in the Device.Services.ABCService.1 Service Object it means +“Device.Services.ABCService.1.DeviceInfo.”.

  • +
  • Otherwise, it MUST be regarded as a path relative to the current +object. Any leading hash characters (“#”) cause it to be relative +to the parent of the current object (or the parent’s parent, and so +on) as described below. For example, if the current object is +“Device.LAN.”, “IPAddress” means “Device.LAN.IPAddress”, +“Stats.” means “Device.LAN.Stats.” and “#.DeviceInfo.” means +“Device.DeviceInfo” (see below for more “#” examples).

  • +
+ +

If the path name scope is model:

+ +
    +
  • If the path is empty, it MUST be regarded as referring to the Root +or Service Object.

  • +
  • Otherwise, it MUST be regarded as a path relative to the Root or +Service Object. Any leading dot MUST be ignored. Leading hash +characters are not permitted.

  • +
+ +

If the path name scope is object:

+ +
    +
  • If the path is empty, it MUST be regarded as referring to the +current object.

  • +
  • Otherwise, it MUST be regarded as a path relative to the current +object. Any leading dot MUST be ignored. Leading hash characters are +not permitted.

  • +
+ +

As mentioned above, if the path name scope is normal, a leading hash +character causes the path to be relative to the parent of the current +object. Additional hash characters reference the parent’s parent, and so +on, but they MUST NOT be used to reference beyond the Root or Service +Object. Also, for object instances, “#.” always means the +Multi-Instance Object’s (table’s) parent rather than the Multi-Instance +Object (table).

+ +

In addition, within a component definition, items that are defined +outside the component MUST NOT be referenced via relative paths. This is +because components can be included anywhere within the data model tree.

+ +

For example, if the current object is “Device.LAN.DHCPOption.{i}.”:

+ +
    +
  • “#.” means “Device.LAN.” (the table’s parent, not the table).

  • +
  • “#.DHCPOption.” means “Device.LAN.DHCPOption.” (the table).

  • +
  • “#.Stats.” means “Device.LAN.Stats.”.

  • +
  • “#.Stats.TotalBytesSent” means “Device.LAN.Stats.TotalBytesSent”.

  • +
+ +

The following examples would be invalid if LAN was defined within a +component:

+ +
    +
  • “##.” means “Device.”.

  • +
  • “##.DeviceInfo.” means “Device.DeviceInfo.”.

  • +
  • “##.DeviceInfo.Manufacturer” means +“Device.DeviceInfo.Manufacturer”.

  • +
+ +

The final example can never be valid:

+ +
    +
  • “###.” is not permitted (references beyond the Root Object).
  • +
+ +

Note that the term “Root or Service Object”, which is used several times +above, means “if within a Service Object instance, the Service Object +instance; otherwise, the Root Object”.

+ +

For example, the pathRef and instanceRef facets (A.2.3.7) have a +targetParent attribute which specifies the possible parent(s) of the +referenced parameter or object, and a targetParentScope attribute +(defaulted to normal) which specifies targetParent’s scope. If the +current object is within a Service Object instance, setting +targetParentScope to model forces the referenced parameter or object to +be in the same Service Object instance. Similarly, setting +targetParentScope to object forces the referenced parameter or object to +be in the same object or in a sub-object.

+ +

A.2.3.5 Null Values and References

+ +

Each primitive data type has an associated null value that is used, for +example, as the expansion of the {{null}} template (A.2.2.4). These null +values are defined as follows:

+ +
    +
  • base64, hexBinary, string: an empty string

  • +
  • unsignedInt, unsignedLong: 0

  • +
  • int, long: -1

  • +
  • boolean: false

  • +
  • dateTime: 0001-01-01T00:00:00Z (the Unknown Time; see Section 3.2.1)

  • +
+ +

A null reference indicates that a reference parameter is not currently +referencing anything. The value that indicates a null reference is the +null value for the reference parameter’s base data type, i.e.:

+ +
    +
  • string: an empty string

  • +
  • unsignedInt: 0

  • +
  • int: -1

  • +
+ +

A.2.3.6 Reference Types

+ +

A reference to another parameter or object can be weak or strong:

+ +
    +
  • weak: it does not necessarily reference an existing parameter or +object. For example, if the referenced parameter or object is +deleted, the value of the reference parameter might not get updated. +All weak reference parameters MUST be declared as writable.

  • +
  • strong: it always either references a valid parameter or object, +or else is a null reference (A.2.3.5). If the referenced parameter +or object is deleted, the value of the reference parameter is always +set to a null reference.

  • +
+ +

See Section 3.2.3 for normative requirements relating to reference types +and the associated Agent behavior.

+ +

A.2.3.7 Reference Facets

+ +

A reference facet specifies how a parameter can reference another +parameter or object. There are three sorts of reference:

+ +
    +
  • Path reference: references another parameter or object via its +Path Name. Details are specified via the pathRef facet, which +applies to string and its derived types.

  • +
  • Instance reference: references an object instance (table row) +via its Instance Number. Details are specified via the instanceRef +facet, which applies to int, unsignedInt and their derived types.

  • +
  • Enumeration reference: references a list-valued parameter via +its Path Name. The current value of the referenced parameter +indicates the valid enumerations for this parameter. Details are +specified via the enumerationRef facet, which applies to string and +its derived types.

  • +
+ +

When defining a path reference, the following attributes and elements +are relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 6: PathRef Facet Definition
NameDescription
targetParentAn XML list of Path Names that can restrict the set of parameters and objects that can be referenced. If the list is empty (the default), then anything can be referenced. Otherwise, only the immediate children of one of the specified objects can be referenced.
A “{i}” placeholder in a Path Name acts as a wild card, e.g. “Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.”. Path Names cannot contain explicit Instance Identifiers.
targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
targetTypeSpecifies what types of item can be referenced:
- any: any parameter or object can be referenced (default)
- parameter: any parameter can be referenced
- object: any object can be referenced
- single: any single-instance object can be referenced
- table: any Multi-Instance Object (table) can be referenced
- row: any Multi-Instance Object (table) instance (row) can be referenced
targetDataTypeSpecifies the valid data types for the referenced parameter. Is relevant only when targetType is any or parameter.
Possible values are as follows:
- any: a parameter of any data type can be referenced (default)
- base64: only a base64 parameter can be referenced
- boolean: only a boolean parameter can be referenced
- dateTime: only a dateTime parameter can be referenced
- hexBinary: only a hexBinary parameter can be referenced
- integer: only an integer (int, long, unsignedInt or unsignedLong) parameter can be referenced
- int: only an int parameter can be referenced
- long: only a long (or int) parameter can be referenced
- string: only a string parameter can be referenced
- unsignedInt: only an unsignedInt parameter can be referenced
- unsignedLong: only an unsignedLong (or unsignedInt) parameter can be referenced
- <named data type>: only a parameter of the named data type can be referenced
In addition, a parameter whose data type is derived from the specified data type can be referenced. The built-in type hierarchy (a simplified version of the XML Schema type hierarchy) is as follows:
any
  base64
  boolean
  dateTime
  hexBinary
  integer
    long
      int
    unsignedLong
      unsignedInt
  string
Note that any and integer are not valid parameter data types. They are included in order to support “can reference any data type” and “can reference any numeric data type”.
refTypeSpecifies the reference type (A.2.3.6): weak or strong.
+ +

When defining an instance reference, the following attributes and +elements are relevant (normative requirements are specified in the +schema).

+ +
+ + +++ + + + + + + + + + + + + + + + +
Table 7: InstanceRef Facet Definition
NameDescription
targetParentSpecifies the Path Name of the Multi-Instance Object (table) of which an instance (row) is being referenced.
“{i}” placeholders and explicit Instance Identifiers are not permitted in the Path Name. targetParentScope can be used to specify Path Names relative to the Root or Service Object or the current object.
targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
refTypeSpecifies the reference type (A.2.3.6): weak or strong.
+ +

When defining an enumeration reference, the following attributes and +elements are relevant (normative requirements are specified in the +schema).

+ +
+ + +++ + + + + + + + + + + + + + + + +
Table 8: EnumerationRef Facet Definition
NameDescription
targetParamSpecifies the Path Name of the list-valued parameter whose current value indicates the valid enumerations for this parameter.
targetParamScopeSpecifies the point in the naming hierarchy relative to which targetParam applies (A.2.3.4): normal (default), model or object.
nullValueSpecifies the parameter value that indicates that none of the values of the referenced parameter currently apply (if not specified, no such value is designated).
Note that if this parameter is list-valued then nullValue is not relevant, because this condition will be indicated by an empty list.
+ +

The following examples illustrate the various possible types of +reference.

+ +
    <object name="PeriodicStatistics.SampleSet.{i}.Parameter.{i}." ...>
+      ...
+      <parameter name="Reference" access="readWrite">
+        <description>Reference to the parameter that is associated with this
+        object instance. This MUST be the parameter's full path name.</description>
+        <syntax>
+          <string>
+            <size maxLength="256"/>
+            <pathRef targetType="parameter" refType="weak"/>
+          </string>
+          <default type="object" value=""/>
+        </syntax>
+      </parameter>
+ +
    <object name="StorageService.{i}.StorageArray.{i}." ...>
+      ...
+      <parameter name="PhysicalMediumReference" access="readWrite">
+        <description>A comma-separated list of Physical Medium references.
+        Each Physical Medium referenced by this parameter MUST exist within the
+        same StorageService instance. A Physical Medium MUST only be referenced
+        by one Storage Array instance. Each reference can be either in the form
+        of ".PhysicalMedium.{i}" or a fully qualified object
+        name...</description>
+        <syntax>
+          <list>
+            <size maxLength="1024"/>
+          </list>
+          <string>
+            <pathRef targetParent=".PhysicalMedium." targetParentScope="model"
+            targetType="row" refType="strong"/>
+          </string>
+        </syntax>
+      </parameter>
+ +
    <object name="STBService.{i}.Components.FrontEnd.{i}.IP.Inbound.{i}." ...>
+      ...
+      <parameter name="StreamingControlProtocol" access="readOnly">
+        <description>Network protocol currently used for controlling streaming
+        of the source content, or an empty string if the content is not being
+        streamed or is being streamed but is not being controlled. If non-empty,
+        the string MUST be one of the .Capabilities.FrontEnd.IP.StreamingControlProtocols
+        values.</description>
+        <syntax>
+          <string>
+            <enumerationRef
+            targetParam=".Capabilities.FrontEnd.IP.StreamingControlProtocols"
+            nullValue=""/>
+          </string>
+        </syntax>
+      </parameter>
+
+      <parameter name="StreamingTransportProtocol" access="readOnly">
+        <description>Network protocol currently used for streaming the source
+        content, or an empty string if the content is not being streamed.
+        If non-empty, the string MUST be one of the
+        .Capabilities.FrontEnd.IP.StreamingTransportProtocols
+        values.</description>
+        <syntax>
+          <string>
+            <enumerationRef
+            targetParam=".Capabilities.FrontEnd.IP.StreamingTransportProtocols"
+            nullValue=""/>
+          </string>
+        </syntax>
+      </parameter>
+ +
    <object name="Device.WiFi.AccessPoint.{i}.Security." ...>
+      ...
+      <parameter name="ModeEnabled" access="readWrite">
+        <description>Indicates which security mode is enabled.</description>
+        <syntax>
+          <list/>
+          <string>
+            <enumerationRef targetParam="ModesSupported"/>
+          </string>
+        </syntax>
+      </parameter>
+ +

A.2.3.8 Base Type Restriction

+ +

A new data type MUST always be a restriction of its base type, meaning +that a valid value of the new data type will always be a valid value for +its base type. This is the case for the examples of A.2.3.1, which +involve three different data types:

+ +
    +
  • string of unlimited length

  • +
  • string of maximum length 255

  • +
  • string of maximum length 127

  • +
+ +

Clearly a string of length 100 is valid for all three data types, but a +string of length 200 is only valid for the first two data types.

+ +

The examples of A.2.3.1 considered only the size facet, but in general +all facets that are applicable to the data type have to be considered. +The base type restriction requirements for each facet are as follows:

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 9: XML Facet Inheritance Rules
FacetRequirements
sizeThe derived data type can define sizes in any way, provided that the new sizes do not permit any values that are not valid for the base type.
pathRefThe derived data type can modify the data type in the following ways:
- By “promoting” status to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
- By changing targetParent to narrow the set of possible parent objects.
- By changing targetType to narrow the set of possible target types.
- By changing targetDataType to narrow the set of possible target data types.
instanceRefThe derived data type can modify the data type in the following ways:
- By “promoting” status to a “higher” value, as described for pathRef.
- By changing targetParent to narrow the set of possible parent objects.
rangeThe derived data type can define ranges in any way, provided that the new ranges do not permit any values that are not valid for the base type.
enumerationThe derived data type can modify existing enumeration values in the following ways:
- By “promoting” access from readOnly to readWrite or writeOnceReadOnly.
- By “promoting” status to a “higher” value, as described for pathRef.
- By “promoting” optional from False to True.
- By adding a code, if none was previously specified.
- By using the action attribute to prefix, extend or replace the description (see below and A.2.12.6).
The derived data type can add new enumeration values.
enumerationRefThe derived data type can modify the data type by “promoting” status to a “higher” value, as described for pathRef.
patternThe derived data type can modify existing pattern values by changing access, status, optional and description exactly as for enumerations.
The derived data type can add new patterns and/or replace existing patterns with new patterns, provided that the new patterns do not permit any values that are not valid for the base type. For example a single pattern “[AB]” could be replaced with “A” and “B”, but “C” could not be added.
unitsThe derived data type can add units if the base type did not specify any.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors. For example, if the base type supports a +range of [-1:4095] but the values 0 and 4095 were included in error, +it would be permissible for a derived type to support ranges of +[-1:-1] and [1:4094]. Processing tools SHOULD be able to detect and +warn about such cases.

+ +

When defining a new data type, if a facet is omitted, the new data type +will inherit that facet from its base type. If a facet is present, it +MUST be fully specified (except that special rules apply to +descriptions; see below and A.2.12.6). For example, this means that a +derived type that adds additional enumeration values has also to +re-declare the enumeration values of the base type.

+ +

In the following example, the derived type inherits the units facet from its +parent but it does not inherit the range facet, so the DataBlockSize range is +[0:65535] and the DataBlockSize2 range is [40:1460].

+ +
   <dataType name="DataBlockSize">
+     <unsignedInt>
+       <range maxInclusive="65535"/>
+       <units value="bytes"/>
+     </unsignedInt>
+   </dataType>
+
+   <dataType name="DataBlockSize2" base="DataBlockSize">
+     <range minInclusive="40" maxInclusive="1460"/>
+   </dataType>
+ +

Similarly, in the following, the enumeration values for ABCD are not A, +B, C and D, but are just C and D. This is an error (because the derived +type cannot remove enumeration values), and processing tools SHOULD +detect and warn about such cases.

+ +
    <dataType name="AB">
+      <string>
+        <enumeration value="A"/>
+        <enumeration value="B"/>
+      </string>
+    </dataType>
+
+    <dataType name="ABCD" base="AB">
+      <string>
+        <enumeration value="C"/>
+        <enumeration value="D"/>
+      </string>
+    </dataType>
+ +

A derived data type and any of its facets that support descriptions will +inherit those descriptions from the base type. Facet descriptions are +inherited regardless of whether the facet is present in the derived +type. For any descriptions that are explicitly specified in the derived +type, the action attribute controls whether they will be prefixed, +extended or replaced (A.2.12.6).

+ +

For example, in the following, the description of Z (which is not +changed) does not have to be repeated.

+ +
    <dataType name="XY">
+      <description>This is XY.</description>
+      <string>
+        <enumeration value="X">
+          <description>This is X.</description>
+        </enumeration>
+        <enumeration value="Y">
+          <description>This is Y.</description>
+        </enumeration>
+        <enumeration value="Z">
+          <description>This is Z.</description>
+        </enumeration>
+      </string>
+    </dataType>
+
+    <dataType name="XY2" base="XY">
+      <description action="replace">This is all about XY.</description>
+      <enumeration value="X">
+        <description action="append">This is more about X, added at the
+        end.</description>
+      </enumeration>
+      <enumeration value="Y">
+        <description action="prefix">This is more about Y, inserted at the
+        beginning.</description>
+      </enumeration>
+      <enumeration value="Z"/>
+    </dataType>
+ +

A.2.4 Glossary, Abbreviations, Bibliography and Templates

+ +

A.2.4.1 Glossary

+ +

The glossary is defined using the top-level glossary element, which can +contain zero or more item elements.

+ +

When defining a new glossary item, the following attributes and elements +are relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + +
Table 10: XML Glossary Items
NameDescription
idThe glossary item ID. This is the term that is being defined.
descriptionThe description of the glossary item. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
+ +

A.2.4.2 Abbreviations

+ +

Abbreviations are defined using the top-level abbreviations element, +which can contain zero or more item elements.

+ +

When defining a new abbreviation, the following attributes and elements +are relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + +
Table 11: XML Abbreviation Items
NameDescription
idThe abbreviation item ID. This is the abbreviation that is being defined.
descriptionThe description of the abbreviation. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
+ +

A.2.4.3 Bibliography

+ +

The bibliography is defined using the top-level bibliography element, +which can contain zero or more (bibliographic) reference elements.

+ +

When defining a new bibliographic reference, the following attributes +and elements are relevant (normative requirements are specified in the +schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 12: XML Bibliographic References
NameDescription
idThe bibliographic reference ID.
nameThe name by which the referenced document is usually known.
titleThe document title.
organizationThe organization that published the referenced document, e.g. BBF, IEEE, IETF.
categoryThe document category, e.g. TR (BBF), RFC (IETF).
dateThe publication date.
hyperlinkHyperlink(s) to the document.
+ +

For BBF standard DM Instances, the C.3.7 rules apply.

+ +

Processing tools SHOULD be lenient when comparing bibliographic +reference IDs. Specifically, they SHOULD ignore all whitespace, +punctuation, leading zeros in numbers, and upper / lower case. So, for +example, “rfc 1234” and “RFC1234” would be regarded as the same ID, as +would “TR-069” and “TR69”.

+ +

Processing tools SHOULD detect and report inconsistent bibliographic +references, e.g. a reference with the same ID (i.e. an ID that compares +as equal) as one that was encountered in a different file, but with a +different name or hyperlink.

+ +

A.2.4.4 Templates

+ +
+

The term “template” is used for both description templates +(A.2.2.4) such as {{bibref}} and (confusingly) +{{template}}, and for the template elements described here.

+ +

Template elements define named blocks of text that can be included (using +{{template}} description templates) in descriptions.

+ +

When defining a new template element, the following attributes and elements are +relevant (normative requirements are specified in the schema).

+ +
+ + + + + + + + + + + + + + +
Table 13: XML Template Elements
NameDescription
idThe template ID. This identifies the template that is being defined.
<body>The template body.
+ +

When including a template body in a description, processing tools MUST +pre-process the value as for descriptions (A.2.2.2) and +then replace the {{template}} description template with the resulting +text. The template body might contain markup, possibly including further +{{template}} description templates, so processing tools MUST then process the +expanded text.

+ +

A.2.5 Components

+ +

A component is a way of defining a named set of parameters, objects +and/or profiles to be used wherever such a group is needed in more than +one place (or just to structure the definitions). A DM Instance can +contain zero or more top-level component elements.

+ +

When defining a new component, the following attributes and elements are +relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 14: XML Component Definition
NameDescription
nameThe component name.
descriptionThe component’s description (A.2.2).
componentThe other components that are referenced (included) by this component.
parameterThe component’s top-level parameter definitions (A.2.7).
objectThe component’s object definitions (A.2.10).
profileThe component’s profile definitions (A.2.11).
+ +

Referencing (including) a component can be thought of as textual +substitution. A component has no version number and is not tied to a +particular Root or Service Object.

+ +

The following is a simple example of component definition and reference.

+ +
    <component name="ByteStats">
+      <parameter name="BytesSent" access="readOnly">
+        <description>Number of bytes sent.</description>
+        <syntax><unsignedInt/></syntax>
+      </parameter>
+      <parameter name="BytesReceived" access="readOnly">
+        <description>Number of bytes received.</description>
+        <syntax><unsignedInt/></syntax>
+      </parameter>
+    </component>
+ +
    <model name="Device:2.11">
+      <object name="Device." access="readOnly" minEntries="1"
+      maxEntries="1">
+        ...
+        <component ref="ByteStats"/>
+        ...
+      </object>
+      ...
+    </model>
+ +

Here the component is referenced from within an object definition. +Components can be referenced from within component, model, object, +command and event definitions. Parameter, command, event, object and +profile definitions within components are relative to the point of +inclusion unless overridden using the path attribute.

+ +

A.2.6 Root and Service Objects

+ +

Root and Service Objects are defined using the model element and an +associated top-level object element. A DM Instance can contain zero or +more top-level model elements.

+ +

When defining a new model, the following attributes and elements are +relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 15: XML Root and Service Objects
NameDescription
nameThe model name, including its major and minor version numbers.
baseThe name of the previous version of the model (for use when the model version is greater than 1.0).
isServiceWhether it is a Service Object. This defaults to False and so can be omitted for Root Objects.
descriptionThe model’s description (A.2.2).
componentThe components that are referenced (included) by the model (A.2.5).
parameterThe model’s top-level parameter definitions (A.2.7).
objectThe model’s top-level and other object definitions (A.2.10).
profileThe model’s profile definitions (A.2.11).
+ +

Once a given version has been defined, it cannot be modified; instead, a +new version of the object has to be defined. For example, the following +example defines v1.0 and v1.1 of a notional Service Object.

+ +
    <model name="DemoService:1.0" isService="true">
+      <parameter name="DemoServiceNumberOfEntries" access="readOnly"/>
+      <object name="DemoService.{i}." access="readOnly" minEntries="0"
+      maxEntries="unbounded" entriesParameter="DemoServiceNumberOfEntries"/>
+    </model>
+ +
    <model name="DemoService:1.1" base="DemoService:1.0"
+    isService="true">
+      <object base="DemoService.{i}." access="readOnly" minEntries="0"
+      maxEntries="unbounded"/>
+    </model>
+ +

A.2.7 Parameters

+ +

Parameters are defined using the parameter element, which can occur +within component, model and object elements. When defining a new +parameter, the following attributes and elements are relevant (normative +requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 16: XML Parameter Definition
NameDescription
nameThe parameter name (Section 3.1).
accessWhether the parameter is writable (readWrite), read-only (readOnly), or writable once then read-only (writeOnceReadOnly).
statusThe parameter’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new parameter.
activeNotifyThe parameter’s {normal, forceEnabled, forceDefault, canDeny} Active Notification status. This defaults to normal, and so is not often specified for a new parameter.
Note that in USP, forceEnabled and forceDefault are equivalent to normal.
forcedInformFor CWMP only, the parameter’s Forced Inform status. This defaults to False, and so is not often specified for a new parameter.
descriptionThe parameter’s description (A.2.2).
syntaxThe parameter’s syntax (A.2.7.1).
+ +

A.2.7.1 Parameter Syntax

+ +

Parameter syntax is defined using the syntax element, which can occur +only within parameter elements. When defining a new parameter, the +following attributes and elements are relevant (normative requirements +are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 17: XML Parameter Syntax
NameDescription
hiddenWhether the value is hidden on readback. This defaults to False, and so is not often specified for a new parameter.
commandFor CWMP only, whether setting the parameter triggers an Agent action as opposed to changing the configuration. This defaults to False.
Note that this is an CWMP-only attribute (not an element) and is different from the USP-only command element (A.2.8).
list
minItems
maxItems
nestedBrackets
size
If the parameter is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3).
Note that a list-valued parameter is always a string as far as the protocol is concerned. For a list, the rest of the syntax specification refers to the individual list items, not to the parameter value.
base64
boolean
dateTime
hexBinary
int
long
string
unsignedInt
unsignedLong
If the parameter is of a primitive data type, specifies a primitive data type reference, e.g. <int>. If the parameter data type is derived from a primitive data type, specifies an anonymous primitive data type definition (A.2.3.2), e.g. <int><range maxInclusive=“255”/></int>. Each primitive data type element supports only the facets (A.2.3.3) that are appropriate to that data type.
dataTypeIf the parameter is of a named data type, specifies a named data type (A.2.3.1) reference, e.g. <dataType ref=“IPAddress”/>.
If the parameter data type is derived from a named data type, specifies an anonymous named data type (A.2.3.2) definition, e.g. <dataType base=“IPAddress”><size maxLength=“15”/></dataType>
+ +

A.2.8 Commands (USP Only)

+ +

Data Model Commands are defined using the command element, which can +occur within component and object elements. When defining a new Data +Model Command, the following attributes and elements are relevant +(normative requirements are specified in the schema). This concept does +not apply to CWMP, which uses Objects and/or Parameters to simulate +commands.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 18: XML Command Definition
NameDescription
nameThe command name (Section 3.1).
asyncWhether this command is asynchronous or not. This defaults to false.
statusThe command’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new command.
descriptionThe command’s description (A.2.2).
inputThe command’s input arguments (can be omitted if there are none).
outputThe command’s output arguments (can be omitted if there are none).
+ +

The input / output elements define the command’s input / output +arguments (respectively).

+ +
+ + +++ + + + + + + + + + + + + + + + +
Table 19: XML Command Input / Output Arguments Definition
NameDescription
componentThe arguments defined by components that are referenced (included) by the command (A.2.5).
parameterThe command’s parameter arguments (A.2.7).
objectThe command’s object arguments (A.2.10).
+ +

Command argument parameter / object elements are similar to the +corresponding data model parameter / object elements but support +different attributes, e.g. they have no access or numEntriesParameter +attributes, and they have a Boolean mandatory attribute (to indicate a +mandatory argument).

+ +

When a command references a component, any attributes not supported in +command arguments are ignored. This allows a component that defines data +model parameters / objects to be used for defining command parameter / +object arguments.

+ +

When a command argument is a table, its instance numbers MUST be 1, 2, +3… (assigned sequentially without gaps).

+ +

A.2.9 Events (USP Only)

+ +

Data Model Events are defined using the event element, which can occur +within component and object elements. When defining a new Data Model +Event, the following attributes and elements are relevant (normative +requirements are specified in the schema). This concept does not apply +to CWMP.

+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
nameThe event name (Section 3.1).
statusThe event’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new event.
descriptionThe event’s description (A.2.2).
componentThe arguments defined by components that are referenced (included) by the event (A.2.5).
parameterThe event’s parameter arguments (A.2.7).
objectThe event’s object arguments (A.2.10).
+ +

Event argument parameter / object elements are similar to the +corresponding data model parameter / object elements but support +different attributes, e.g. they have no access or numEntriesParameter +attributes, and they have a Boolean mandatory attribute (to indicate a +mandatory argument).

+ +

When an event references a component, any attributes not supported in +event arguments are ignored. This allows a component that defines data +model parameters / objects to be used for defining event parameter / +object arguments.

+ +

When an event argument is a table, its instance numbers MUST be 1, 2, +3… (assigned sequentially without gaps).

+ +

A.2.10 Objects

+ +

Objects are defined using the object element, which can occur within +component and model elements. When defining a new object, the following +attributes and elements are relevant (normative requirements are +specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 20: XML Object Definition
NameDescription
nameThe object name, specified as a partial path (Section 3.1).
accessWhether object instances can be Added or Deleted (readWrite) or not (readOnly). Adding or deleting instances is meaningful only for a Multi-Instance Object (table).
minEntriesThe minimum number of instances of this object (always less than or equal to maxEntries).
maxEntriesThe maximum number of instances of this object (can be “unbounded”). minEntries and maxEntries allow the object to be placed into one of three categories:
- minEntries=0, maxEntries=1: single-instance object which might not be allowed to exist, e.g. because only one of it and another object can exist at the same time. Note that this is not the same thing as an optional object (in a sense, all objects are optional; requirements are specified via profiles). For an object with minEntries=0, maxEntries=1, the description MUST explain why it might not be allowed to exist, e.g. referencing the other objects that constrain it.
- minEntries=1, maxEntries=1: single-instance object that is always allowed to exist.
- All other cases: Multi-Instance Object (table) (A.2.10.1).
mountTypeFor USP only, denotes whether this object is a Mountable Object, a Mount Point, or none. Possible values are:
- mountable: this object is a Mountable Object. Such an object appears only right under the Root Object.
- mountPoint: this object is a Mount Point.
- none (default): this object is neither a Mountable Object nor a Mount Point.
statusThe object’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new object.
descriptionThe object’s description (A.2.2).
componentThe components that are referenced (included) by the object (A.2.5).
parameterThe object’s parameter definitions (A.2.7).
commandFor USP only, the object’s command definitions (A.2.8).
eventFor USP only, the object’s event definitions (A.2.9).
+ +

A.2.10.1 Tables

+ +

If an object is a table, several other attributes and elements are +relevant (normative requirements are specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 21: XML Table Definition
NameDescription
nameFor a table, the last part of the name has to be “{i}.” (Section 3.1).
numEntriesParameterThe name of the parameter (in the parent object) that contains the number of entries in the table. Such a parameter is needed whenever there is a variable number of entries, i.e. whenever maxEntries is unbounded or is greater than minEntries.
enableParameterFor CWMP only, the name of the parameter (in each table entry) that enables and disables that table entry. Such a parameter is needed whenever access is readWrite (so the Controller might be able to create entries) and at least one uniqueKey element that defines a functional key is present.
uniqueKeyAn element that specifies a unique key by referencing those parameters that constitute the unique key (all of these parameters are single-valued, i.e. not list-valued).
In CWMP only, for a non-functional key, or if the table has no enableParameter, the uniqueness requirement always applies; for a functional key, and if the table has an enableParameter, the uniqueness requirement applies only to enabled table entries.
discriminatorParameterThe name of the parameter (in the parent object) that selects which of the available objects that are part of the same union to use. Such a discrimination parameter is needed whenever there are multiple alternative sub-objects, i.e. objects where minEntries=0 and maxEntries=1.
+ +

Each unique key is either functional or non-functional:

+ +
    +
  • A functional key references at least one parameter that is necessary for the correct operation of the table, e.g., a DHCP option tag in a DHCP option table, or an external port number in a port mapping table.

  • +
  • A non-functional key references only parameters that are not necessary for the correct operation of the table, e.g., an Alias parameter or (sometimes) a Name parameter.

  • +
+ +

A unique key is assumed to be functional unless explicitly marked as +non-functional by setting the unique key’s functional attribute to +false.

+ +

As can be seen from the description in Table 21, in CWMP, +non-functional keys are always required to be unique, regardless of whether the +table has an enableParameter, or is enabled or disabled. Therefore, at most one +entry in a given parent object can exist with a given value for a +non-functional unique key. USP doesn’t require any different behavior for both +functional and non-functional keys: all keys are always required to be unique.

+ +

The uniqueness requirement means that the value of the unique key MUST +be unique for all instances of a given parent object regardless of how +instances got created.

+ +

If a parameter (or group of parameters) is not defined as a unique key, +an Agent MUST NOT expect or require those parameters to contain a value +that is unique within the table. Such parameters MAY subsequently be +defined as a vendor-specific data model composite unique key, but that +composite unique key definition MUST include at least one +vendor-specific parameter.

+ +

A.2.11 Profiles

+ +

Profiles are defined using the profile element, which can occur within +component and model elements. When defining a new profile, the following +attributes and elements are always relevant (normative requirements are +specified in the schema).

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 22: XML Profile Definition
NameDescription
nameThe profile name, including its version number (Section 2.3.3).
baseThe name of the previous version of the profile (for use when the profile version is greater than 1).
extendsA list of the names of the profiles that this profile extends.
minVersionA list of the model names that define the minimum versions for which this profile can be defined. Note that it is only necessary to specify this if the profile is defined within a component element.
descriptionThe profile’s description (A.2.2).
parameterThe profile’s parameter requirements, which can include descriptions, references to the parameters in question, and the parameter access requirement.
objectThe profile’s object requirements, which can include descriptions, references to the objects in question, the object access requirements, and requirements for the object’s parameters, commands and events, including requirements for command and event arguments.
+ +

Note:

+ +
    +
  • If a command or event specifies no argument requirements, this is +the same as if all of its mandatory arguments were listed.

  • +
  • If a command or event specifies argument requirements, it has to +list (at least) all its mandatory arguments.

  • +
+ +

A.2.12 Modifications

+ +

New data types, components, models and profiles can be created based on +existing items. This does not modify the existing item.

+ +

Parameters, commands, events, objects and profiles can be modified “in +place”, i.e. without creating a new item. This still uses the parameter, +command, event, object and profile elements, and is indicated by using +the base, rather than the name, attribute. The base attribute specifies +the name of the existing item that is to be modified.

+ +

The syntax for modifying an item is the same as for creating an item, +but there are rules. These rules are not specified in the DM Schema.

+ +

A.2.12.1 Parameter Modifications

+ +

The following rules govern parameter modifications.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 23: XML Parameter Modification
NameDescription
accessCan be “promoted” from readOnly to readWrite or writeOnceReadOnly.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
activeNotifyCan be changed from forceEnabled to forceDefault. No other changes are permitted.
forcedInformCannot be changed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
syntax/hiddenCannot be changed.
syntax/listCan add or modify the list element in the following ways:
- Can convert a non-list string parameter to a list provided that an empty string was already a valid value with the appropriate meaning.
- Can adjust limits on numbers of items, and on the list size, provided that the new rules do not permit any values that were not valid for the previous version of the parameter.
syntax/int etc.
syntax/dataType
Can make any change that follows the base type restriction rules of A.2.3.8, e.g. can add enumerations.
syntax/defaultA default can be added if the parameter did not already have one.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a previous version of a parameter. +Processing tools SHOULD be able to detect and warn when a parameter is +modified in a way that contravenes the above rules.

+ +

A.2.12.2 Command Modifications (USP Only)

+ +

The following rules govern command modifications.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 24: XML Command Modification
NameDescription
asyncCan be changed.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
inputCan modify input arguments according to the rules for modifying data model parameters and objects. Can add new input arguments, either directly or by referencing (including) new components.
outputCan modify output arguments according to the rules for modifying data model parameters and objects. Can add new output arguments, either directly or by referencing (including) new components.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a previous version of a parameter. +Processing tools SHOULD be able to detect and warn when a parameter is +modified in a way that contravenes the above rules.

+ +

A.2.12.3 Event Modifications (USP Only)

+ +

The following rules govern command modifications.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + +
Table 25: XML Event Modification
NameDescription
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
componentCan add new arguments by referencing (including) new components.
parameterCan modify parameter arguments according to the rules for modifying data model parameters. Can add new parameter arguments.
objectCan modify object arguments according to the rules for modifying data model objects. Can add new object arguments.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a previous version of a parameter. +Processing tools SHOULD be able to detect and warn when a parameter is +modified in a way that contravenes the above rules.

+ +

A.2.12.4 Object Modifications

+ +

The following rules govern object modifications.

+ +
+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 26: XML Object Modification
NameDescription
accessCan be “promoted” from readOnly to readWrite.
minEntriesCannot be changed.
maxEntriesCannot be changed.
numEntriesParameterCannot be changed, unless was previously missing, in which case can be added.
enableParameterFor CWMP only, cannot be changed, unless was previously missing, in which case can be added.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
uniqueKeyCannot be changed, but new unique keys can be added.
componentCan reference (include) new components.
parameterCan add new parameters.
commandFor USP only, can add new commands.
eventFor USP only, can add new events.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a previous version of an object. +Processing tools SHOULD be able to detect and warn when an object is +modified in a way that contravenes the above rules.

+ +

A.2.12.5 Profile Modifications

+ +

The following rules govern profile modifications. They apply to the +profile element, and to its nested parameter, command, event and object +elements.

+ +
+ + +++ + + + + + + + + + + + +
Table 27: XML Profile Modification
NameDescription
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
+ +

Most of the above requirements are non-normative, because it has to be +possible to correct errors in a profile. Indeed, since profiles are +immutable, the only valid reason for changing a profile is to correct +errors. Processing tools SHOULD be able to detect and warn when a +profile is modified in a way that contravenes the above rules.

+ +

A.2.12.6 Description Modifications

+ +

The following rules govern description modifications. They apply to all +description elements.

+ +
+ + +++ + + + + + + + +
Table 28: XML Description Modification
NameDescription
actionDetermines how the description will be modified; allowed values are:
- create: create a new description (this is the default but is of course not permitted when modifying a description).
- replace: replace the existing description with the new text.
- append: append the new text to the existing description.
- prefix: prefix the existing description with the new text.
+ +

In the case of prefix and append, processing tools SHOULD insert +a line break between the existing description and the new text.

+ +

A.3 DM Schema

+ +

The normative version of the DM Schema can be found at +http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-6.xsd. Please be +aware that a new version of the DM Schema might be published at any +time, in which case the version referenced in this document would become +out of date. Any conflict MUST be resolved in favor of the normative +version on the web site.

+ +

Annex B: CWMP Device Type XML Schema

+ +

B.1 Introduction

+ +

The CWMP Device Type XML Schema [4], or DT Schema, is used for +describing a device’s supported data model.

+ +

DT Schema instance documents can contain the following:

+ +
    +
  • Imports (from DM Schema instance documents) of Root or Service +Object definitions

  • +
  • Declarations of which features of imported Root or Service Objects +are supported

  • +
+ +

DT Schema instance documents cannot contain definitions of Root or +Service Objects. All such definitions have to reside in DM Schema +instance documents.

+ +

B.2 Normative Information

+ +

It is possible to create instance documents that conform to the DT +Schema but nevertheless are not valid device type specifications. This +is because it is not possible to specify all the normative device type +specification requirements using the XML Schema language. Therefore, the +schema contains additional requirements written using the usual +normative language. Instance documents that conform to the DT Schema and +meet these additional requirements are referred to as DT Instances.

+ +

The question of the location of the definitive normative information +therefore arises. The answer is as follows:

+ +
    +
  • All the normative information in the main part of the document +remains normative.

  • +
  • The DT Schema, and the additional requirements therein, are +normative. Some of these additional requirements are duplicated (for +emphasis) in this Annex.

  • +
  • The DT Schema references additional material in this Annex. Such +material is normative.

  • +
  • If the DT Schema conflicts with a normative requirement in the main +part of the document, this is an error in the DT Schema, and the +requirement in the main part of the document takes precedence.

  • +
+ +

B.2.1 Importing DM Instances

+ +

DM Instances are imported using the top-level import element, which +differs from the DM Schema import element in that only data types and +models can be imported (components cannot be imported because they are +not used in DT Instances).

+ +

Note – the rules for importing DM Instances into DT Instances are +consistent with those given in A.2.1 for importing DM Instances into +other DM Instances. The only difference is an additional rule governing +the use, when available, of the DT Instance URL.

+ +

The DT Schema specifies that the DM Instance is located via the file +attribute.

+ +

The rules governing the file attribute’s value and its use for locating +the DM Instance are as follows:

+ +
    +
  • It MUST be a URL adhering to RFC 3986 [9].

  • +
  • If the URL includes a scheme, it MUST be http, https or ftp.

  • +
  • If the URL includes an authority, it MUST NOT include credentials.

  • +
  • For standard BBF DM Instances, the rules that apply to the filename +part (final path segment) of the A.2.1.1 BBFURL MUST be applied to +the filename part of this URL. This means that the corrigendum +number can be omitted in order to refer to the latest corrigendum.

  • +
  • If the URL is a relative reference, processing tools MUST apply +their own logic, e.g. apply a search path. If a DT Instance URL is +available, the relative reference MUST be interpreted relative to +the DT Instance URL.

  • +
+ +

B.2.2 Features

+ +

The feature element provides a simple way for a DT Instance to indicate +whether a given feature is supported. The current set of standard +features is as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureDescription
DNSClientDevice contains a DNS client.
DNSServerDevice contains a DNS server.
FirewallDevice contains a firewall.
IPv6Device supports IPv6.
NATDevice supports NAT.
RouterDevice is a router.
+ +

Vendor-specific features MAY be supported, and if so the feature name +MUST begin with X_<VENDOR>_, where <VENDOR> MUST be as defined in +Section 3.3.

+ +

This example feature declaration illustrates the use of annotation:

+ +
    <feature name="DNSServer">
+      <annotation>Supports a DNS Server and XYZ.</annotation>
+    </feature>
+ +

B.2.2.1 DT Features Schema

+ +

In order to make it easy to add new features, standard feature names are defined +in a separate DT Features Schema that is imported by the DT Schema. The DT Features +Schema is unversioned, so the DT Schema need not be changed when new +standard feature names are added. In order to preserve backwards +compatibility, standard feature names, once added, MUST NOT ever be +deleted.

+ +

The normative version of the DT Features Schema can be found at +http://www.broadband-forum.org/cwmp/cwmp-devicetype-features.xsd. +Please be aware that a new version of the DT Features Schema might be +published at any time, in which case the version referenced in this +document would become out of date. Any conflict MUST be resolved in +favor of the normative version on the web site.

+ +

B.3 DT Schema

+ +

The normative version of the DT Schema can be found at +http://www.broadband-forum.org/cwmp/cwmp-devicetype-1-3.xsd. Please be +aware that a new version of the DT Schema might be published at any +time, in which case the version referenced in this document would become +out of date. Any conflict MUST be resolved in favor of the normative +version on the web site.

+ +

Annex C: Requirements for BBF Standard Data Models

+ +

C.1 Introduction

+ +

This Annex defines requirements that apply to all standard BBF DM +Instances. These requirements extend the normative requirements of the +DM Schema (Annex A).

+ +

C.2 Character Encoding and Character Set

+ +

The file MUST use UTF-8 encoding, indicated by the following Initial +line:

+ +
  <?xml version="1.0" encoding="UTF-8"?>
+ +

The file MUST use only a subset of the printable characters in the Basic +Latin Unicode block, namely characters whose decimal ASCII +representation is 10 (#xA), 13 (#xD) or is in the (inclusive) range +32-126.

+ +

Note – writing LF (LINE FEED) for #xA and CR (CARRIAGE RETURN) for +#xD, the XML specification [Section 2.11/8] states that XML +processors have to behave as if all CR LF sequences, or any CR +characters not followed by LF, are translated to LF.

+ +

Note – TAB (#x9) is not permitted. This is because no standard +indentation level is defined for TAB characters, so the indentation is +ambiguous when there is a mixture of SPACE (#x20) and TAB +characters.

+ +

Note – it is not permissible to include a non-printable ASCII +character by using a character reference such as “&#xe8;”. Such a +character reference will always be replaced with the referenced +character before being passed to the application, so use of the +reference is no different from direct use of the referenced character +(in this case the letter “è”, an “e” with a grave accent).

+ +

C.3 XML Usage

+ +

C.3.1 Data Model Item Names

+ +

All data model item names, i.e. data type, component, data model, +object, parameter and profile names, MUST start with an upper-case +letter (or an underscore for an internal data type, component, model +or profile) and MUST NOT contain hyphens or non-initial underscores.

+ +

C.3.2 DM and DMR Schema Versions

+ +

The file SHOULD use the most recent approved versions of the DM and DMR +Schemas.

+ +

Note – the DMR Schema is a non-normative XML Schema that can be used +to give hints to processing tools that generate reports from DM +Instances.

+ +

C.3.3 SchemaLocation Attribute

+ +

The top-level xsi:schemaLocation attribute defines the location of all of the +referenced BBF-published XML Schemas. All URLs MUST be absolute ones that +reference the published XML Schema on the +BBF web site.

+ +

Example:

+ +
    xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-5
+                          http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-5.xsd
+                        urn:broadband-forum-org:cwmp:datamodel-report-0-1
+                          http://www.broadband-forum.org/cwmp/cwmp-datamodel-report.xsd"
+ +

C.3.4 Spec Attribute

+ +

The top-level spec attribute (A.2.1.1) indicates the specification with +which the file is associated. It MUST be of the form +“urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the specification +number (including leading zeros), i is the issue number, a is the +amendment number, and c is the corrigendum number. The issue, amendment +and corrigendum numbers do not include leading zeros. For example, +“urn:broadband-forum-org:tr-106-1-0-0” refers to TR-106 (Issue 1 +Amendment 0), and “urn:broadband-forum-org:tr-106-1-2-1” refers to +TR-106 (Issue 1) Amendment 2 Corrigendum 1.

+ +

Example:

+ +
    spec="urn:broadband-forum-org:tr-181-2-5-0"
+ +

C.3.5 File Attribute

+ +

The top-level file attribute (A.2.1.1) indicates the file name. It MUST +be of the form “tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where +nnn, i, a and c are the same as in the spec attribute. The label, which +MUST NOT begin with a digit, is only needed if more than one DM Instance +is associated with a given specification.

+ +

Example:

+ +
    file="tr-181-2-5-0.xml"
+ +

C.3.6 Import Element

+ +

The import element’s spec and file attributes MUST NOT specify the +corrigendum number. This means that an import element always references +the latest corrigendum (A.2.1.1).

+ +

C.3.7 Bibliography Reference Element

+ +
+

Bibliographic references in the tr-069-biblio.xml file MUST be grouped by +organization and MUST be sorted “naturally” (more-or-less alphabetically, but +avoiding surprises, e.g., “TR-181a9” would be listed before “TR-181a10”). The +main rule is “follow existing practice”.

+ +

The bibliography reference id attribute is intended to uniquely identify +this reference across all instance documents. Therefore, this attribute +MUST obey the following rules:

+ +

For a BBF Technical Report, it MUST be of the form “TR-nnnixaycz”, where +TR is the literal “TR”, nnn is the Technical Report number (including +leading zeros), i, a and c are literal letters, and x, y, and z are the +issue, amendment and corrigendum numbers (respectively). +Omitted issue, amendment or corrigendum numbers refer to the most recent issue, +amendment or corrigendum, so “TR-nnn” is the most recent corrigendum of the +most recent amendment of the most recent issue, “TR-nnni2” is the most recent +corrigendum of the most recent amendment of issue 2, etc.. Literal i1, a0 +and/or c0 can be used, if needed, to refer specifically to the initial version.

+ +
+

When using the {{bibref}} template to refer to bibliographic references, the +plain “TR-nnn” form SHOULD be used by default; more specific forms can be used +where the reference is to a specific version.

+ +

For an IETF RFC, it MUST be of the form “RFCnnn”, where RFC is the +literal “RFC” and nnn is the RFC number (no leading zeros).

+ +

For an IEEE specification, it SHOULD be of the form “nnn.ml-dddd”, where +nnn.m is the IEEE group, l is the spec letter(s), and dddd is the +publication year. For example, “802.1D-2004”.

+ +

For an ETSI specification (which includes DVB specifications), it SHOULD +be of the form “TTnnnnnnva.b.c” where TT is the specification type, +usually “TS” (Technical Specification), nnnnnn is the specification +number, and a.b.c is the version number.

+ +

For specifications issued by other standards organizations, or by +vendors, it SHOULD be of a standard form if one is defined.

+ +

Formally, bibliographic reference IDs in instance documents that are +published by the BBF and the other organizations mentioned above are +defined as follows:

+ +
    ReferenceID = BBFID
+                | RFCID
+                | IEEEID
+                | ETSIID
+                | OtherID
+
+    BBFID = "TR-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
+
+    BBFNumber = DIGIT{3,} // including leading zeros, e.g. 069
+
+    BBFIssue = "i" <number greater than one>
+             | "" // empty means the most recent Issue
+
+    BBFAmendment = "a" <number greater than zero>
+                 | "" // empty means the most recent Amendment
+
+    BBFCorrigendum = "c" <number greater than zero>
+                   | "" // empty means the most recent Corrigendum
+
+    RFCID = "RFC" RFCNumber
+
+    RFCNumber = NONZERODIGIT [DIGIT]*
+                              // no leading zeros, e.g. 123
+
+    IEEEID = IEEEGroup IEEESpec IEEEDate
+           | <for other IEEE specifications, of a standard form if one is defined>
+
+    IEEEGroup = <group number> "." <group sub-number>
+                                // e.g. 802.1
+
+    IEEESpec = <spec letter(s)> // e.g. D
+
+    IEEEDate = "-" <publication year>
+                                // e.g. -2004
+             | ""               // can be empty
+
+    ETSIID = ETSISpecType ETSINumber ETSIVersion
+           | <for other ETSI specifications, of a standard form if one is defined>
+
+    ETSISpecType = "TR" // Technical Report
+                 | "TS" // Technical Specification
+                 | "ES" // ETSI Specification
+                 | "EN" // European Standard
+
+    ETSINumber = [DIGIT]{6} // e.g. 102034
+
+    ETSIVersion = "v" <version number as specified by ETSI>
+                | ""            // can be empty
+
+    OtherURI = <of a standard form if one is defined>
+ +

C.3.8 General Formatting

+ +

The file MUST use 2 SPACE characters for indentation.

+ +

The file MUST be consistently indented, including within XML comments.

+ +

XML comment lines SHOULD NOT be longer than 79 characters. This avoids +line wrap in most text editors.

+ +

All description elements MUST be formatted as follows:

+ +
    +
  • Single-line descriptions MAY be indented and formatted on separate +lines (as for multi-line descriptions) or inline, as in:

    + +

    <description>One line description.</description>

  • +
  • Multi-line descriptions MUST be indented relative to the description +element and formatted on separate lines, as in:

  • +
+ +
    <description>
+      First line of multi-line description.
+      Second line of multi-line description.
+    </description>
+ +

C.4 Initial XML Comment Formatting

+ +

The Initial Line (the <?xml> line) MUST be immediately followed by an +Initial XML comment that consists of the following (separated by blank +lines):

+ +
    +
  • One-line summary.

  • +
  • Notice section.

  • +
  • Summary section.

  • +
  • Issue History section.

  • +
+ +

The three sections MUST be introduced by a line that consists of two +SPACE characters followed by the section name and a colon.

+ +
    <?xml version="1.0" encoding="UTF-8"?>
+    <!--
+      ...One-line summary...
+
+    Notice:
+      ...standard notice...
+
+    Summary:
+      ...multi-line summary...
+
+    Issue History:
+      ...summary of changes in each approved version...
+
+    -->
+ +

C.4.1 One-line Summary

+ +

The One-line summary MUST contain a brief description of the reason for +the creation of this version. It SHOULD NOT be terminated with a period +(it is not a sentence).

+ +

Example:

+ +
    <?xml version="1.0" encoding="UTF-8"?>
+    <!-- Added support for IPsec -->
+ +

C.4.2 Summary Section

+ +

The Summary section MAY extend the information in the One-line summary.

+ +

Appendix I: HTML Data Model Reports

+ +

I.1 Introduction

+ +

TR-106 Amendment 2 published the first version of the DM Schema. Since +then the normative definitions of all CWMP data models have been +published as DM Instances (XML documents that conform to the DM Schema). +Since these XML data models might not be easily read by a human, +corresponding non-normative HTML data model reports have also been +published.

+ +

This appendix briefly discusses these HTML reports.

+ +

I.2 Report Types

+ +

There are two types of HTML reports published for a given version of a +data model:

+ +
    +
  • a full report, covering the given version and all preceding versions +of the data model

  • +
  • a partial report, covering only the given version of the data model +(i.e. excluding content specific to earlier versions of the data +model); i.e. last only changes

  • +
+ +

For example, TR-181 Issue 2 Amendment 11 defined the Device:2.11 data +model revision, declared in tr-181-2-11-0.xml. The full report is in +tr-181-2-11-0.html, and includes the aggregate data model definitions +from Device:2.11 and earlier (back to Device:2.0 inclusive). The partial +report is in tr-181-2-11-0-diffs.html, and only includes the data model +definitions added or changed by TR-181 Issue 2 Amendment 11.

+ +

I.3 Report Layout

+ +

Each HTML data model report contains the following sections:

+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoticeThe legal notice, lifted from the top of the associated XML data model file.
SummaryDescribes the reason for this data model version. This is lifted from the associated XML data model file’s document description.
Table of ContentsHyperlinks to the various sections within the report, as well as links to each Object and Profile definition within the report.
Data TypesNamed data type definitions (i.e. not built-in types) that are used to define Parameters within the report. Each data type definition consists of name, type, and description.
ReferencesHyperlinks to external bibliography references cited by Object, Parameter, and Profile descriptions within the report.
Data model definitionObject and Parameter definitions. Which Object and Parameter definitions are included depends on whether it is a full or partial (last only) report.
Inform and Notification RequirementsLists those Parameters within the report that are: forced inform parameters, forced active notification parameters, and parameters for which active notification can be denied.
Profile DefinitionsProfile definitions, showing Object and Parameter requirements. Which Profiles are included depends on whether it is a full or partial (last only) report.
+ +

I.4 Data Model Definition

+ +

Parameters make use of a limited subset of the default SOAP data types [13]. The +notation used to represent these types within the report is +listed in the following table.

+ + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDescription
objectA container for parameters and/or other objects. The full Path Name of a parameter is given by the parameter name appended to the full Path Name of the object it is contained within.
stringFor strings, a minimum and maximum allowed length can be indicated using the form string(Min:Max), where Min and Max are the minimum and maximum string length in characters. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in string(Max). Multiple comma-separated ranges can be specified, in which case the string length will be in one of the ranges.
intInteger in the range -2147483648 to +2147483647, inclusive. For some int types, a value range is given using the form int(Min:Max) or int(Min:Max step Step) where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
longLong integer in the range -9223372036854775808 to 9223372036854775807, inclusive. For some long types, a value range is given using the form long(Min:Max) or long(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
unsignedIntUnsigned integer in the range 0 to 4294967295, inclusive. For some unsignedInt types, a value range is given using the form unsignedInt(Min:Max) or unsigned(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
unsignedLongUnsigned long integer in the range 0 to 18446744073709551615, inclusive. For some unsignedLong types, a value range is given using the form unsignedLong(Min:Max) or unsignedLong(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
booleanBoolean, where the allowed values are “0” or “1” (or equivalently, “true” or “false”).
dateTimeThe subset of the ISO 8601 date-time format defined by the SOAP dateTime type [13].
base64Base64 encoded binary (no line-length limitation). A minimum and maximum allowed length can be indicated using the form base64(Min:Max), where Min and Max are the minimum and maximum length in characters before Base64 encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in base64(Max). Multiple comma-separate ranges can be specified, in which case the length MUST be in one of the ranges.
hexBinaryHex encoded binary. A minimum and maximum allowed length can be indicated using the form hexBinary(Min:Max), where Min and Max are the minimum and maximum length in characters before Hex Binary encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in hexBinary(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges.
+ +

Note: A Parameter that is defined to be one of the named data types, is +reported as such at the beginning of the Parameter’s description via a +reference back to the associated data type definition (e.g. +[MacAddress]). However, such parameters still indicate their SOAP +data type (as discussed in the table above).

+ +
+

End of Broadband Forum Technical Report TR-106

diff --git a/docs/index.htm b/docs/index.htm new file mode 100644 index 0000000..4123734 --- /dev/null +++ b/docs/index.htm @@ -0,0 +1,3359 @@ + + + + + + + BBF – TR-106 – Data Model Template for CWMP Endpoints and USP Agents + + + + + + + +
+

TR-106 – Data Model Template for CWMP Endpoints and USP Agents

+

Issue: 1 Amendment 10

+

Issue Date: November 2020

+
+ +

List of Tables

+
    +
  1. XML Description Markup
  2. +
  3. XML Description Templates
  4. +
  5. XML Named Data Types
  6. +
  7. XML Data Type Facets
  8. +
  9. Path Name Scope Definition
  10. +
  11. PathRef Facet Definition
  12. +
  13. InstanceRef Facet Definition
  14. +
  15. EnumerationRef Facet Definition
  16. +
  17. XML Facet Inheritance Rules
  18. +
  19. XML Glossary Items
  20. +
  21. XML Abbreviation Items
  22. +
  23. XML Bibliographic References
  24. +
  25. XML Template Elements
  26. +
  27. XML Component Definition
  28. +
  29. XML Root and Service Objects
  30. +
  31. XML Parameter Definition
  32. +
  33. XML Parameter Syntax
  34. +
  35. XML Command Definition
  36. +
  37. XML Command Input / Output Arguments Definition
  38. +
  39. XML Object Definition
  40. +
  41. XML Table Definition
  42. +
  43. XML Profile Definition
  44. +
  45. XML Parameter Modification
  46. +
  47. XML Command Modification
  48. +
  49. XML Event Modification
  50. +
  51. XML Object Modification
  52. +
  53. XML Profile Modification
  54. +
  55. XML Description Modification
  56. +
+

List of Figures

+
    +
  1. CWMP Positioning in the End-to-End Architecture
  2. +
  3. USP Architecture Overview
  4. +
  5. Specification Structure
  6. +
+

Notice

+

The Broadband Forum is a non-profit corporation organized to create guidelines for broadband network system development and deployment. This Technical Report has been approved by members of the Forum. This Technical Report is subject to change. This Technical Report is owned and copyrighted by the Broadband Forum, and all rights are reserved. Portions of this Technical Report may be owned and/or copyrighted by Broadband Forum members.

+

Intellectual Property

+

Recipients of this Technical Report are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of this Technical Report, or use of any software code normatively referenced in this Technical Report, and to provide supporting documentation.

+

Terms of Use

+

1. License

+

Broadband Forum hereby grants you the right, without charge, on a perpetual, non-exclusive and worldwide basis, to utilize the Technical Report for the purpose of developing, making, having made, using, marketing, importing, offering to sell or license, and selling or licensing, and to otherwise distribute, products complying with the Technical Report, in all cases subject to the conditions set forth in this notice and any relevant patent and other intellectual property rights of third parties (which may include members of Broadband Forum). This license grant does not include the right to sublicense, modify or create derivative works based upon the Technical Report except to the extent this Technical Report includes text implementable in computer code, in which case your right under this License to create and modify derivative works is limited to modifying and creating derivative works of such code. For the avoidance of doubt, except as qualified by the preceding sentence, products implementing this Technical Report are not deemed to be derivative works of the Technical Report.

+

2. NO WARRANTIES

+

THIS TECHNICAL REPORT IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT AND ANY IMPLIED WARRANTIES ARE EXPRESSLY DISCLAIMED. ANY USE OF THIS TECHNICAL REPORT SHALL BE MADE ENTIRELY AT THE USER’S OR IMPLEMENTER’S OWN RISK, AND NEITHER THE BROADBAND FORUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY USER, IMPLEMENTER, OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS TECHNICAL REPORT, INCLUDING BUT NOT LIMITED TO, ANY CONSEQUENTIAL, SPECIAL, PUNITIVE, INCIDENTAL, AND INDIRECT DAMAGES.

+

3. THIRD PARTY RIGHTS

+

Without limiting the generality of Section 2 above, BROADBAND FORUM ASSUMES NO RESPONSIBILITY TO COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY ASSERTIONS OF PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN THE FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE TECHNICAL REPORT IN ITS CURRENT, OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE TECHNICAL REPORT, BROADBAND FORUM TAKES NO POSITION AS TO THE VALIDITY OR INVALIDITY OF SUCH ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE MADE ARE SO LISTED.

+

All copies of this Technical Report (or any portion hereof) must include the notices, legends, and other provisions set forth on this page.

+

Issue History

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Issue NumberApproval DatePublication DateIssue EditorChanges
Issue 1September 2005Jeff Bernstein, 2Wire
+Christele Bouchat, Alcatel
+Tim Spets, Westell
Original
Issue 1 Amendment 1November 2006Jeff Bernstein, 2Wire
+John Blackford, 2Wire
+Mike Digdon, SupportSoft
+Heather Kirksey, Motive
+William Lupton, 2Wire
+Anton Okmianski, Cisco
Clarification of original document
Issue 1 Amendment 2November 2008William Lupton, 2Wire
+Håkan Westin, Tilgin
Addition of data model definition XML Schema and normative XML common object and component definitions
Issue 1 Amendment 3September 2009William Lupton, 2Wire
+Håkan Westin, Tilgin
Addition of device type XML Schema
Issue 1 Amendment 4February 2010William Lupton, 2Wire
+Paul Sigurdson, Broadband Forum
Moved data model definitions to TR-181 Issue 1
Issue 1 Amendment 5November 2010Paul Sigurdson, Broadband ForumReplaced definitions of named data types such as IPAddress with references to normative XML.
+Minor changes to DM Schema (v1.3) and DT Schema (v1.1).
Issue 1 Amendment 6July 2011Sarah Banks, Cisco
+Andrea Colmegna, FASTWEB
+Tim Spets, Motorola Mobility
Removed definition of proxying, now defined in TR-069.
+Removed Common objects.
+Alias Parameter Requirements added.
Issue 1 Amendment 7September 20137 October 2013William Lupton, CiscoAdded descriptions of new features in DM Schema (v1.4 & v1.5) and DT Schema (v1.2 & v1.3).
+Added Annex defining additional requirements for BBF standard data models.
Issue 1 Amendment 816 March 201810 May 2018Jean-Didier Ott, Orange
+William Lupton, Broadband Forum
Added support of USP (mountable objects).
+Removed references to obsolete data models.
+Moved device requirements to TR-069.
Issue 1 Amendment 9Schema updates; document not updated.
Issue 1 Amendment 105 November 20205 November 2020William Lupton, Broadband ForumConverted document to markdown.
+Various editorial improvements.
+
+

Comments or questions about this Broadband Forum Technical Report should be directed to info@broadband-forum.org.

+
+ +
+

Editors

+
+

William Lupton, Broadband Forum

+
+
+ +
+

Broadband User Services Work Area Director(s)

+
+

Jason Walls, QA Cafe
+John Blackford, CommScope

+
+
+ +
+
+ +
+
+ +
+
+ +
+

Executive Summary

+

TR-106 specifies data model guidelines to be followed by all CWMP [1] Endpoints and USP [2] Agents. These guidelines include structural requirements for the data hierarchy, requirements for versioning of data models, and requirements for defining profiles.

+

In addition, TR-106 defines an XML Schema that as far as possible embodies these guidelines, and which is used for defining all CWMP and USP data models. This makes data model definitions rigorous, and helps to reduce the danger that different implementations will interpret data model definitions in different ways.

+

TR-106 also defines an XML Schema that allows a device to describe its supported CWMP data models. This description is both specific and detailed, allowing a Controller to know exactly what is supported by the device, including any vendor-specific objects and parameters. Use of this Schema enhances interoperability and significantly eases the integration of new devices with a Controller. USP uses a different mechanism (GetSupportedDM message) for the same purpose. That mechanism is specified in TR-369 [2].

+
+

Important warning

+

The InternetGatewayDevice:1 (TR-098) and Device:1 (TR-181 Issue 1) Root Data Models are now DEPRECATED and any reference to elements specific to those models have been removed from this document.

+

The last revision of TR-106 to be used with those models is TR-106 Amendment 7.

+

TR-157 data models Components have been incorporated into Device:2.12. TR-157 is therefore also DEPRECATED.

+
+

1 Introduction

+

CWMP

+

TR-069 [1] defines the generic requirements of the CPE WAN Management Protocol (CWMP) methods which can be applied to any CWMP Endpoint. It is intended to support a variety of different functionalities to manage a collection of CPE, including the following primary capabilities:

+
    +
  • Auto-configuration and dynamic service provisioning

  • +
  • Software/firmware image management

  • +
  • Status and performance monitoring

  • +
  • Diagnostics

  • +
+

The ability to manage the home network remotely has a number of benefits including reducing the costs associated with activation and support of broadband services, improving time-to-market for new products and services, and improving the user experience.

+

The following figure places TR-069 in the end-to-end management architecture:

+
+
Figure 1: CWMP Positioning in the End-to-End Architecture
+
+

The ACS is a server that resides in the network and manages devices in the subscriber premises. It uses the methods, or RPCs, defined in TR-069 to get and set the state of the device, initiate diagnostic tests, download and upload files, and manage events. Some portions of this state are common across managed devices and some are relevant only to certain device types or services.

+

USP

+

The User Services Platform is made of a network of USP Controllers and USP Agents to allow applications to manipulate service elements (i.e. objects). It represents the evolution of CWMP into the following use cases:

+
    +
  • Improvements on TR-069 based on deployment experience

  • +
  • Multi-tenant management of a given endpoint (that is, manipulation by multiple controllers)

  • +
  • Application to additional market spaces, including consumer electronics and the Internet of Things

  • +
+

An agent exposes service elements to one or more controllers, either directly or by proxy. An application could use a Controller to manage a provider controlled system, as in a CWMP ACS, or to act as a user portal in the cloud, on a gateway, or accessed through a smart phone. Agents and controllers can also be used in tandem to create a peer-to-peer network of smart applications, such as an automated smart home.

+
+
Figure 2: USP Architecture Overview
+
+

USP was designed in a modular manner, and can make use of the CWMP data model and data model schema in order to represent an evolution of CWMP into the world of consumer electronics, virtual services, and the Internet of Things. As such, this document describes how to use the data model schema in both the context of CWMP and USP.

+

Specification Structure

+

Figure 3 shows the overall specification structure for the CWMP [1] and USP [2] family of standards (as currently defined). Please note that this will gradually become out of date as new documents are published.

+
+
Figure 3: Specification Structure
+
+

TR-069 [1] defines the generic requirements of the CWMP methods which can be applied to any CWMP Endpoint. TR-369 [2] does the same for USP Agents. TR-106 (this document) specifies a baseline object structure to be supported by any CWMP Endpoint or USP Agent (referred to generically as an Agent). It specifies how to structure and define data models, which are collections of objects and parameters on which the generic methods act to configure, diagnose, and monitor the state of specific devices and services. The actual data models are defined in their own specifications.

+

For a particular type of device, it is expected that the baseline defined in a document such as TR-181i2 [3] would be augmented with additional objects and parameters specific to the device type. The data model used in any Agent MUST follow the guidelines described in this document. These guidelines include the following aspects:

+
    +
  • Structural requirements for the data hierarchy

  • +
  • Requirements for versioning of data models

  • +
  • Requirements for defining profiles

  • +
+

In addition, this document defines two XML Schemas:

+
    +
  • An XML Schema that as far as possible embodies these guidelines, and which is used for defining all CWMP and USP data models. This makes data model definitions rigorous, and helps to reduce the danger that different implementations will interpret data model definitions in different ways.

  • +
  • An XML Schema that allows a device to describe its supported CWMP data models. This description is both specific and detailed, allowing an ACS to know exactly what is supported by the CPE, including any vendor-specific objects and parameters. Use of this Schema enhances interoperability and significantly eases the integration of new devices with an ACS.

    +

    Please note that USP uses a different mechanism (GetSupportedDM message) for the same purpose. It is specified in TR-369 [2].

  • +
+

1.1 Terminology

+

The following terminology is used throughout this Technical Report.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ACSAuto-Configuration Server. This is a component in the broadband network responsible for CWMP auto-configuration of the CPE for advanced services.
AgentA generic term that refers (as appropriate) to either a CWMP Endpoint or to a USP Agent.
BBFThe Broadband Forum.
Base Supported Data ModelThe Data Model that is supported by all CPE of a given make, model and firmware version. This refers to the Objects, Parameters, Commands and/or Events that have code support in the current firmware.
CPECustomer Premises Equipment; refers (as appropriate) to any CWMP-enabled [1] or USP-enabled [2] device and therefore covers both Internet Gateway devices and LAN-side end devices.
CommandA named element allowing a USP Controller to execute an operation on a USP Agent. This concept does not apply to CWMP, which uses Objects and/or Parameters to simulate operations.
ComponentA named collection of Objects, Parameters, Commands, Events and/or Profiles that can be included anywhere within a Data Model.
ControllerA generic term that refers (as appropriate) to either a CWMP ACS or a USP Controller.
Current Supported Data ModelThe Data Model that is currently supported by an individual CPE, i.e. the Base Supported Data Model plus any additional Objects, Parameters, Commands and/or Events supported by extra modules that have been installed on the CPE. This refers to the Objects, Parameters, Commands and/or Events that have code support in the CPE.
CWMPCPE WAN Management Protocol. Defined in TR-069 [1], CWMP is a communication protocol between an ACS and CWMP-enabled CPE that defines a mechanism for secure auto-configuration of a CPE and other CPE management functions in a common framework.
CWMP EndpointA CWMP termination point used by a CWMP-enabled CPE for communication with the ACS.
Data ModelA hierarchical set of Objects, Parameters, Commands and/or Events that define the managed Objects accessible via a particular Agent.
DeviceUsed here as a synonym for CPE.
DM InstanceData Model Schema instance document. This is an XML document that conforms to the DM Schema and to any additional rules specified in or referenced by the DM Schema.
DM SchemaData Model Schema. This is the XML Schema [4] that is used for defining data models for use with CWMP and USP.
DT InstanceDevice Type Schema instance document. This is an XML document that conforms to the DT Schema and to any additional rules specified in or referenced by the DT Schema. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).
DT SchemaDevice Type Schema. This is the XML Schema [4] that is used for describing a Device’s Supported Data Model. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).
EventAn indication that something of interest has happened that requires the Agent to notify the Controller.
Instantiated Data ModelThe Data Model that currently exists on an individual CPE. This refers to the Object instances, Parameters, Commands and/or Events that currently exist within the data model. It can be thought of as the Current Supported Data Model with all the “{i}” placeholders expanded to be the actual Instance Numbers. For example, “Device.Services.ABCService.{i}.” in the Current Supported Data Model might correspond to “Device.Services.ABCService.1.” and “Device.Services.ABCService.2.” in the Instantiated Data Model.
Instance AliasA writeable string that uniquely identifies an instance within a Multi-Instance Object
Instance IdentifierA value that uniquely identifies an instance within a Multi-Instance Object. It is either an Instance Number or an Instance Alias.
Instance NumberA read-only positive integer (>=1) that uniquely identifies an instance within a Multi-Instance Object.
Mountable ObjectAn Object that is defined in a DM Instance as a direct child of the Root Object, but that can also exist as a child of a Mount Point in the Instantiated Data Model of a USP Agent. This concept does not apply to CWMP.
Mount PointAn Object that is defined in a DM Instance as being able to have Mountable Objects as children in the Instantiated Data Model of a USP Agent. By extension, one of the instances of that object in the Instantiated Data Model. This concept does not apply to CWMP.
Multi-Instance ObjectAn Object that can have multiple instances, all of which are located at the same level within the name hierarchy. Each instance is identified by an Instance Identifier.
ObjectAn internal node in the name hierarchy, i.e., a node that can have Object, Parameter, Command and/or Event children. An Object name is a Path Name.
ParameterA name-value pair that represents part of a CPE or USP Agent’s configuration or status. A Parameter name is a Path Name.
Path NameA name that has a hierarchical structure similar to files in a directory, with each level separated by a “.” (dot). References an Object, Parameter, Command or Event.
ProfileA named collection of requirements relating to a given Root Object, Service Object or Component.
RPCRemote Procedure Call.
Root ObjectThe top-level Object of a CPE’s Data Model that contains all of the manageable Objects. The name of the Root Object is “Device.”.
Service ElementA Service Element represents a piece of service functionality that is exposed by an Agent, usually represented by one or more Objects.
Service ObjectThe top-most Object associated with a specific service within which all Objects, Parameters, Commands and Events associated with the service are contained.
Supported Data ModelRefers to either Base Supported Data Model or Current Supported Data Model, depending on the context.
URIUniform Resource Identifier.
URLUniform Resource Locator.
USPUniversal Service Platform. Defined in TR-369, USP is an evolution of CWMP that allows applications to manipulate Service Elements in a network of Controllers and Agents.
USP AgentA USP Agent is a USP Endpoint that exposes Service Elements to one or more USP Controllers.
USP ControllerA USP Controller is a USP Endpoint that manipulates Service Elements through one or more USP Agents.
USP EndpointA USP Endpoint is a termination point for a USP message.
+

1.2 Document Conventions

+

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [5].

+

2 Architecture

+

All elements described hereunder apply to both CWMP and USP, unless specifically mentioned otherwise.

+

2.1 Data Hierarchy

+

The data model for a Agent will follow a common set of structural requirements. The detailed structure depends on the nature of the Agent.

+

An Agent’s data model will always have a single Root Object, which will be called “Device.”.

+

The Root Object contains three types of sub-elements: the Objects defined in TR-181i2 [3], Components defined in TR-181i2 or other specifications such as TR-143 [6], and a single “Services” object that contains all Service Objects associated with specific services.

+

A single Agent might include more than one Service Object. For example, a device that serves both as a VoIP endpoint and a game device, might include both VoIP-specific and game-specific Service Objects.

+

A single Agent might also include more than one instance of the same type of Service Object. An example of when this might be appropriate is an Agent that provides an instance of the TR-140 [7] StorageService for each of the device’s attached disks.

+

2.1.1 Data Hierarchy Requirements

+

A CWMP or USP data model MUST adhere to the following structural requirements:

+
    +
  1. A root data model definition MUST contain exactly one Root Object, called “Device.”.

  2. +
  3. A Root Object definition MUST contain exactly one “Services.” object.

  4. +
  5. A service data model definition MUST define an object hierarchy that starts just under the “Device.Services.” object.

  6. +
  7. For each Multi-Instance Object defined, a data model MUST also define a corresponding parameter indicating the number of instances of the Multi-Instance Object. The name of this parameter MUST be the name of the object concatenated with “NumberOfEntries”. This parameter MUST appear in the same object as the Multi-Instance Object it is related to.

  8. +
+

Formally, the top level of the data hierarchy is defined as follows:

+
    Element = "Device"
+            | "Device." TR-181DeviceObject
+            | "Device.Services." ServiceObject "NumberOfEntries"
+            | "Device.Services." ServiceObject ".{i}"
+
+    TR-181DeviceObject = // As defined in TR-181i2, e.g. "UserInterface" or "ManagementServer"
+
+    ServiceObject = // As defined in other specs, e.g. TR-140
+

2.1.2 The Supported Data Model and the Instantiated Data Model

+

There is a distinction between an Agent’s Supported Data Model and its Instantiated Data Model.

+
    +
  • The Supported Data Model is those Objects and/or Parameters that have code support in the Agent.

  • +
  • The Instantiated Data Model is those Object instances and/or Parameters that currently exist.

  • +
+

TR-181i2 [3] defines a SupportedDataModel Object that allows an Agent to indicate its Supported Data Model to a Controller, which assists the Controller in managing that device.

+

The SupportedDataModel object has the following properties:

+
    +
  1. It contains a list of URLs, each of which allows the Controller to determine details of part of the Supported Data Model.

  2. +
  3. When the Supported Data Model changes, e.g. because software is loaded or unloaded, entries are added to or removed from this list of URLs.

  4. +
+

This object is not used with USP. TR-369 [2] defines the GetSupportedDM message to provide this information.

+

2.2 Object Versioning

+

To allow the definition of a Service Object or Root Object to change over time, the definition of a Service Object or Root Object MUST have an explicitly specified version.

+

Version numbering of Service Objects and Root Objects is defined to use a major/minor version numbering convention. The object version is defined as a pair of integers, where one integer represents the major version, and the second integer represents the minor version. The version MUST be written with the two integers separated by a dot (Major.Minor).

+

The first version of a given object SHOULD be defined as version “1.0”.

+

For each subsequent version of the object, if the later version is compatible with the previous version, then the major version SHOULD remain unchanged, and the minor version SHOULD be incremented by one. For example, the next compatible version after “2.17” would be “2.18”. The requirements for a version to be considered compatible with an earlier version are described in Section 2.2.1.

+

For each subsequent version of the object, if the later version is not compatible with the previous version, then the major version MUST increment by one, and the minor version MAY reset back to zero. For example, the next incompatible version after “2.17” might be “3.0”.

+

2.2.1 Requirements for Compatible Versions

+

For one version of an object to be considered compatible with another version, the later version MUST be a strict superset of the earlier version. Using major/minor versioning, this requirement applies only between minor versions that share the same major version.

+

More specifically, this requires the following of the later version with respect to all earlier versions to which it is to be compatible:

+
    +
  • The later version MAY add objects and parameters not previously in any earlier version, but MUST NOT remove objects or parameters already defined in earlier versions.

  • +
  • The later version MUST NOT modify the definition of any parameter or object already defined in an earlier version (unless the original definition was clearly in error and has to be modified as an erratum or clarified through a corrigendum process).

  • +
  • The later version MUST NOT require any of the objects or parameters that have been added since the earliest compatible version to be explicitly operated upon by the Controller to ensure proper operation of the device (except those functions specifically associated with functionality added in later versions). That is, the later version will accommodate a Controller that knows nothing of elements added in later versions.

  • +
+

The goal of the above definition of compatibility is intended to ensure bi-directional compatibility between a Controller and Agent. Specifically that:

+
    +
  • If a Controller supports only an earlier version of an object as compared to the version supported by the Agent, the Controller can successfully manage that object in the Agent as if it were the earlier version.

  • +
  • If an Agent supports only an earlier version of an object as compared to the version supported by a Controller, the Controller can successfully manage that object in the Agent as if it were the later version (without support for new components defined only in later versions).

  • +
+

2.2.2 Version Notation

+

For objects, the following notation is defined to identify specific versions:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NotationDescriptionExample
ObjectName:Major.MinorRefers to a specific version of the object.Device:2.0
ObjectName:MajorRefers to any minor version of the object with the specified major version.Device:2
ObjectNameRefers to any version of the object.Device
+

Note that the version notation defined here is only to be used for purposes of documentation. The actual names of objects and parameters in the data model MUST NOT include version numbers.

+

2.3 Profiles

+

Note: Originally, profiles were seen as a means of limiting the variability that a Controller needs to accommodate among various devices that it might manage. This feature is now provided:

+
    +
  • For CWMP, by the TR-181i2 [3] SupportedDataModel object (see Section 2.1.2) and associated Device Type XML documents (DT Instances).

  • +
  • For USP, by the TR-369 [2] GetSupportedDM message.

  • +
+

A profile is a named collection of requirements associated with a given object. An Agent can adhere to zero or more profiles. Adherence to a profile means that the Agent supports all of the requirements defined by that profile. The use of profiles gives Service Providers a shorthand means of specifying data model support requirements.

+

The following sections define the conventions to be used when defining profiles associated with Data Models.

+

2.3.1 Scope of Profiles

+

A given profile is defined only in the context of a specific Service Object or Root Object with a specific major version. For each profile definition, the specific object name and major version to which the profile is to apply MUST be explicitly identified.

+

A profile’s name MUST be unique among profiles defined for the same object and major version, but a name MAY be reused to define a different profile for a distinct combination of object name and major version. For example, if we define profile “A” associated with object “X:2” (major version 2 of object X), the same name “A” might be used to define a different profile for object “Y:1” or for object “X:3”.

+

A given profile is defined in association with a minimum minor version of a given object. The minimum REQUIRED version of an object is the minimum version that includes all of the REQUIRED elements defined by the profile. For each profile definition, the specific minimum version MUST be explicitly identified.

+

2.3.2 Multiple Profile Support

+

For a given type of Service Object or Root Object, multiple profiles MAY be defined. Profiles MAY be defined that have either independent or overlapping requirements.

+

2.3.3 Profile Versions

+

To allow the definition of a profile to change over time, the definition of every profile MUST have an associated version number.

+

Version numbering of profiles is defined to use a minor-only version numbering convention. That is, for a given profile name, each successive version MUST be compatible with all earlier versions. Any incompatible change to a profile MUST use a different profile name.

+

For one version of a profile to be considered compatible with another version, the later version MUST be a strict superset of the earlier version. This requires the following of the later version with respect to all earlier versions to which it is to be compatible:

+
    +
  • The later version MAY add requirements that were not in earlier versions of the profile, but MUST NOT remove requirements.

  • +
  • The later version MAY remove one or more conditions that had previously been placed on a requirement. For example, if a previous profile REQUIRED X only if condition A was True, then the later profile might require X unconditionally.

  • +
+

For profiles, the following notation is defined to identify specific versions:

+ +++++ + + + + + + + + + + + + + + + + + + + +
NotationDescriptionExample
ProfileName:VersionRefers to a specific version of the profile.Baseline:1
ProfileNameRefers to any version of the profile.Baseline
+

ProfileName MUST start with a letter or underscore, and subsequent characters MUST be letters, digits, underscores or hyphens. The terms “letter” and “digit” are as defined in the XML specification [Appendix B/8].

+

Hyphens can easily be confused with the discretionary hyphens that are sometimes inserted by hyphenation algorithms. For this reason, ProfileName SHOULD NOT include any hyphens. In BBF standards, ProfileName will always start with an upper-case letter (or an underscore for an internal profile) and will never include any hyphens (see C.3.1 for the corresponding normative requirement).

+

2.3.4 Baseline Profiles

+

For every Service Object (and Root Object) there SHOULD be at least one profile defined. In many cases it is desirable to define a Baseline profile that indicates the minimum requirements REQUIRED for any device that supports that Object.

+

2.3.5 Types of Requirements in a Profile

+

Because a profile is defined within the context of a single Object (and major version), all of the requirements associated with the profile MUST be specific to the data model associated with that object.

+

Profile requirements can include any of the following types of requirements associated with an Object’s data model:

+
    +
  • A requirement for read support of a Parameter.

  • +
  • A requirement for write support of a Parameter.

  • +
  • A requirement for support of a Command.

  • +
  • A requirement for support of a sub-Object contained within the overall Object.

  • +
  • A requirement for the ability to add or remove instances of a sub-Object.

  • +
  • A requirement to support active notification for a Parameter.

  • +
  • A requirement to support access control for a given Parameter.

  • +
+

For each of the requirement categories listed above, a profile can define the requirement unconditionally, or can place one or more conditions on the requirement. For example, a profile might require that a Parameter be supported for reading only if the device supports some other Parameter or Object (one that is not itself REQUIRED by the profile). Such conditions will be directly related to the data model of the overall object associated with the profile.

+

Because a device has to be able to support multiple profiles, all profiles MUST be defined such that they are non-contradictory. As a result, profiles MUST only define minimum requirements to be met, and MUST NOT specify negative requirements. That is, profiles will not include requirements that specify something that is not to be supported by the device, or requirements that exclude a range of values.

+

2.4 DEPRECATED and OBSOLETED Items

+

The key word “DEPRECATED” in a data model definition is to be interpreted as follows: This term refers to an object, parameter or parameter value that is defined in the current version of the standard but is meaningless, inappropriate, or otherwise unnecessary. It is intended that such objects, parameters or parameter values will be removed from the next major version of the data model. Requirements on how to interpret or implement deprecated objects, parameters or parameter values are given below. For more information on how to interpret or implement specific deprecated objects, parameters or parameter values, refer to the definition of the object or parameter.

+

The key word “OBSOLETED” in a data model definition is to be interpreted as follows: This term refers to an object, parameter or parameter value that meets the requirements for being deprecated, and in addition is obsolete. Such objects, parameters or parameter values can be removed from a later minor version of a data model, or from a later version of a profile, without this being regarded as breaking backwards compatibility rules. Requirements on how to interpret or implement obsoleted objects, parameters or parameter values are given below. For more information on how to interpret or implement specific obsoleted objects, parameters or parameter values, refer to the definition of the object or parameter.

+

2.4.1 Requirements for DEPRECATED Items

+

This section defines requirements that apply to all DEPRECATED objects, parameters and parameter values unless specifically overridden by the object or parameter definition.

+

Data model requirements:

+
    +
  1. The definition of a DEPRECATED parameter, object or parameter value MUST include an explanation of why the item is deprecated.

  2. +
  3. The definition of a DEPRECATED parameter, object or parameter value MAY specify further requirements relating to the item; such requirements MAY override general Agent or Controller requirements regarding DEPRECATED elements specified in TR-069 [1] or TR-369 [2].

  4. +
+

Agent requirements:

+
    +
  1. A DEPRECATED parameter MUST have a value which is valid for its data type and fulfils any range (for numeric parameters), length (for string, base64 or hexBinary parameters) and enumerated value (for string parameters) requirements.

  2. +
  3. Detailed behavioral requirements for a DEPRECATED parameter, e.g. that its value is a unique key, MAY be ignored by the Agent.

  4. +
  5. The Agent MUST, if such operations are permitted by the data model definition, permit creation of DEPRECATED objects, modification of DEPRECATED parameters, and setting of DEPRECATED parameter values. However, it MAY choose not to apply such changes to its operational state.

  6. +
  7. Regardless of whether DEPRECATED changes are applied to the Agent’s operational state, a read of a DEPRECATED writable parameter SHOULD return the value that was last written, i.e. the Agent is expected to store the value even if it chooses not to apply it to its operational state.

  8. +
  9. The Agent MAY reject an attempt by a Controller to set any parameter to a DEPRECATED value.

  10. +
+

Controller requirements:

+
    +
  1. The Controller SHOULD NOT create DEPRECATED objects, modify DEPRECATED parameters, or set DEPRECATED parameter values.

  2. +
  3. The Controller SHOULD ignore DEPRECATED objects, parameters and parameter values.

  4. +
  5. The Controller SHOULD NOT set a DEPRECATED parameter to a value that is invalid for its data type or fails to fulfill any range (for numeric parameters), length (for string, base64 or hexBinary parameters) or enumerated value (for string parameters) requirements.

  6. +
  7. The Controller SHOULD NOT set any parameter to a DEPRECATED value.

  8. +
+

2.4.2 Requirements for OBSOLETED Items

+

This section defines requirements that apply to all OBSOLETED objects, parameters or parameter values unless specifically overridden by the object or parameter definition.

+

An OBSOLETED object, parameter or parameter value MUST meet all the requirements of the previous section. In addition, the following requirements apply.

+
    +
  1. An OBSOLETED object, parameter or parameter value MAY be removed from a later minor version of a data model without this being regarded as breaking backwards compatibility rules.

  2. +
  3. An OBSOLETED object, parameter or parameter value MUST NOT be removed from the current version of a profile, but MAY be removed from a later version of a profile without this being regarded as breaking backwards compatibility rules.

  4. +
  5. A data model definition MUST include a list of those OBSOLETED objects, parameters or parameter values that have been removed from the data model or from its profiles. This is to prevent future namespace conflicts.

  6. +
+

3 Object Definitions

+

3.1 General Notation

+

Parameter names use a hierarchical form similar to a directory tree. The name of a particular Parameter is represented by the concatenation of each successive node in the hierarchy separated with a “.” (dot), starting at the trunk of the hierarchy and leading to the leaves. When specifying a partial path, indicating an intermediate node in the hierarchy, the trailing “.” (dot) is always used as the last character.

+

Parameter names MUST be treated as case sensitive. The name of each node in the hierarchy MUST start with a letter or underscore, and subsequent characters MUST be letters, digits, underscores or hyphens. The terms “letter” and “digit” are as defined in the XML specification [Appendix B/8].

+

Hyphens can easily be confused with the discretionary hyphens that are sometimes inserted by hyphenation algorithms. For this reason, the names of nodes in the hierarchy SHOULD NOT include any hyphens. Additionally, the names of nodes in the hierarchy SHOULD NOT start with underscores. In BBF standards, the names of nodes in the hierarchy always start with an upper-case letter and never include any hyphens or underscores (see C.3.1 for the corresponding normative requirement).

+

Where multiple instances of an object can occur, the placeholder node name {i} is shown. In actual use, this placeholder is to be replaced by an Instance Identifier.

+

3.2 Data Types and Representation

+

Parameters make use of a limited subset of the default SOAP data types. The supported data types are defined by the DM Schema and are also listed in A.2.3.

+

The named data types that specify the representations of IP addresses, MAC addresses etc, are defined in a DM Instance document (see Annex A). The XML file with those definitions and the corresponding HTML file can be found in the data model resources page. Note that this DM Instance defines named data types that are expected to be used in several data model definitions; it is possible to define local named data types in any DM Instance document.

+

The following sub-sections specify additional rules governing parameter value representation within XML documents.

+

3.2.1 Date and Time Rules

+

All times MUST be expressed in UTC (Universal Coordinated Time) unless explicitly stated otherwise in the definition of a parameter of this type.

+

If absolute time is not available to the Agent, it SHOULD instead indicate the relative time since boot, where the boot time is assumed to be the beginning of the first day of January of year 1, or 0001 01 01T00:00:00. For example, 2 days, 3 hours, 4 minutes and 5 seconds since boot would be expressed as 0001 01 03T03:04:05. Relative time since boot MUST be expressed using an untimezoned representation. Any untimezoned value with a year value less than 1000 MUST be interpreted as a relative time since boot.

+

If the time is unknown or not applicable, the following value representing “Unknown Time” MUST be used: 0001-01-01T00:00:00Z. For an infinite timeline, the following value representing “Infinite Time” MUST be used: 9999-12-31T23:59:59Z.

+

Any dateTime value other than one expressing relative time since boot (as described above) MUST use UTC timezoned representation (that is, it MUST include a timezone suffix of “Z”, “-00:00” or “+00:00”).

+

3.2.2 Comma-separated Lists

+

For strings that are defined to contain comma-separated lists, the format is defined as follows. Between every pair of successive items in a comma-separated list there MUST be a separator. The separator MUST include exactly one comma character, and MAY also include one or more whitespace characters before or after the comma. The entire separator, including any whitespace characters, MUST NOT be considered part of the list items it separates. The last item in a comma-separated list MUST NOT be followed with a separator. Individual items in a comma-separated list MUST NOT include a whitespace or comma character within them. Any whitespace or comma characters within an item value MUST be escaped using percent-encoding as specified in RFC 3986 [Section 2.1/9].

+

It is possible to create a list of lists, although other solutions SHOULD be preferred when possible. If a string contains a list of lists, the rules of the previous paragraph imply that the comma separators of the inner list will be percent encoded. For example, a three element list with elements “a”, “b,c” (a two element list) and “d” could be represented as “a,b%2Cc,d”. In order to avoid the need to percent encode the inner separators, inner lists MAY be “protected” by placing them within square brackets, e.g. the above list could be represented as “a,[b,c],d”. In order to avoid ambiguity (a Controller that didn’t understand the new syntax would interpret “a,[b,c],d” as the four element list “a”, “[b", "c]”, “d”), the data type and/or parameter definition MUST explicitly state that the new syntax is supported (A.2.3.1, A.2.7.1).

+

3.2.3 Parameters that Reference Parameters or Objects

+

For string parameters that are defined to contain the hierarchical Path Name of an object (or for each item in parameters that are defined to contain comma-separated lists of object Path Names), the representation of the object name MUST NOT include a trailing “dot.” An example of a parameter of this kind in the TR-181i2 [3] Device:2 data model is Device.InterfaceStack.{i}.LowerLayer. For this parameter, the following is an example of a properly formed value:

+

Device.Ethernet.Interface.1

+

Path Names in parameter values MUST always be full Path Names. For CWMP there is an exception such that a path that begins with a dot is relative to the Root or Service Object. For example, in the Device Root Object, a parameter value of “.DeviceInfo” always means “Device.DeviceInfo”. NOTE: This exception does NOT hold for USP.

+

In order to be able to use reference parameters as unique keys (A.2.10.1), their Path Names MUST conceptually be converted to full Path Names before being compared. For example, in the Device Root Object, “.DeviceInfo.” and “Device.DeviceInfo.” would compare as equal. If a reference parameter is list-valued, i.e. it is a list of Path Names or Instance Numbers, the parameter value MUST conceptually be regarded as a set when being compared, i.e. the comparison has to ignore the item order and any repeated items. For example, “1,2,1” and “2,1” would compare as equal because both reference instances 1 and 2.

+

References are defined as strong or weak in the data model. A strong reference always either references an existing parameter or object, or else is a null reference. On the other hand, a weak reference does not necessarily reference an existing parameter or object.

+

3.2.4 Units Conventions

+

For numeric parameters whose values are defined in terms of units, bit and byte-related units will always refer to powers of 2. For example, a kilobyte will always be 1024 bytes, a megabyte always 1024 * 1024 bytes, etc.

+

3.2.5 Default Maximum String Length

+

For string-valued parameters, a maximum length is either explicitly indicated or implied by the size of the elements composing the string. For strings in which the content is an enumeration, the longest enumerated value determines the maximum length. Similarly, for strings in which the content is a pattern, the longest possible matching value determines the maximum length. For strings in which the content is a list, the maximum number of items and the individual item lengths can help to determine the maximum string length.

+

3.3 Vendor-Specific Elements

+

A vendor MAY extend the standardized data model with vendor-specific elements (parameters, objects, commands, events). Vendor-specific elements MAY be defined either in a separate naming hierarchy or within the standardized naming hierarchy.

+

The name of a vendor-specific parameter, object, command, or event that is not contained within another vendor-specific object MUST have the form:

+
+

X_<VENDOR>_VendorSpecificName

+
+

In this definition <VENDOR> is a unique vendor identifier, which MAY be either an OUI or a domain name. The OUI or domain name used for a given vendor-specific parameter MUST be one that is assigned to the organization that defined this parameter (which is not necessarily the same as the vendor of the Agent). An OUI is an organizationally unique identifier as defined in [10], which MUST be formatted as a six-hexadecimal-digit string using all upper-case letters and including any leading zeros. A domain name MUST be upper case with each dot (“.”) replaced with a hyphen or underscore.

+

The VendorSpecificName MUST NOT contain a “.” (period) or a space character.

+
+

Note – the use of the string “X_” to indicate a vendor-specific parameter implies that no standardized parameter can begin with “X_”.

+
+

The name of a vendor-specific element that is contained within another vendor-specific object which itself begins with the prefix described above need not itself include the prefix.

+

The full Path Name of a vendor-specific element MUST NOT exceed 256 characters in length.

+

Below are some example vendor-specific element names:

+

A parameter:

+
Device.UserInterface.X_012345_AdBanner
+

A single-instance object:

+
Device.X_EXAMPLE-COM_MyConfig.Status
+

A command:

+
Device.X_EXAMPLE-COM_MyCommand()
+

An event:

+
Device.X_EXAMPLE-COM_MyEvent!
+

When appropriate, a vendor MAY also extend the set of values of an enumeration. If this is done, the vendor-specified values MUST be in the form “X_<VENDOR>_VendorSpecificValue”. The total length of such a string MUST NOT exceed 31 characters.

+

4 Normative References

+

A list of the currently valid Broadband Forum Technical Reports is published at https://www.broadband-forum.org. The following documents are referenced by this specification.

+
+
+

[1] TR-069 Amendment 6, CPE WAN Management Protocol, Broadband Forum, 2018

+
+
+

[2] TR-369, User Services Platform, 2018

+
+
+

[3] TR-181 Issue 2 Amendment 12, Device Data Model for TR-069, Broadband Forum, 2018

+
+ +
+

[5] RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, IETF, 1997

+
+
+

[6] TR-143 Amendment 1 Corrigendum 1, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, 2015

+
+
+

[7] TR-140 Amendment 3, TR-069 Data Model for Storage Service Enabled Devices, Broadband Forum, 2017

+
+ +
+

[9] RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, IETF, 2005

+
+ +
+

[11] RFC 2648, A URN Namespace for IETF Documents, IETF, 1999

+
+ + +
+

Annex A: CWMP Data Model Definition XML Schema

+

A.1 Introduction

+

The CWMP Data Model Definition XML Schema [4], or DM Schema, is used for defining CWMP [1] and USP [2] data models, and is specified in A.2.12.6.

+

DM Schema instance documents can contain any or all of the following:

+
    +
  • Data type definitions

  • +
  • Root Object definitions (including profiles)

  • +
  • Service Object definitions (including profiles)

  • +
  • Component definitions

  • +
  • Vendor extension definitions

  • +
+

Annex C contains some additional normative requirements that apply only to BBF standard DM Schema instance documents.

+

Most of the data model elements are common to CWMP and USP. Those that are specific to either protocol will be noted in the description.

+

A.1.1 Character Encoding and Character Set

+

BBF standard DM Schema instance documents use UTF-8 encoding and their character set is restricted to printable ASCII characters. See C.2 for the corresponding normative requirements.

+

A.2 Normative Information

+

It is possible to create instance documents that conform to the DM Schema but nevertheless are not valid data model definitions. This is because it is not possible to specify all the normative data model definition requirements using the XML Schema language. Therefore, the schema contains additional requirements written using the usual normative language. Instance documents that conform to the DM Schema and meet these additional requirements are referred to as DM Instances.

+

For example, the definition of the parameter element includes the following additional requirements on the name and base attributes:

+
    <xs:complexType name="ModelParameter">
+      <xs:annotation>
+        <xs:documentation>
+        Parameter definition and
+        reference.
+        </xs:documentation>
+      </xs:annotation>
+
+      ...
+
+      <xs:attribute name="name" type="tns:ParameterName">
+        <xs:annotation>
+          <xs:documentation>
+          MUST be unique within the parent object
+          (this is checked by schema validation).
+
+          MUST be present if and only if defining a new
+          parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+
+      <xs:attribute name="base" type="tns:ParameterName">
+        <xs:annotation>
+          <xs:documentation>
+            MUST be present if and only if modifying an existing
+            parameter.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+
+      ...
+
+    </xs:complexType>
+

In some cases, a requirement that is in fact implied by the DM Schema is emphasized within the schema via the xs:documentation element (the uniqueness requirement on the name is an example of this).

+

In other cases, a schema-implied requirement is not highlighted. For example, the name and base attributes are of type tns:ParameterName:

+
    <!DOCTYPE cwmp-datamodel [
+      ...
+      <!ENTITY name "([\i-[:]][\c-[:\.]]*)">
+      ...
+    ]>
+      ...
+      <xs:simpleType name="ParameterName">
+        <xs:annotation>
+          <xs:documentation>Parameter name (maximum length 256); the same as xs:NCName except that periods are not permitted.  This name MUST in addition follow the vendor-specific parameter name requirements of Section 3.3.</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:token">
+          <xs:maxLength value="256"/>
+          <xs:pattern value="&name;"/>
+        </xs:restriction>
+      </xs:simpleType>
+

This states that the parameter name is a string that follows the following rules:

+
    +
  • It is derived from xs:token, which has a whitespace facet of “collapse”, meaning that any leading whitespace in the name will be ignored.

  • +
  • It has a maximum length of 256 characters.

  • +
  • Its first character matches the pattern “[\i-:]]”, which means “any character permitted as the first character of an XML name, except for a colon”, and any subsequent characters match the pattern “[\c-[:\.]]”, which means “any character permitted in an XML name, except for a colon and a dot”.

  • +
  • It follows the vendor-specific parameter name requirements of Section 3.3.

  • +
+

The question of the location of the definitive normative information therefore arises. The answer is as follows:

+
    +
  • All the normative information in the main part of the document remains normative.

  • +
  • The DM Schema, and the additional requirements therein, are normative. Some of these additional requirements are duplicated (for emphasis) in this Annex.

  • +
  • The DM Schema references additional material in this Annex. Such material is normative.

  • +
  • If the DM Schema conflicts with a normative requirement in the main part of the document, this is an error in the DM Schema, and the requirement in the main part of the document takes precedence.

  • +
+

A.2.1 Importing DM Instances

+

DM Instances are imported using the top-level import element. The DM Schema specifies that the DM Instance is located via the file attribute.

+

The rules governing the file attribute’s value and its use for locating the DM Instance are as follows:

+
    +
  • It MUST be a URL adhering to RFC 3986 [9].

  • +
  • If the URL includes a scheme, it MUST be http, https or ftp.

  • +
  • If the URL includes an authority, it MUST NOT include credentials.

  • +
  • For standard BBF DM Instances, the rules that apply to the filename part (final path segment) of the A.2.1.1 BBFURL also apply to the filename part of this URL. This means that the corrigendum number can be omitted in order to refer to the latest corrigendum. See C.3.6 for the corresponding normative requirement.

  • +
  • If the URL is a relative reference, processing tools MUST apply their own logic, e.g. apply a search path.

  • +
+

A.2.1.1 URI Conventions

+

The top-level spec attribute contains the URI of the associated specification document, e.g. the BBF Technical Report.

+

This URI SHOULD uniquely identify the specification. More than one DM Schema instance document MAY reference the same specification.

+

The top-level file attribute contains the name of the DM Schema instance document, e.g. the XML file that defines a given version of a data model.

+

The following rules apply to the value of the top-level spec attribute:

+
    +
  • For a BBF Technical Report, it will be of the form “urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the specification number (including leading zeros), i is the issue number, a is the amendment number, and c is the corrigendum number. The issue, amendment and corrigendum numbers do not include leading zeros. For example, “urn:broadband-forum-org:tr-106-1-0” refers to TR-106 (Issue 1 Amendment 0), and “urn:broadband-forum-org:tr-106-1-2” refers to TR-106 (Issue 1) Amendment 2. See C.3.4 for the corresponding normative requirement.

  • +
  • For specifications issued by other standards organizations, or by vendors, it SHOULD be of a standard form if one is defined. For example, RFC 2648 [11] specifies a syntax for referencing RFCs.

  • +
  • Note that processing tools are likely to assume that all files that share a spec value are related to each other. Therefore, use of meaningful spec values is RECOMMENDED.

  • +
+

The following rules apply to the value of the top-level file attribute.

+
    +
  • For a BBF Technical Report, it will be of the form “tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where nnn, i, a and c are the same as in the spec attribute. The label, which MUST NOT begin with a digit, is not needed if only one DM Schema instance document is associated with the specification. See C.3.5 for the corresponding normative requirement.

  • +
  • It SHOULD be the same as the actual file name (omitting the directory name). Under some circumstances this will not be possible, e.g. because the content is stored in a database and not in a file system.

  • +
+

Formally, the values of the spec and file attributes are defined as follows:

+
    SpecAttr = SpecURI
+    FileAttr = FileName
+    SpecURI = BBFURI
+            | OtherURI
+    BBFURI = "urn:broadband-forum-org:" BBFDoc
+    FileName = BBFDoc BBFSubDoc ".xml"
+    BBFDoc = "tr-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
+    BBFNumber = [DIGIT]{3,}     // including leading zeros, e.g. 069
+    BBFIssue = "-" NoLeadingZeroPositiveNumber
+    BBFAmendment = "-" NoLeadingZeroNumber
+    BBFCorrigendum = "-" NoLeadingZeroNumber
+    BBFSubDoc = "-" LABEL       // distinguishing label (not beginning with a digit)
+              | ""              // not needed if only one DM Instance is associated with spec
+    NoLeadingZeroNumber = [DIGIT]
+                        | [NONZERODIGIT] [DIGIT]*
+    NoLeadingZeroPositiveNumber = [NONZERODIGIT] [DIGIT]*
+    OtherURI = <of a standard form if one is defined>
+

Standard BBF DM Instances can be accessed at the following URL:

+
    BBFURL = "http://www.broadband-forum.org/cwmp/" FileName
+    FileName = <as before, except that BBFCorrigendum is modified as follows:>
+    BBFCorrigendum = "-" NoLeadingZeroNumber
+                   | ""         // if omitted, most recent corrigendum is assumed
+

For example, the DM Instance associated with TR-181 Issue 2 Amendment 11 can be accessed at https://www.broadband-forum.org/cwmp/tr-181-2-11-0.xml.

+

A.2.2 Descriptions

+

Many elements have descriptions, and the same rules apply to all description elements in the DM Schema. A description is free text which can contain a limited amount of MediaWiki-like markup as specified in A.2.2.3.

+

A.2.2.1 Character Set

+

Character set requirements apply to the entire DM Instance, so the contents of this section have been moved to C.2, which contains the normative requirements that apply to standard BBF DM Instances.

+

A.2.2.2 Pre-processing

+

All DM Instance processing tools MUST conceptually perform the following pre-processing before interpreting the markup:

+
    +
  1. Remove any leading whitespace up to and including the first line break. Note: It can be assumed that all line breaks are represented by a single line feed, i.e. ASCII 10. See C.2.

  2. +
  3. Remove the longest common whitespace prefix (i.e. that occurs at the start of every line) from each line. See the example below, where three lines start with four spaces and one line starts with five spaces, so the longest whitespace prefix that occurs at start of each line is four spaces. In this calculation, a tab character counts as a single character. To avoid confusion, the description SHOULD NOT contain tab characters.

  4. +
  5. Remove all trailing whitespace, including line breaks.

  6. +
+

This pre-processing is designed to permit a reasonable variety of layout styles while still retaining predictable behavior. For example, both the following:

+
    <description>This is the first line.
+    This is the second line.
+     This is the indented third line.
+    This is the fourth line.</description>
+

And:

+
    <description>
+        This is the first line.
+        This is the second line.
+         This is the indented third line.
+        This is the fourth line.
+    </description>
+

…result in the following:

+
    This is the first line.
+    This is the second line.
+      This is the indented third line.
+    This is the fourth line.
+

A.2.2.3 Markup

+

The pre-processed description can contain the following markup, which is inspired by, but is not identical to, MediaWiki markup. All DM Instance processing tools SHOULD support this markup to the best of their ability.

+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1: XML Description Markup
NameMarkup ExampleDescription
Italics''italic text''Two apostrophes on each side of some text will result in the contained text being emphasized in italics.
Bold'''bold text'''Three apostrophes on each side of some text will result in the contained text being emphasized in bold.
Bold italics'''''b+i text'''''Five apostrophes on each side of some text will result in the contained text being emphasized in bold italics.
ParagraphThis paragraph just ended.A line break is interpreted as a paragraph break.
Bulleted lists* level one
+** level two
+* level one again
+** level two again
+*** level three
+*: level one continued
+outside of list
A line starting with one or more asterisks (*) denotes a bulleted list entry, whose indent depth is proportional to the number of asterisks specified.
+If the asterisks are followed by a colon (:), the previous item at that level is continued, as shown.
+An empty line, or a line that starts with a character other than an asterisk, indicates the end of the list.
Numbered lists# level one
+## level two
+# level one again
+## level two again
+### level three
+#: level one continued
+outside of list
A line starting with one or more number signs (#) denotes a numbered list entry.
+All other conventions defined for bulleted lists apply here (using # rather than *), except that numbered list entries are prefixed with an integer decoration rather than a bullet.
Indented lists: level one
+:: level two
+: level one again
+:: level two again
+::: level three
+outside of list
A line starting with one or more colons (:) denotes an indented list entry.
+All other conventions defined for bulleted lists apply here (using : rather than *), except that indented list entries have no prefix decoration, and item continuation is not needed.
Verbatimcode example:
+if (something)
+{
+/* do something */
+} else {
+/* do other */
+}
A block of lines each of which starts with a space is to be formatted exactly as typed, preferably in a fixed width font.
+This allows code fragments, simple tables etc. to be included in descriptions.
+Note that the pre-processing rules of A.2.2.2 imply that it is not possible to process an entire description as verbatim text (because all the leading whitespace would be removed). This is not expected to be a problem in practice.
Hyperlinkshttp://www.broadband-forum.orgURL links are specified as plain old text (no special markup).
Templates{{bibref|1|section 2}}
+{{section|table}}
+{{param|Enable}}
+{{enum|Error}}
Text enclosed in double curly braces ({}) is a template reference, which is replaced by template-dependent text.
+A.2.2.4 specifies the standard templates.
+
+

A.2.2.4 Templates

+
+

The term “template” is used for both template elements (A.2.4.4) and for the description templates described here.

+
+

A template invocation is encoded as two curly braces on either side of the template name and arguments. Arguments can follow the template name, separated by vertical pipe (|) characters. All whitespace is significant. For example:

+

{{someTemplate|arg1|arg2|...|argN}}

+

In some cases, one template can impact the behavior of another template, e.g. the definitions of both the {{enum}} and the {{hidden}} templates state that the template expansion can be automatically placed after the rest of the description, which raises the question of which template expansion would come first. This ambiguity is resolved by stating that processing tools SHOULD generate such automatic text in the same order that the templates are defined below. In the above example, {{enum}} is defined before {{hidden}}, so an automatically-generated list of enumeration values would be placed before an automatically-generated explanation that the parameter value is hidden.

+

The following standard templates are defined. Any vendor-specific template names MUST obey the rules of Section 3.3.

+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2: XML Description Templates
NameMarkup DefinitionDescription
Glossary reference{{gloref|id}}Glossary reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level glossary element’s item elements (A.2.4.1).
+Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”.
+Markup examples:
+{{gloref|Parameter}}
Abbreviation reference{{abbref|id}}Abbreviation reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level abbreviations element’s item elements (A.2.4.2).
+Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”.
+Markup examples:
+{{abbref|CWMP}}
Approval date{{appdate|date}}The date on which this file was approved.
+The date argument SHOULD be of the form “day month year” where “day” is the OPTIONAL day number (no leading zero), “month” is the full (capitalized) month name, and “year” is the year (including century).
+Markup examples:
+{{appdate|5 November 2011}}
+{{appdate|November 2012}}
Document name{{docname|name}}The DM Instance name or title.
+The name argument MUST distinguish this file from other different files but not from other versions of the same file or data model.
+Markup examples:
+{{docname|Device Data Model for TR-069}}
TR name{{trname|name}}The name and version of the corresponding Word / PDF document.
+The name argument MUST identify the Word / PDF document corresponding to this DM Instance, and be of the form “TR-nnnixaycz” as defined in A.2.4.3.
+Markup examples:
+{{trname|TR-181i2a5}}
XML reference{{xmlref|ref}}
+{{xmlref|ref|label}}
A reference to this or another DM Instance.
+The ref argument MUST identify a DM Instance and be the filename part of the referenced DM Instance (a) optionally omitting the corrigendum number, and (b) omitting the trailing “.xml”.
+The OPTIONAL label argument MAY be used by processing tools as a user-visible label; if it is omitted, processing tools will derive the label from the value of the ref argument.
+Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the label, possibly rendered in a distinctive font, and (if referencing a different file) a hyperlink.
+Markup examples:
+{{xmlref|tr-181-2-5}}
+{{xmlref|tr-196-2-0-1|Corrigendum 1}}
Bibliographic reference{{bibref|id}}
+{{bibref|id|section}}
A bibliographic reference.
+The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level bibliography element’s reference elements (A.2.4.3).
+The OPTIONAL section argument specifies the section number, including any leading “section”, “annex” or “appendix” text.
+Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “[id] section”.
+Markup examples:
+{{bibref|RFC3986}}
+{{bibref|RFC3986|Section 3}}
Template reference{{template|id}}A template element reference.
+The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level template elements (A.2.4.4).
+Markup examples:
+{{template|BULK-DATA-HTTP-REF}}
Section separator{{section|category}}
+{{section}}
The beginning or end of a section or category. This is a way of splitting the description into sections.
+If the category argument is present, this marks the end of the previous section (if any), and the beginning of a section of the specified category. The “table”, “row” and “examples” categories are reserved for the obvious purposes.
+If the category argument is absent, this marks the end of the previous section (if any). Typically, processing tools will (a) validate the category, and (b) replace the template reference with a section marker.
+Markup examples:
+{{section|table}}
+{{section|row}}
+{{section|examples}}
Number of entries parameter description{{numentries}}A description of a “NumberOfEntries” parameter.
+This template SHOULD be used for all such parameters. It will be expanded to something like “The number of entries in the <table> table.”.
+In most cases, the description will consist only of {{numentries}} but it MAY be followed by additional text if desired.
Parameter and object reference{{param|ref}}
+{{param|ref|scope}}
+{{param}}
+{{object|ref}}
+{{object|ref|scope}}
+{{object}}
A reference to the specified parameter or object.
+The OPTIONAL ref and scope arguments reference a parameter or object. Scope defaults to normal. Parameter and object names SHOULD adhere to the rules of A.2.3.4.
+Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current parameter or object name, possibly rendered in a distinctive font.
+Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
+Markup examples:
+{{param|Enable}}
+{{object|Stats.}}
Profile reference{{profile|ref}}
+{{profile}}
A reference to the specified profile.
+The OPTIONAL ref argument references a profile.
+Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current profile name, possibly rendered in a distinctive font.
+Markup examples:
+{{profile|Baseline:1}}
+{{profile}}
List description{{list}}
+{{list|arg}}
+{{nolist}}
A description of the current parameter’s list attributes.
+This template SHOULD only be used within the description of a list-valued parameter (A.2.7.1).
+This is a hint to processing tools to replace the template reference with a description of the parameter’s list attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{nolist}}) of describing the list attributes before the rest of the description.
+The OPTIONAL argument specifies a fragment of text that describes the list and SHOULD be incorporated into the template expansion.
+Typically processing tools will generate text of the form “Comma-separated list of <dataType>.” or “Comma-separated list of <dataType>, <arg>.”.
Reference description{{reference}}
+{{reference|arg}}
+{{reference|arg|opts}}
+{{noreference}}
A description of the object or parameter that is referenced by the current parameter.
+This template SHOULD only be used within the description of a reference parameter (A.2.3.7).
+This is a hint to processing tools to replace the template reference with a description of the parameter’s reference attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{noreference}}) of describing the reference attributes after the list attributes (for a list-valued parameter) or before the rest of the description (otherwise).
+The OPTIONAL arg argument is relevant only for a pathRef; it specifies a fragment of text that describes the referenced item and SHOULD be incorporated into the template expansion.
+The OPTIONAL opts argument is a comma-separated list of keywords that give additional information about the reference and can affect the generated text. The following keywords are currently defined:
+- ignore: ignore any non-existent targetParents; this is useful when a parameter references different objects in different data models.
+- delete: this object (the referencing object) and the referenced object have the same lifetime, so this object will always be deleted when the referenced object is deleted; therefore the reference cannever be null.
+Typically processing tools will generate text of the form “The value MUST be the full path name of <arg>…”, in which the generated text can be expected to be sensitive to whether or not the parameter is list-valued.
+Markup examples:
+{{reference|a protocol object}}
+{{reference|all Host table entries|ignore}}
Named data type{{datatype}}
+{{datatype|arg}}
+{{nodatatype}}
A description of the current parameter’s named data type.
+This template SHOULD only be used within the description of a parameter of a named data type (A.2.3.1).
+This is a hint to processing tools to replace the template reference with an indication of the parameter’s named data type, possibly including additional details or a hyperlink to such details. This overrides processing tools’ expected default behavior (unless suppressed by {{nodatatype}}) of describing the named data type before the rest of the description.
+The OPTIONAL argument affects how the data type is described. If it has the literal value “expand”, processing tools SHOULD replace the template reference with the actual description of the named data type (as opposed to referencing the description of the named data type).
Profile description{{profdesc}}
+{{noprofdesc}}
An auto-generated description of a profile.
+This template SHOULD only be used within the description of a profile (A.2.11).
+This is a hint to processing tools to replace the template reference with a description of the profile. This overrides processing tools’ expected default behavior (unless suppressed by {{noprofdesc}}) of describing the profile before the rest of the description.
+Typically processing tools will generate text of the form “This table defines the <profile:v> profile for the <object:m> object. The minimum REQUIRED version for this profile is <object:m.n>.” (or more complex text if the profile is based on or extends other profiles).
Enumeration reference{{enum|value}}
+{{enum|value|param}}
+{{enum|value|param|scope}}
+{{enum}}
+{{noenum}}
A reference to the specified enumeration value.
+The OPTIONAL value argument specifies one of the enumeration values for the referenced parameter. If present, it MUST be a valid enumeration value for that parameter.
+The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed.
+If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s enumerations, possibly preceded by text such as “Enumeration of:”. This overrides processing tools’ expected default behavior (unless suppressed by {{noenum}}) of listing the parameter’s enumerations after the rest of the description.
+Otherwise, typically processing tools will (a) validate that the enumeration value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
+Markup examples:
+{{enum|None}}
+{{enum|None|OtherParam}}
Pattern reference{{pattern|value}}
+{{pattern|value|param}}
+{{pattern|value|param|scope}}
+{{pattern}}
+{{nopattern}}
A reference to the specified pattern value.
+The OPTIONAL value argument specifies one of the pattern values for the referenced parameter. If present, it MUST be a valid pattern value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed.
+If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s patterns, possibly preceded by text such as “Possible patterns:”. This overrides processing tools’ expected default behavior (unless suppressed by {{nopattern}}) of listing the parameter’s patterns after the rest of the description.
+Otherwise, typically processing tools will (a) validate that the pattern value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.
+Markup examples:
+{{pattern|None}}
+{{pattern|None|OtherParam}}
Hidden value{{hidden}}
+{{hidden|value}}
+{{nohidden}}
Text explaining that the value of the current parameter is hidden and cannot be read. This template SHOULD only be used within the description of a hidden parameter (A.2.7.1).
+This is a hint to processing tools to replace the template reference with text explaining that the value of the current parameter is hidden and cannot be read. This overrides processing tools’ expected default behavior (unless suppressed by {{nohidden}}) of placing this text after the rest of the description.
+The OPTIONAL argument indicates the value that is returned when the current parameter is read. If omitted this defaults to the expansion of the {{null}} template.
+Typically, processing tools will generate text of the form “When read, this parameter returns <arg>, regardless of the actual value.”.
Command parameter{{command}}
+{{nocommand}}
Text explaining that the current parameter is a command parameter that triggers an Agent action. This template SHOULD only be used within the description of such a command parameter (A.2.7.1).
+This is a hint to processing tools to replace the template reference with text explaining that the current parameter is a command parameter that always reads back as {{null}}. This overrides processing tools’ expected default behavior (unless suppressed by {{nocommand}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The value is not part of the device configuration and is always {{null}} when read.”.
Factory default value{{factory}}
+{{nofactory}}
Text listing the factory default for the current parameter. This template SHOULD only be used within the description of a parameter that has a factory default value.
+This is a hint to processing tools to replace the template reference with text listing the factory default value. This overrides processing tools’ expected default behavior (unless suppressed by {{nofactory}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The factory default value MUST be <value>.”.
Unique keys description{{keys}}
+{{nokeys}}
A description of the current object’s unique keys.
+This template SHOULD only be used within the description of a Multi-Instance Object (table) that defines one or more unique keys (A.2.10.1).
+This is a hint to processing tools to replace the template reference with a description of the object’s unique keys. This overrides processing tools’ expected default behavior (unless suppressed by {{nokeys}}) of describing the unique keys after the description.
Units reference{{units}}The parameter’s units string.
+Typically, processing tools will (a) check that the parameter has a units string, and (b) substitute the value of its units string.
Boolean values{{false}}
+{{true}}
Boolean values.
+Typically, processing tools will substitute the value False or True, possibly rendered in a distinctive font.
Discriminator parameter description{{union}}
+{{nounion}}
Text explaining the available options and use for the sub-objects which are part of the union.
+This template SHOULD only be used within the description of a parameter declared as a discriminatorParameter (A.2.10.1).
+This is a hint to processing tools to replace the template reference with text explaining the union and possible choices of sub-objects. This overrides processing tools’ expected default behavior (unless suppressed by `{{nounion}}) of placing this text after the rest of the description.
+Typically, processing tools will generate text of the form “This parameter defines the name of the currently active sub-object of a union, members of the union are <objects>.” but it MAY be followed by additional text, explaining the use of the available options, if desired.
Miscellaneous{{issue|descr}}
+{{issue|opts|descr}}
An open issue.
+If only one argument is supplied, it is descr, which describes the open issue. If two arguments are supplied, they are opts and descr.
+The OPTIONAL opts argument is a comma-separated list of options:
+- The first list item is an issue category that defaults to “XXX”.
+- The second list item is an issue status that defaults to an empty string. Any non-empty status implies that the issue has been resolved.
+Typically, processing tools will assign a unique ID, e.g. a separate counter for each category of issue, and replace the template reference with the issue category, ID, status and description, possibly rendered in a distinctive font.
+Markup examples:
+{{issue|Will be labeled XXX.}}
+{{issue|IPsec|Will be labeled IPsec.}}
+{{issue|DNS,fixed|Resolved DNS issue.}}
{{empty}}Represents an empty string. Typically, processing tools will render such values in a distinctive font, possibly using standard wording, such as <Empty> or “an empty string”.
{{null}}Expands to the appropriate null value for the current parameter’s data type (A.2.3.5), e.g. {{empty}}, {{false}} or 0.
+
+

A.2.2.5 HTML Example

+

This includes examples of most of the markup and templates.

+
    <model name="Goo:1.1" base="Goo:1.0">
+      <object name="GooTop." access="readOnly" minEntries="1" maxEntries="1">
+        <parameter name="ExampleParam" access="readOnly">
+          <description>
+    {{section|Introduction}}This is an ''example'' parameter that
+    illustrates many of the '''formatting''' templates. For
+    '''''example''''', this references {{bibref|TR-106a1|section 3.2}}.
+
+    {{section|Usage}}This parameter is called {{object}}{{param}}. One can
+    also reference other parameters in the same object, such as
+    {{param|OtherParameter}}, and indicate that the parameter value is
+    measured in {{units}}.
+
+    One can also include bulleted lists:
+    * level one
+    ** level two
+    * level one again
+    ** level two again
+    *** level three
+    *: level one continued
+
+    and numbered lists:
+    # level one
+    ## level two
+    # level one again
+    ## level two again
+    ### level three
+    #: level one continued
+
+    and indented lists
+    : level one
+    :: level two
+    : level one again
+    :: level two again
+    ::: level three
+
+    and hyperlinks such as http://www.google.com
+
+    and code examples:
+     if (something) {
+       /* do something */
+     } else {
+       /* do other */
+     }
+
+    If the parameter was Boolean, one could refer to its values {{false}}
+    and {{true}}.
+
+    One can refer to its enumerations individually, e.g. {{enum|Disabled}},
+    or to other parameters' enumerations, such as {{enum|Value|OtherParam}},
+    or can list them all. {{enum}}
+
+    Finally, if there were any patterns they could be listed too. {{pattern}}
+          </description>
+          <syntax>
+            <string>
+              <enumeration value="A"/>
+              <enumeration value="B"/>
+              <units value="packets"/>
+            </string>
+          </syntax>
+        </parameter>
+

The resulting HTML would look something like this:

+

+

A.2.3 Data Types

+

CWMP [1] and USP [2] data models support only the primitive data types listed in the last row of Table 3 “on the wire”. However, the DM Schema allows data types to be derived from the primitive types or from other named data types. Such derived types can be named or anonymous.

+

A.2.3.1 Named Data Types

+

Named data types are defined using the top-level dataType element. A DM Instance can contain zero or more top-level dataType elements.

+

When defining a new named data type, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3: XML Named Data Types
NameDescription
nameThe data type name.
baseThe base type name, i.e. name of the data type from which this data type is derived. This is used only where the base type is itself a named data type, not a primitive type.
statusThe data type’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new data type.
descriptionThe data type’s description (A.2.2).
list
+minItems
+maxItems
+nestedBrackets
+size
If the data type is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3).
+Note that a list-valued data type is always a string as far as the protocol is concerned. For a list, the rest of the data type specification refers to the individual list items, not to the parameter value.
size
+pathRef
+instanceRef
+range
+enumeration
+enumerationRef
+pattern
+units
+default
Data type facets (A.2.3.3). These are permitted only when the base type is a named data type, i.e. when the base attribute is specified.
base64
+boolean
+dateTime
+hexBinary
+int
+long
+string
+unsignedInt
+unsignedLong
Primitive data type definition. These are permitted only when the base type is primitive. There is an element for each primitive data type, and each element supports only the facets (A.2.3.3) that are appropriate to that data type.
+
+

For example:

+
    <dataType name="String255">
+      <description>String of maximum length 255.</description>
+      <string>
+        <size maxLength="255"/>
+      </string>
+    </dataType>
+
+    <dataType name="String127" base="String255">
+      <description>String of maximum length 127.</description>
+      <size maxLength="127"/>
+    </dataType>
+
+    <dataType name="String127List" base="String127">
+      <description>List of up to 7 strings, each of maximum length 127. If a
+      list item is itself a list, it will be "protected" by square
+      brackets.</description>
+      <list maxItems="7" nestedBrackets="required"/>
+    </dataType>
+

A.2.3.2 Anonymous Data Types

+

Anonymous data types are defined within parameter syntax elements (A.2.7.1), and can apply only to the parameters within which they are defined. For example:

+
    <parameter name="Example1" access="readOnly">
+      <syntax>
+        <string>
+          <size maxLength="127"/>
+          </string>
+      </syntax>
+    </parameter>
+
+    <parameter name="Example2" access="readOnly">
+      <syntax>
+        <dataType base="String255">
+          <size maxLength="127"/>
+        </dataType>
+      </syntax>
+    </parameter>
+

If an anonymous data type is modified in a later version of a data model, the modified anonymous data type is regarded as being derived from the original anonymous data type. Therefore the base type restriction rules of A.2.3.8 MUST be obeyed.

+

A.2.3.3 Data Type Facets

+

A facet specifies some aspect of a data type, e.g. its size, range or units.

+

Note that XML Schema [4] also associates facets with data types. The XML Schema and DM Schema concepts are the same, but the set of facets is not identical.

+

The DM Schema defines the following facets (normative requirements are specified in the schema):

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4: XML Data Type Facets
NameDescription
sizeSize ranges for the data type (applies to string, base64, hexBinary and their derived types). Note that the size facet always refers to the actual value, not to the base64- or hexBinary-encoded value. Prior to the definition of the DM Schema, the maximum sizes of base64 parameters referred to the base64-encoded values.
+Processing tools that generate reports from DM Instances SHOULD include explicit clarification of whether the size ranges refer to the actual or encoded values.
+Note that the size facet is also used to specify the size range for list-valued parameters, which are always strings (A.2.7.1).
pathRefDetails of how to reference parameters and objects via their Path Names (applies to string and its derived types; A.2.3.7).
instanceRefDetails of how to reference object instances (table rows) via their Instance Numbers (applies to int, unsignedInt and their derived types; A.2.3.7).
rangeValue ranges and step (default step is 1) for the data type (applies to numeric data types and their derived types).
enumerationEnumerations for the data type (applies to string and its derived types).
enumerationRefEnumerations for the data type, obtained at run-time from the value of a specified parameter (applies to string and its derived types; A.2.3.7).
patternPatterns for the data type (applies to string and its derived types). Pattern value syntax is the same as for XML Schema regular expressions. See [Section F/12].
unitsUnits for the data type (applies to numeric data types and their derived types).
defaultObject, factory, implementation or parameter default.
+- Object defaults apply only to parameters that can be created as a result of an AddObject RPC.
+- Factory defaults apply to all parameters (if a factory default is specified, it also acts as object default for applicable parameters).
+- Implementation defaults apply to all parameters (they are informational defaults that are likely after a reset or if no other value is available).
+- Parameter defaults apply only to command and event arguments.
+
+

It is important to note that the enumeration facet does not necessarily define all the valid values for a data type. This is for the following reasons:

+
    +
  • As specified in Section 3.3, vendors are allowed to add additional enumeration values.

  • +
  • A future version of a data model may need to add additional enumeration values.

  • +
+

A.2.3.4 Reference Path Names

+

Some description templates (A.2.2.4), and all reference facets (A.2.3.7), need to specify parameter or object names. It is always possible to specify a full Path Name, but it is frequently necessary or convenient to specify a relative Path Name. For example, it might be necessary to reference another parameter in the current object. Any Instance Numbers in the parameter’s full Path Name cannot be known at data model definition time, so this can only be done using a relative Path Name.

+

The following rules apply to all Path Names that are used in data model definitions for referencing parameters or objects:

+
    +
  • Path Names MAY contain “{i}” placeholders, which MUST be interpreted as wild cards matching all Instance Numbers, e.g. “Device.Ethernet.Interface.{i}.” references all Ethernet.Interface instances.

  • +
  • Path Names MUST NOT contain Instance Numbers.

  • +
+

A Path Name is always associated with a path name scope, which defines the point in the naming hierarchy relative to which the Path Name applies.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 5: Path Name Scope Definition
NameDescription
normalThis is a hybrid scope which usually gives the desired behavior:
+- If the path begins with a “Device” component, it is relative to the top of the naming hierarchy.
+- If the path begins with a dot, it is relative to the Root or Service Object (c.f. scope=model).
+- Otherwise, the path is relative to the current object (c.f. scope=object).
modelThe path is relative to the Root or Service Object.
objectThe path is relative to the current object.
+
+

Formally, if the path name scope is normal:

+
    +
  • If the path is empty, it MUST be regarded as referring to the top of the naming hierarchy.

  • +
  • Otherwise, if the path begins with a “Device” component, it MUST be regarded as a full Path Name.

  • +
  • Otherwise, if the path begins with a dot (“.”), it MUST be regarded as a path relative to the Root or Service Object. For example, in the Device Root Object “.DeviceInfo.” means “Device.DeviceInfo.”, and in the Device.Services.ABCService.1 Service Object it means “Device.Services.ABCService.1.DeviceInfo.”.

  • +
  • Otherwise, it MUST be regarded as a path relative to the current object. Any leading hash characters (“#”) cause it to be relative to the parent of the current object (or the parent’s parent, and so on) as described below. For example, if the current object is “Device.LAN.”, “IPAddress” means “Device.LAN.IPAddress”, “Stats.” means “Device.LAN.Stats.” and “#.DeviceInfo.” means “Device.DeviceInfo” (see below for more “#” examples).

  • +
+

If the path name scope is model:

+
    +
  • If the path is empty, it MUST be regarded as referring to the Root or Service Object.

  • +
  • Otherwise, it MUST be regarded as a path relative to the Root or Service Object. Any leading dot MUST be ignored. Leading hash characters are not permitted.

  • +
+

If the path name scope is object:

+
    +
  • If the path is empty, it MUST be regarded as referring to the current object.

  • +
  • Otherwise, it MUST be regarded as a path relative to the current object. Any leading dot MUST be ignored. Leading hash characters are not permitted.

  • +
+

As mentioned above, if the path name scope is normal, a leading hash character causes the path to be relative to the parent of the current object. Additional hash characters reference the parent’s parent, and so on, but they MUST NOT be used to reference beyond the Root or Service Object. Also, for object instances, “#.” always means the Multi-Instance Object’s (table’s) parent rather than the Multi-Instance Object (table).

+

In addition, within a component definition, items that are defined outside the component MUST NOT be referenced via relative paths. This is because components can be included anywhere within the data model tree.

+

For example, if the current object is “Device.LAN.DHCPOption.{i}.”:

+
    +
  • “#.” means “Device.LAN.” (the table’s parent, not the table).

  • +
  • “#.DHCPOption.” means “Device.LAN.DHCPOption.” (the table).

  • +
  • “#.Stats.” means “Device.LAN.Stats.”.

  • +
  • “#.Stats.TotalBytesSent” means “Device.LAN.Stats.TotalBytesSent”.

  • +
+

The following examples would be invalid if LAN was defined within a component:

+
    +
  • “##.” means “Device.”.

  • +
  • “##.DeviceInfo.” means “Device.DeviceInfo.”.

  • +
  • “##.DeviceInfo.Manufacturer” means “Device.DeviceInfo.Manufacturer”.

  • +
+

The final example can never be valid:

+
    +
  • “###.” is not permitted (references beyond the Root Object).
  • +
+

Note that the term “Root or Service Object”, which is used several times above, means “if within a Service Object instance, the Service Object instance; otherwise, the Root Object”.

+

For example, the pathRef and instanceRef facets (A.2.3.7) have a targetParent attribute which specifies the possible parent(s) of the referenced parameter or object, and a targetParentScope attribute (defaulted to normal) which specifies targetParent’s scope. If the current object is within a Service Object instance, setting targetParentScope to model forces the referenced parameter or object to be in the same Service Object instance. Similarly, setting targetParentScope to object forces the referenced parameter or object to be in the same object or in a sub-object.

+

A.2.3.5 Null Values and References

+

Each primitive data type has an associated null value that is used, for example, as the expansion of the {{null}} template (A.2.2.4). These null values are defined as follows:

+
    +
  • base64, hexBinary, string: an empty string

  • +
  • unsignedInt, unsignedLong: 0

  • +
  • int, long: -1

  • +
  • boolean: false

  • +
  • dateTime: 0001-01-01T00:00:00Z (the Unknown Time; see Section 3.2.1)

  • +
+

A null reference indicates that a reference parameter is not currently referencing anything. The value that indicates a null reference is the null value for the reference parameter’s base data type, i.e.:

+
    +
  • string: an empty string

  • +
  • unsignedInt: 0

  • +
  • int: -1

  • +
+

A.2.3.6 Reference Types

+

A reference to another parameter or object can be weak or strong:

+
    +
  • weak: it does not necessarily reference an existing parameter or object. For example, if the referenced parameter or object is deleted, the value of the reference parameter might not get updated. All weak reference parameters MUST be declared as writable.

  • +
  • strong: it always either references a valid parameter or object, or else is a null reference (A.2.3.5). If the referenced parameter or object is deleted, the value of the reference parameter is always set to a null reference.

  • +
+

See Section 3.2.3 for normative requirements relating to reference types and the associated Agent behavior.

+

A.2.3.7 Reference Facets

+

A reference facet specifies how a parameter can reference another parameter or object. There are three sorts of reference:

+
    +
  • Path reference: references another parameter or object via its Path Name. Details are specified via the pathRef facet, which applies to string and its derived types.

  • +
  • Instance reference: references an object instance (table row) via its Instance Number. Details are specified via the instanceRef facet, which applies to int, unsignedInt and their derived types.

  • +
  • Enumeration reference: references a list-valued parameter via its Path Name. The current value of the referenced parameter indicates the valid enumerations for this parameter. Details are specified via the enumerationRef facet, which applies to string and its derived types.

  • +
+

When defining a path reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6: PathRef Facet Definition
NameDescription
targetParentAn XML list of Path Names that can restrict the set of parameters and objects that can be referenced. If the list is empty (the default), then anything can be referenced. Otherwise, only the immediate children of one of the specified objects can be referenced.
+A “{i}” placeholder in a Path Name acts as a wild card, e.g. “Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.”. Path Names cannot contain explicit Instance Identifiers.
targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
targetTypeSpecifies what types of item can be referenced:
+- any: any parameter or object can be referenced (default)
+- parameter: any parameter can be referenced
+- object: any object can be referenced
+- single: any single-instance object can be referenced
+- table: any Multi-Instance Object (table) can be referenced
+- row: any Multi-Instance Object (table) instance (row) can be referenced
targetDataTypeSpecifies the valid data types for the referenced parameter. Is relevant only when targetType is any or parameter.
+Possible values are as follows:
+- any: a parameter of any data type can be referenced (default)
+- base64: only a base64 parameter can be referenced
+- boolean: only a boolean parameter can be referenced
+- dateTime: only a dateTime parameter can be referenced
+- hexBinary: only a hexBinary parameter can be referenced
+- integer: only an integer (int, long, unsignedInt or unsignedLong) parameter can be referenced
+- int: only an int parameter can be referenced
+- long: only a long (or int) parameter can be referenced
+- string: only a string parameter can be referenced
+- unsignedInt: only an unsignedInt parameter can be referenced
+- unsignedLong: only an unsignedLong (or unsignedInt) parameter can be referenced
+- <named data type>: only a parameter of the named data type can be referenced
+In addition, a parameter whose data type is derived from the specified data type can be referenced. The built-in type hierarchy (a simplified version of the XML Schema type hierarchy) is as follows:
+any
+  base64
+  boolean
+  dateTime
+  hexBinary
+  integer
+    long
+      int
+    unsignedLong
+      unsignedInt
+  string
+Note that any and integer are not valid parameter data types. They are included in order to support “can reference any data type” and “can reference any numeric data type”.
refTypeSpecifies the reference type (A.2.3.6): weak or strong.
+
+

When defining an instance reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 7: InstanceRef Facet Definition
NameDescription
targetParentSpecifies the Path Name of the Multi-Instance Object (table) of which an instance (row) is being referenced.
+“{i}” placeholders and explicit Instance Identifiers are not permitted in the Path Name. targetParentScope can be used to specify Path Names relative to the Root or Service Object or the current object.
targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
refTypeSpecifies the reference type (A.2.3.6): weak or strong.
+
+

When defining an enumeration reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 8: EnumerationRef Facet Definition
NameDescription
targetParamSpecifies the Path Name of the list-valued parameter whose current value indicates the valid enumerations for this parameter.
targetParamScopeSpecifies the point in the naming hierarchy relative to which targetParam applies (A.2.3.4): normal (default), model or object.
nullValueSpecifies the parameter value that indicates that none of the values of the referenced parameter currently apply (if not specified, no such value is designated).
+Note that if this parameter is list-valued then nullValue is not relevant, because this condition will be indicated by an empty list.
+
+

The following examples illustrate the various possible types of reference.

+
    <object name="PeriodicStatistics.SampleSet.{i}.Parameter.{i}." ...>
+      ...
+      <parameter name="Reference" access="readWrite">
+        <description>Reference to the parameter that is associated with this
+        object instance. This MUST be the parameter's full path name.</description>
+        <syntax>
+          <string>
+            <size maxLength="256"/>
+            <pathRef targetType="parameter" refType="weak"/>
+          </string>
+          <default type="object" value=""/>
+        </syntax>
+      </parameter>
+
    <object name="StorageService.{i}.StorageArray.{i}." ...>
+      ...
+      <parameter name="PhysicalMediumReference" access="readWrite">
+        <description>A comma-separated list of Physical Medium references.
+        Each Physical Medium referenced by this parameter MUST exist within the
+        same StorageService instance. A Physical Medium MUST only be referenced
+        by one Storage Array instance. Each reference can be either in the form
+        of ".PhysicalMedium.{i}" or a fully qualified object
+        name...</description>
+        <syntax>
+          <list>
+            <size maxLength="1024"/>
+          </list>
+          <string>
+            <pathRef targetParent=".PhysicalMedium." targetParentScope="model"
+            targetType="row" refType="strong"/>
+          </string>
+        </syntax>
+      </parameter>
+
    <object name="STBService.{i}.Components.FrontEnd.{i}.IP.Inbound.{i}." ...>
+      ...
+      <parameter name="StreamingControlProtocol" access="readOnly">
+        <description>Network protocol currently used for controlling streaming
+        of the source content, or an empty string if the content is not being
+        streamed or is being streamed but is not being controlled. If non-empty,
+        the string MUST be one of the .Capabilities.FrontEnd.IP.StreamingControlProtocols
+        values.</description>
+        <syntax>
+          <string>
+            <enumerationRef
+            targetParam=".Capabilities.FrontEnd.IP.StreamingControlProtocols"
+            nullValue=""/>
+          </string>
+        </syntax>
+      </parameter>
+
+      <parameter name="StreamingTransportProtocol" access="readOnly">
+        <description>Network protocol currently used for streaming the source
+        content, or an empty string if the content is not being streamed.
+        If non-empty, the string MUST be one of the
+        .Capabilities.FrontEnd.IP.StreamingTransportProtocols
+        values.</description>
+        <syntax>
+          <string>
+            <enumerationRef
+            targetParam=".Capabilities.FrontEnd.IP.StreamingTransportProtocols"
+            nullValue=""/>
+          </string>
+        </syntax>
+      </parameter>
+
    <object name="Device.WiFi.AccessPoint.{i}.Security." ...>
+      ...
+      <parameter name="ModeEnabled" access="readWrite">
+        <description>Indicates which security mode is enabled.</description>
+        <syntax>
+          <list/>
+          <string>
+            <enumerationRef targetParam="ModesSupported"/>
+          </string>
+        </syntax>
+      </parameter>
+

A.2.3.8 Base Type Restriction

+

A new data type MUST always be a restriction of its base type, meaning that a valid value of the new data type will always be a valid value for its base type. This is the case for the examples of A.2.3.1, which involve three different data types:

+
    +
  • string of unlimited length

  • +
  • string of maximum length 255

  • +
  • string of maximum length 127

  • +
+

Clearly a string of length 100 is valid for all three data types, but a string of length 200 is only valid for the first two data types.

+

The examples of A.2.3.1 considered only the size facet, but in general all facets that are applicable to the data type have to be considered. The base type restriction requirements for each facet are as follows:

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 9: XML Facet Inheritance Rules
FacetRequirements
sizeThe derived data type can define sizes in any way, provided that the new sizes do not permit any values that are not valid for the base type.
pathRefThe derived data type can modify the data type in the following ways:
+- By “promoting” status to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
+- By changing targetParent to narrow the set of possible parent objects.
+- By changing targetType to narrow the set of possible target types.
+- By changing targetDataType to narrow the set of possible target data types.
instanceRefThe derived data type can modify the data type in the following ways:
+- By “promoting” status to a “higher” value, as described for pathRef.
+- By changing targetParent to narrow the set of possible parent objects.
rangeThe derived data type can define ranges in any way, provided that the new ranges do not permit any values that are not valid for the base type.
enumerationThe derived data type can modify existing enumeration values in the following ways:
+- By “promoting” access from readOnly to readWrite or writeOnceReadOnly.
+- By “promoting” status to a “higher” value, as described for pathRef.
+- By “promoting” optional from False to True.
+- By adding a code, if none was previously specified.
+- By using the action attribute to prefix, extend or replace the description (see below and A.2.12.6).
The derived data type can add new enumeration values.
enumerationRefThe derived data type can modify the data type by “promoting” status to a “higher” value, as described for pathRef.
patternThe derived data type can modify existing pattern values by changing access, status, optional and description exactly as for enumerations.
+The derived data type can add new patterns and/or replace existing patterns with new patterns, provided that the new patterns do not permit any values that are not valid for the base type. For example a single pattern “[AB]” could be replaced with “A” and “B”, but “C” could not be added.
unitsThe derived data type can add units if the base type did not specify any.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors. For example, if the base type supports a range of [-1:4095] but the values 0 and 4095 were included in error, it would be permissible for a derived type to support ranges of [-1:-1] and [1:4094]. Processing tools SHOULD be able to detect and warn about such cases.

+

When defining a new data type, if a facet is omitted, the new data type will inherit that facet from its base type. If a facet is present, it MUST be fully specified (except that special rules apply to descriptions; see below and A.2.12.6). For example, this means that a derived type that adds additional enumeration values has also to re-declare the enumeration values of the base type.

+

In the following example, the derived type inherits the units facet from its parent but it does not inherit the range facet, so the DataBlockSize range is [0:65535] and the DataBlockSize2 range is [40:1460].

+
   <dataType name="DataBlockSize">
+     <unsignedInt>
+       <range maxInclusive="65535"/>
+       <units value="bytes"/>
+     </unsignedInt>
+   </dataType>
+
+   <dataType name="DataBlockSize2" base="DataBlockSize">
+     <range minInclusive="40" maxInclusive="1460"/>
+   </dataType>
+

Similarly, in the following, the enumeration values for ABCD are not A, B, C and D, but are just C and D. This is an error (because the derived type cannot remove enumeration values), and processing tools SHOULD detect and warn about such cases.

+
    <dataType name="AB">
+      <string>
+        <enumeration value="A"/>
+        <enumeration value="B"/>
+      </string>
+    </dataType>
+
+    <dataType name="ABCD" base="AB">
+      <string>
+        <enumeration value="C"/>
+        <enumeration value="D"/>
+      </string>
+    </dataType>
+

A derived data type and any of its facets that support descriptions will inherit those descriptions from the base type. Facet descriptions are inherited regardless of whether the facet is present in the derived type. For any descriptions that are explicitly specified in the derived type, the action attribute controls whether they will be prefixed, extended or replaced (A.2.12.6).

+

For example, in the following, the description of Z (which is not changed) does not have to be repeated.

+
    <dataType name="XY">
+      <description>This is XY.</description>
+      <string>
+        <enumeration value="X">
+          <description>This is X.</description>
+        </enumeration>
+        <enumeration value="Y">
+          <description>This is Y.</description>
+        </enumeration>
+        <enumeration value="Z">
+          <description>This is Z.</description>
+        </enumeration>
+      </string>
+    </dataType>
+
+    <dataType name="XY2" base="XY">
+      <description action="replace">This is all about XY.</description>
+      <enumeration value="X">
+        <description action="append">This is more about X, added at the
+        end.</description>
+      </enumeration>
+      <enumeration value="Y">
+        <description action="prefix">This is more about Y, inserted at the
+        beginning.</description>
+      </enumeration>
+      <enumeration value="Z"/>
+    </dataType>
+

A.2.4 Glossary, Abbreviations, Bibliography and Templates

+

A.2.4.1 Glossary

+

The glossary is defined using the top-level glossary element, which can contain zero or more item elements.

+

When defining a new glossary item, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + +
Table 10: XML Glossary Items
NameDescription
idThe glossary item ID. This is the term that is being defined.
descriptionThe description of the glossary item. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
+
+

A.2.4.2 Abbreviations

+

Abbreviations are defined using the top-level abbreviations element, which can contain zero or more item elements.

+

When defining a new abbreviation, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + +
Table 11: XML Abbreviation Items
NameDescription
idThe abbreviation item ID. This is the abbreviation that is being defined.
descriptionThe description of the abbreviation. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
+
+

A.2.4.3 Bibliography

+

The bibliography is defined using the top-level bibliography element, which can contain zero or more (bibliographic) reference elements.

+

When defining a new bibliographic reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 12: XML Bibliographic References
NameDescription
idThe bibliographic reference ID.
nameThe name by which the referenced document is usually known.
titleThe document title.
organizationThe organization that published the referenced document, e.g. BBF, IEEE, IETF.
categoryThe document category, e.g. TR (BBF), RFC (IETF).
dateThe publication date.
hyperlinkHyperlink(s) to the document.
+
+

For BBF standard DM Instances, the C.3.7 rules apply.

+

Processing tools SHOULD be lenient when comparing bibliographic reference IDs. Specifically, they SHOULD ignore all whitespace, punctuation, leading zeros in numbers, and upper / lower case. So, for example, “rfc 1234” and “RFC1234” would be regarded as the same ID, as would “TR-069” and “TR69”.

+

Processing tools SHOULD detect and report inconsistent bibliographic references, e.g. a reference with the same ID (i.e. an ID that compares as equal) as one that was encountered in a different file, but with a different name or hyperlink.

+

A.2.4.4 Templates

+
+

The term “template” is used for both description templates (A.2.2.4) such as {{bibref}} and (confusingly) {{template}}, and for the template elements described here.

+
+

Template elements define named blocks of text that can be included (using {{template}} description templates) in descriptions.

+

When defining a new template element, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + + + + + + + + + + + + + + + + + +
Table 13: XML Template Elements
NameDescription
idThe template ID. This identifies the template that is being defined.
<body>The template body.
+
+

When including a template body in a description, processing tools MUST pre-process the value as for descriptions (A.2.2.2) and then replace the {{template}} description template with the resulting text. The template body might contain markup, possibly including further {{template}} description templates, so processing tools MUST then process the expanded text.

+

A.2.5 Components

+

A component is a way of defining a named set of parameters, objects and/or profiles to be used wherever such a group is needed in more than one place (or just to structure the definitions). A DM Instance can contain zero or more top-level component elements.

+

When defining a new component, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 14: XML Component Definition
NameDescription
nameThe component name.
descriptionThe component’s description (A.2.2).
componentThe other components that are referenced (included) by this component.
parameterThe component’s top-level parameter definitions (A.2.7).
objectThe component’s object definitions (A.2.10).
profileThe component’s profile definitions (A.2.11).
+
+

Referencing (including) a component can be thought of as textual substitution. A component has no version number and is not tied to a particular Root or Service Object.

+

The following is a simple example of component definition and reference.

+
    <component name="ByteStats">
+      <parameter name="BytesSent" access="readOnly">
+        <description>Number of bytes sent.</description>
+        <syntax><unsignedInt/></syntax>
+      </parameter>
+      <parameter name="BytesReceived" access="readOnly">
+        <description>Number of bytes received.</description>
+        <syntax><unsignedInt/></syntax>
+      </parameter>
+    </component>
+
    <model name="Device:2.11">
+      <object name="Device." access="readOnly" minEntries="1"
+      maxEntries="1">
+        ...
+        <component ref="ByteStats"/>
+        ...
+      </object>
+      ...
+    </model>
+

Here the component is referenced from within an object definition. Components can be referenced from within component, model, object, command and event definitions. Parameter, command, event, object and profile definitions within components are relative to the point of inclusion unless overridden using the path attribute.

+

A.2.6 Root and Service Objects

+

Root and Service Objects are defined using the model element and an associated top-level object element. A DM Instance can contain zero or more top-level model elements.

+

When defining a new model, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 15: XML Root and Service Objects
NameDescription
nameThe model name, including its major and minor version numbers.
baseThe name of the previous version of the model (for use when the model version is greater than 1.0).
isServiceWhether it is a Service Object. This defaults to False and so can be omitted for Root Objects.
descriptionThe model’s description (A.2.2).
componentThe components that are referenced (included) by the model (A.2.5).
parameterThe model’s top-level parameter definitions (A.2.7).
objectThe model’s top-level and other object definitions (A.2.10).
profileThe model’s profile definitions (A.2.11).
+
+

Once a given version has been defined, it cannot be modified; instead, a new version of the object has to be defined. For example, the following example defines v1.0 and v1.1 of a notional Service Object.

+
    <model name="DemoService:1.0" isService="true">
+      <parameter name="DemoServiceNumberOfEntries" access="readOnly"/>
+      <object name="DemoService.{i}." access="readOnly" minEntries="0"
+      maxEntries="unbounded" entriesParameter="DemoServiceNumberOfEntries"/>
+    </model>
+
    <model name="DemoService:1.1" base="DemoService:1.0"
+    isService="true">
+      <object base="DemoService.{i}." access="readOnly" minEntries="0"
+      maxEntries="unbounded"/>
+    </model>
+

A.2.7 Parameters

+

Parameters are defined using the parameter element, which can occur within component, model and object elements. When defining a new parameter, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 16: XML Parameter Definition
NameDescription
nameThe parameter name (Section 3.1).
accessWhether the parameter is writable (readWrite), read-only (readOnly), or writable once then read-only (writeOnceReadOnly).
statusThe parameter’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new parameter.
activeNotifyThe parameter’s {normal, forceEnabled, forceDefault, canDeny} Active Notification status. This defaults to normal, and so is not often specified for a new parameter.
+Note that in USP, forceEnabled and forceDefault are equivalent to normal.
forcedInformFor CWMP only, the parameter’s Forced Inform status. This defaults to False, and so is not often specified for a new parameter.
descriptionThe parameter’s description (A.2.2).
syntaxThe parameter’s syntax (A.2.7.1).
+
+

A.2.7.1 Parameter Syntax

+

Parameter syntax is defined using the syntax element, which can occur only within parameter elements. When defining a new parameter, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 17: XML Parameter Syntax
NameDescription
hiddenWhether the value is hidden on readback. This defaults to False, and so is not often specified for a new parameter.
commandFor CWMP only, whether setting the parameter triggers an Agent action as opposed to changing the configuration. This defaults to False.
+Note that this is an CWMP-only attribute (not an element) and is different from the USP-only command element (A.2.8).
list
+minItems
+maxItems
+nestedBrackets
+size
If the parameter is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3).
+Note that a list-valued parameter is always a string as far as the protocol is concerned. For a list, the rest of the syntax specification refers to the individual list items, not to the parameter value.
base64
+boolean
+dateTime
+hexBinary
+int
+long
+string
+unsignedInt
+unsignedLong
If the parameter is of a primitive data type, specifies a primitive data type reference, e.g. <int>. If the parameter data type is derived from a primitive data type, specifies an anonymous primitive data type definition (A.2.3.2), e.g. <int><range maxInclusive=“255”/></int>. Each primitive data type element supports only the facets (A.2.3.3) that are appropriate to that data type.
dataTypeIf the parameter is of a named data type, specifies a named data type (A.2.3.1) reference, e.g. <dataType ref=“IPAddress”/>.
+If the parameter data type is derived from a named data type, specifies an anonymous named data type (A.2.3.2) definition, e.g. <dataType base=“IPAddress”><size maxLength=“15”/></dataType>
+
+

A.2.8 Commands (USP Only)

+

Data Model Commands are defined using the command element, which can occur within component and object elements. When defining a new Data Model Command, the following attributes and elements are relevant (normative requirements are specified in the schema). This concept does not apply to CWMP, which uses Objects and/or Parameters to simulate commands.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 18: XML Command Definition
NameDescription
nameThe command name (Section 3.1).
asyncWhether this command is asynchronous or not. This defaults to false.
statusThe command’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new command.
descriptionThe command’s description (A.2.2).
inputThe command’s input arguments (can be omitted if there are none).
outputThe command’s output arguments (can be omitted if there are none).
+
+

The input / output elements define the command’s input / output arguments (respectively).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 19: XML Command Input / Output Arguments Definition
NameDescription
componentThe arguments defined by components that are referenced (included) by the command (A.2.5).
parameterThe command’s parameter arguments (A.2.7).
objectThe command’s object arguments (A.2.10).
+
+

Command argument parameter / object elements are similar to the corresponding data model parameter / object elements but support different attributes, e.g. they have no access or numEntriesParameter attributes, and they have a Boolean mandatory attribute (to indicate a mandatory argument).

+

When a command references a component, any attributes not supported in command arguments are ignored. This allows a component that defines data model parameters / objects to be used for defining command parameter / object arguments.

+

When a command argument is a table, its instance numbers MUST be 1, 2, 3… (assigned sequentially without gaps).

+

A.2.9 Events (USP Only)

+

Data Model Events are defined using the event element, which can occur within component and object elements. When defining a new Data Model Event, the following attributes and elements are relevant (normative requirements are specified in the schema). This concept does not apply to CWMP.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
nameThe event name (Section 3.1).
statusThe event’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new event.
descriptionThe event’s description (A.2.2).
componentThe arguments defined by components that are referenced (included) by the event (A.2.5).
parameterThe event’s parameter arguments (A.2.7).
objectThe event’s object arguments (A.2.10).
+

Event argument parameter / object elements are similar to the corresponding data model parameter / object elements but support different attributes, e.g. they have no access or numEntriesParameter attributes, and they have a Boolean mandatory attribute (to indicate a mandatory argument).

+

When an event references a component, any attributes not supported in event arguments are ignored. This allows a component that defines data model parameters / objects to be used for defining event parameter / object arguments.

+

When an event argument is a table, its instance numbers MUST be 1, 2, 3… (assigned sequentially without gaps).

+

A.2.10 Objects

+

Objects are defined using the object element, which can occur within component and model elements. When defining a new object, the following attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 20: XML Object Definition
NameDescription
nameThe object name, specified as a partial path (Section 3.1).
accessWhether object instances can be Added or Deleted (readWrite) or not (readOnly). Adding or deleting instances is meaningful only for a Multi-Instance Object (table).
minEntriesThe minimum number of instances of this object (always less than or equal to maxEntries).
maxEntriesThe maximum number of instances of this object (can be “unbounded”). minEntries and maxEntries allow the object to be placed into one of three categories:
+- minEntries=0, maxEntries=1: single-instance object which might not be allowed to exist, e.g. because only one of it and another object can exist at the same time. Note that this is not the same thing as an optional object (in a sense, all objects are optional; requirements are specified via profiles). For an object with minEntries=0, maxEntries=1, the description MUST explain why it might not be allowed to exist, e.g. referencing the other objects that constrain it.
+- minEntries=1, maxEntries=1: single-instance object that is always allowed to exist.
+- All other cases: Multi-Instance Object (table) (A.2.10.1).
mountTypeFor USP only, denotes whether this object is a Mountable Object, a Mount Point, or none. Possible values are:
+- mountable: this object is a Mountable Object. Such an object appears only right under the Root Object.
+- mountPoint: this object is a Mount Point.
+- none (default): this object is neither a Mountable Object nor a Mount Point.
statusThe object’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new object.
descriptionThe object’s description (A.2.2).
componentThe components that are referenced (included) by the object (A.2.5).
parameterThe object’s parameter definitions (A.2.7).
commandFor USP only, the object’s command definitions (A.2.8).
eventFor USP only, the object’s event definitions (A.2.9).
+
+

A.2.10.1 Tables

+

If an object is a table, several other attributes and elements are relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 21: XML Table Definition
NameDescription
nameFor a table, the last part of the name has to be “{i}.” (Section 3.1).
numEntriesParameterThe name of the parameter (in the parent object) that contains the number of entries in the table. Such a parameter is needed whenever there is a variable number of entries, i.e. whenever maxEntries is unbounded or is greater than minEntries.
enableParameterFor CWMP only, the name of the parameter (in each table entry) that enables and disables that table entry. Such a parameter is needed whenever access is readWrite (so the Controller might be able to create entries) and at least one uniqueKey element that defines a functional key is present.
uniqueKeyAn element that specifies a unique key by referencing those parameters that constitute the unique key (all of these parameters are single-valued, i.e. not list-valued).
+In CWMP only, for a non-functional key, or if the table has no enableParameter, the uniqueness requirement always applies; for a functional key, and if the table has an enableParameter, the uniqueness requirement applies only to enabled table entries.
discriminatorParameterThe name of the parameter (in the parent object) that selects which of the available objects that are part of the same union to use. Such a discrimination parameter is needed whenever there are multiple alternative sub-objects, i.e. objects where minEntries=0 and maxEntries=1.
+
+

Each unique key is either functional or non-functional:

+
    +
  • A functional key references at least one parameter that is necessary for the correct operation of the table, e.g., a DHCP option tag in a DHCP option table, or an external port number in a port mapping table.

  • +
  • A non-functional key references only parameters that are not necessary for the correct operation of the table, e.g., an Alias parameter or (sometimes) a Name parameter.

  • +
+

A unique key is assumed to be functional unless explicitly marked as non-functional by setting the unique key’s functional attribute to false.

+

As can be seen from the description in Table 21, in CWMP, non-functional keys are always required to be unique, regardless of whether the table has an enableParameter, or is enabled or disabled. Therefore, at most one entry in a given parent object can exist with a given value for a non-functional unique key. USP doesn’t require any different behavior for both functional and non-functional keys: all keys are always required to be unique.

+

The uniqueness requirement means that the value of the unique key MUST be unique for all instances of a given parent object regardless of how instances got created.

+

If a parameter (or group of parameters) is not defined as a unique key, an Agent MUST NOT expect or require those parameters to contain a value that is unique within the table. Such parameters MAY subsequently be defined as a vendor-specific data model composite unique key, but that composite unique key definition MUST include at least one vendor-specific parameter.

+

A.2.11 Profiles

+

Profiles are defined using the profile element, which can occur within component and model elements. When defining a new profile, the following attributes and elements are always relevant (normative requirements are specified in the schema).

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 22: XML Profile Definition
NameDescription
nameThe profile name, including its version number (Section 2.3.3).
baseThe name of the previous version of the profile (for use when the profile version is greater than 1).
extendsA list of the names of the profiles that this profile extends.
minVersionA list of the model names that define the minimum versions for which this profile can be defined. Note that it is only necessary to specify this if the profile is defined within a component element.
descriptionThe profile’s description (A.2.2).
parameterThe profile’s parameter requirements, which can include descriptions, references to the parameters in question, and the parameter access requirement.
objectThe profile’s object requirements, which can include descriptions, references to the objects in question, the object access requirements, and requirements for the object’s parameters, commands and events, including requirements for command and event arguments.
+
+

Note:

+
    +
  • If a command or event specifies no argument requirements, this is the same as if all of its mandatory arguments were listed.

  • +
  • If a command or event specifies argument requirements, it has to list (at least) all its mandatory arguments.

  • +
+

A.2.12 Modifications

+

New data types, components, models and profiles can be created based on existing items. This does not modify the existing item.

+

Parameters, commands, events, objects and profiles can be modified “in place”, i.e. without creating a new item. This still uses the parameter, command, event, object and profile elements, and is indicated by using the base, rather than the name, attribute. The base attribute specifies the name of the existing item that is to be modified.

+

The syntax for modifying an item is the same as for creating an item, but there are rules. These rules are not specified in the DM Schema.

+

A.2.12.1 Parameter Modifications

+

The following rules govern parameter modifications.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 23: XML Parameter Modification
NameDescription
accessCan be “promoted” from readOnly to readWrite or writeOnceReadOnly.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
activeNotifyCan be changed from forceEnabled to forceDefault. No other changes are permitted.
forcedInformCannot be changed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
syntax/hiddenCannot be changed.
syntax/listCan add or modify the list element in the following ways:
+- Can convert a non-list string parameter to a list provided that an empty string was already a valid value with the appropriate meaning.
+- Can adjust limits on numbers of items, and on the list size, provided that the new rules do not permit any values that were not valid for the previous version of the parameter.
syntax/int etc.
+syntax/dataType
Can make any change that follows the base type restriction rules of A.2.3.8, e.g. can add enumerations.
syntax/defaultA default can be added if the parameter did not already have one.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

+

A.2.12.2 Command Modifications (USP Only)

+

The following rules govern command modifications.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 24: XML Command Modification
NameDescription
asyncCan be changed.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
inputCan modify input arguments according to the rules for modifying data model parameters and objects. Can add new input arguments, either directly or by referencing (including) new components.
outputCan modify output arguments according to the rules for modifying data model parameters and objects. Can add new output arguments, either directly or by referencing (including) new components.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

+

A.2.12.3 Event Modifications (USP Only)

+

The following rules govern command modifications.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 25: XML Event Modification
NameDescription
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
componentCan add new arguments by referencing (including) new components.
parameterCan modify parameter arguments according to the rules for modifying data model parameters. Can add new parameter arguments.
objectCan modify object arguments according to the rules for modifying data model objects. Can add new object arguments.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

+

A.2.12.4 Object Modifications

+

The following rules govern object modifications.

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 26: XML Object Modification
NameDescription
accessCan be “promoted” from readOnly to readWrite.
minEntriesCannot be changed.
maxEntriesCannot be changed.
numEntriesParameterCannot be changed, unless was previously missing, in which case can be added.
enableParameterFor CWMP only, cannot be changed, unless was previously missing, in which case can be added.
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
uniqueKeyCannot be changed, but new unique keys can be added.
componentCan reference (include) new components.
parameterCan add new parameters.
commandFor USP only, can add new commands.
eventFor USP only, can add new events.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of an object. Processing tools SHOULD be able to detect and warn when an object is modified in a way that contravenes the above rules.

+

A.2.12.5 Profile Modifications

+

The following rules govern profile modifications. They apply to the profile element, and to its nested parameter, command, event and object elements.

+
+ + ++++ + + + + + + + + + + + + + + + + +
Table 27: XML Profile Modification
NameDescription
statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
+
+

Most of the above requirements are non-normative, because it has to be possible to correct errors in a profile. Indeed, since profiles are immutable, the only valid reason for changing a profile is to correct errors. Processing tools SHOULD be able to detect and warn when a profile is modified in a way that contravenes the above rules.

+

A.2.12.6 Description Modifications

+

The following rules govern description modifications. They apply to all description elements.

+
+ + ++++ + + + + + + + + + + + + +
Table 28: XML Description Modification
NameDescription
actionDetermines how the description will be modified; allowed values are:
+- create: create a new description (this is the default but is of course not permitted when modifying a description).
+- replace: replace the existing description with the new text.
+- append: append the new text to the existing description.
+- prefix: prefix the existing description with the new text.
+
+

In the case of prefix and append, processing tools SHOULD insert a line break between the existing description and the new text.

+

A.3 DM Schema

+

The normative version of the DM Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-6.xsd. Please be aware that a new version of the DM Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

+

Annex B: CWMP Device Type XML Schema

+

B.1 Introduction

+

The CWMP Device Type XML Schema [4], or DT Schema, is used for describing a device’s supported data model.

+

DT Schema instance documents can contain the following:

+
    +
  • Imports (from DM Schema instance documents) of Root or Service Object definitions

  • +
  • Declarations of which features of imported Root or Service Objects are supported

  • +
+

DT Schema instance documents cannot contain definitions of Root or Service Objects. All such definitions have to reside in DM Schema instance documents.

+

B.2 Normative Information

+

It is possible to create instance documents that conform to the DT Schema but nevertheless are not valid device type specifications. This is because it is not possible to specify all the normative device type specification requirements using the XML Schema language. Therefore, the schema contains additional requirements written using the usual normative language. Instance documents that conform to the DT Schema and meet these additional requirements are referred to as DT Instances.

+

The question of the location of the definitive normative information therefore arises. The answer is as follows:

+
    +
  • All the normative information in the main part of the document remains normative.

  • +
  • The DT Schema, and the additional requirements therein, are normative. Some of these additional requirements are duplicated (for emphasis) in this Annex.

  • +
  • The DT Schema references additional material in this Annex. Such material is normative.

  • +
  • If the DT Schema conflicts with a normative requirement in the main part of the document, this is an error in the DT Schema, and the requirement in the main part of the document takes precedence.

  • +
+

B.2.1 Importing DM Instances

+

DM Instances are imported using the top-level import element, which differs from the DM Schema import element in that only data types and models can be imported (components cannot be imported because they are not used in DT Instances).

+

Note – the rules for importing DM Instances into DT Instances are consistent with those given in A.2.1 for importing DM Instances into other DM Instances. The only difference is an additional rule governing the use, when available, of the DT Instance URL.

+

The DT Schema specifies that the DM Instance is located via the file attribute.

+

The rules governing the file attribute’s value and its use for locating the DM Instance are as follows:

+
    +
  • It MUST be a URL adhering to RFC 3986 [9].

  • +
  • If the URL includes a scheme, it MUST be http, https or ftp.

  • +
  • If the URL includes an authority, it MUST NOT include credentials.

  • +
  • For standard BBF DM Instances, the rules that apply to the filename part (final path segment) of the A.2.1.1 BBFURL MUST be applied to the filename part of this URL. This means that the corrigendum number can be omitted in order to refer to the latest corrigendum.

  • +
  • If the URL is a relative reference, processing tools MUST apply their own logic, e.g. apply a search path. If a DT Instance URL is available, the relative reference MUST be interpreted relative to the DT Instance URL.

  • +
+

B.2.2 Features

+

The feature element provides a simple way for a DT Instance to indicate whether a given feature is supported. The current set of standard features is as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureDescription
DNSClientDevice contains a DNS client.
DNSServerDevice contains a DNS server.
FirewallDevice contains a firewall.
IPv6Device supports IPv6.
NATDevice supports NAT.
RouterDevice is a router.
+

Vendor-specific features MAY be supported, and if so the feature name MUST begin with X_<VENDOR>_, where <VENDOR> MUST be as defined in Section 3.3.

+

This example feature declaration illustrates the use of annotation:

+
    <feature name="DNSServer">
+      <annotation>Supports a DNS Server and XYZ.</annotation>
+    </feature>
+

B.2.2.1 DT Features Schema

+

In order to make it easy to add new features, standard feature names are defined in a separate DT Features Schema that is imported by the DT Schema. The DT Features Schema is unversioned, so the DT Schema need not be changed when new standard feature names are added. In order to preserve backwards compatibility, standard feature names, once added, MUST NOT ever be deleted.

+

The normative version of the DT Features Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-devicetype-features.xsd. Please be aware that a new version of the DT Features Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

+

B.3 DT Schema

+

The normative version of the DT Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-devicetype-1-3.xsd. Please be aware that a new version of the DT Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

+

Annex C: Requirements for BBF Standard Data Models

+

C.1 Introduction

+

This Annex defines requirements that apply to all standard BBF DM Instances. These requirements extend the normative requirements of the DM Schema (Annex A).

+

C.2 Character Encoding and Character Set

+

The file MUST use UTF-8 encoding, indicated by the following Initial line:

+
  <?xml version="1.0" encoding="UTF-8"?>
+

The file MUST use only a subset of the printable characters in the Basic Latin Unicode block, namely characters whose decimal ASCII representation is 10 (#xA), 13 (#xD) or is in the (inclusive) range 32-126.

+

Note – writing LF (LINE FEED) for #xA and CR (CARRIAGE RETURN) for #xD, the XML specification [Section 2.11/8] states that XML processors have to behave as if all CR LF sequences, or any CR characters not followed by LF, are translated to LF.

+

Note – TAB (#x9) is not permitted. This is because no standard indentation level is defined for TAB characters, so the indentation is ambiguous when there is a mixture of SPACE (#x20) and TAB characters.

+

Note – it is not permissible to include a non-printable ASCII character by using a character reference such as “&#xe8;”. Such a character reference will always be replaced with the referenced character before being passed to the application, so use of the reference is no different from direct use of the referenced character (in this case the letter “è”, an “e” with a grave accent).

+

C.3 XML Usage

+

C.3.1 Data Model Item Names

+

All data model item names, i.e. data type, component, data model, object, parameter and profile names, MUST start with an upper-case letter (or an underscore for an internal data type, component, model or profile) and MUST NOT contain hyphens or non-initial underscores.

+

C.3.2 DM and DMR Schema Versions

+

The file SHOULD use the most recent approved versions of the DM and DMR Schemas.

+

Note – the DMR Schema is a non-normative XML Schema that can be used to give hints to processing tools that generate reports from DM Instances.

+

C.3.3 SchemaLocation Attribute

+

The top-level xsi:schemaLocation attribute defines the location of all of the referenced BBF-published XML Schemas. All URLs MUST be absolute ones that reference the published XML Schema on the BBF web site.

+

Example:

+
    xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-5
+                          http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-5.xsd
+                        urn:broadband-forum-org:cwmp:datamodel-report-0-1
+                          http://www.broadband-forum.org/cwmp/cwmp-datamodel-report.xsd"
+

C.3.4 Spec Attribute

+

The top-level spec attribute (A.2.1.1) indicates the specification with which the file is associated. It MUST be of the form “urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the specification number (including leading zeros), i is the issue number, a is the amendment number, and c is the corrigendum number. The issue, amendment and corrigendum numbers do not include leading zeros. For example, “urn:broadband-forum-org:tr-106-1-0-0” refers to TR-106 (Issue 1 Amendment 0), and “urn:broadband-forum-org:tr-106-1-2-1” refers to TR-106 (Issue 1) Amendment 2 Corrigendum 1.

+

Example:

+
    spec="urn:broadband-forum-org:tr-181-2-5-0"
+

C.3.5 File Attribute

+

The top-level file attribute (A.2.1.1) indicates the file name. It MUST be of the form “tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where nnn, i, a and c are the same as in the spec attribute. The label, which MUST NOT begin with a digit, is only needed if more than one DM Instance is associated with a given specification.

+

Example:

+
    file="tr-181-2-5-0.xml"
+

C.3.6 Import Element

+

The import element’s spec and file attributes MUST NOT specify the corrigendum number. This means that an import element always references the latest corrigendum (A.2.1.1).

+

C.3.7 Bibliography Reference Element

+
+

Bibliographic references in the tr-069-biblio.xml file MUST be grouped by organization and MUST be sorted “naturally” (more-or-less alphabetically, but avoiding surprises, e.g., “TR-181a9” would be listed before “TR-181a10”). The main rule is “follow existing practice”.

+
+

The bibliography reference id attribute is intended to uniquely identify this reference across all instance documents. Therefore, this attribute MUST obey the following rules:

+

For a BBF Technical Report, it MUST be of the form “TR-nnnixaycz”, where TR is the literal “TR”, nnn is the Technical Report number (including leading zeros), i, a and c are literal letters, and x, y, and z are the issue, amendment and corrigendum numbers (respectively). Omitted issue, amendment or corrigendum numbers refer to the most recent issue, amendment or corrigendum, so “TR-nnn” is the most recent corrigendum of the most recent amendment of the most recent issue, “TR-nnni2” is the most recent corrigendum of the most recent amendment of issue 2, etc.. Literal i1, a0 and/or c0 can be used, if needed, to refer specifically to the initial version.

+
+

When using the {{bibref}} template to refer to bibliographic references, the plain “TR-nnn” form SHOULD be used by default; more specific forms can be used where the reference is to a specific version.

+
+

For an IETF RFC, it MUST be of the form “RFCnnn”, where RFC is the literal “RFC” and nnn is the RFC number (no leading zeros).

+

For an IEEE specification, it SHOULD be of the form “nnn.ml-dddd”, where nnn.m is the IEEE group, l is the spec letter(s), and dddd is the publication year. For example, “802.1D-2004”.

+

For an ETSI specification (which includes DVB specifications), it SHOULD be of the form “TTnnnnnnva.b.c” where TT is the specification type, usually “TS” (Technical Specification), nnnnnn is the specification number, and a.b.c is the version number.

+

For specifications issued by other standards organizations, or by vendors, it SHOULD be of a standard form if one is defined.

+

Formally, bibliographic reference IDs in instance documents that are published by the BBF and the other organizations mentioned above are defined as follows:

+
    ReferenceID = BBFID
+                | RFCID
+                | IEEEID
+                | ETSIID
+                | OtherID
+
+    BBFID = "TR-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
+
+    BBFNumber = DIGIT{3,} // including leading zeros, e.g. 069
+
+    BBFIssue = "i" <number greater than one>
+             | "" // empty means the most recent Issue
+
+    BBFAmendment = "a" <number greater than zero>
+                 | "" // empty means the most recent Amendment
+
+    BBFCorrigendum = "c" <number greater than zero>
+                   | "" // empty means the most recent Corrigendum
+
+    RFCID = "RFC" RFCNumber
+
+    RFCNumber = NONZERODIGIT [DIGIT]*
+                              // no leading zeros, e.g. 123
+
+    IEEEID = IEEEGroup IEEESpec IEEEDate
+           | <for other IEEE specifications, of a standard form if one is defined>
+
+    IEEEGroup = <group number> "." <group sub-number>
+                                // e.g. 802.1
+
+    IEEESpec = <spec letter(s)> // e.g. D
+
+    IEEEDate = "-" <publication year>
+                                // e.g. -2004
+             | ""               // can be empty
+
+    ETSIID = ETSISpecType ETSINumber ETSIVersion
+           | <for other ETSI specifications, of a standard form if one is defined>
+
+    ETSISpecType = "TR" // Technical Report
+                 | "TS" // Technical Specification
+                 | "ES" // ETSI Specification
+                 | "EN" // European Standard
+
+    ETSINumber = [DIGIT]{6} // e.g. 102034
+
+    ETSIVersion = "v" <version number as specified by ETSI>
+                | ""            // can be empty
+
+    OtherURI = <of a standard form if one is defined>
+

C.3.8 General Formatting

+

The file MUST use 2 SPACE characters for indentation.

+

The file MUST be consistently indented, including within XML comments.

+

XML comment lines SHOULD NOT be longer than 79 characters. This avoids line wrap in most text editors.

+

All description elements MUST be formatted as follows:

+
    +
  • Single-line descriptions MAY be indented and formatted on separate lines (as for multi-line descriptions) or inline, as in:

    +

    <description>One line description.</description>

  • +
  • Multi-line descriptions MUST be indented relative to the description element and formatted on separate lines, as in:

  • +
+
    <description>
+      First line of multi-line description.
+      Second line of multi-line description.
+    </description>
+

C.4 Initial XML Comment Formatting

+

The Initial Line (the <?xml> line) MUST be immediately followed by an Initial XML comment that consists of the following (separated by blank lines):

+
    +
  • One-line summary.

  • +
  • Notice section.

  • +
  • Summary section.

  • +
  • Issue History section.

  • +
+

The three sections MUST be introduced by a line that consists of two SPACE characters followed by the section name and a colon.

+
    <?xml version="1.0" encoding="UTF-8"?>
+    <!--
+      ...One-line summary...
+
+    Notice:
+      ...standard notice...
+
+    Summary:
+      ...multi-line summary...
+
+    Issue History:
+      ...summary of changes in each approved version...
+
+    -->
+

C.4.1 One-line Summary

+

The One-line summary MUST contain a brief description of the reason for the creation of this version. It SHOULD NOT be terminated with a period (it is not a sentence).

+

Example:

+
    <?xml version="1.0" encoding="UTF-8"?>
+    <!-- Added support for IPsec -->
+

C.4.2 Summary Section

+

The Summary section MAY extend the information in the One-line summary.

+

Appendix I: HTML Data Model Reports

+

I.1 Introduction

+

TR-106 Amendment 2 published the first version of the DM Schema. Since then the normative definitions of all CWMP data models have been published as DM Instances (XML documents that conform to the DM Schema). Since these XML data models might not be easily read by a human, corresponding non-normative HTML data model reports have also been published.

+

This appendix briefly discusses these HTML reports.

+

I.2 Report Types

+

There are two types of HTML reports published for a given version of a data model:

+
    +
  • a full report, covering the given version and all preceding versions of the data model

  • +
  • a partial report, covering only the given version of the data model (i.e. excluding content specific to earlier versions of the data model); i.e. last only changes

  • +
+

For example, TR-181 Issue 2 Amendment 11 defined the Device:2.11 data model revision, declared in tr-181-2-11-0.xml. The full report is in tr-181-2-11-0.html, and includes the aggregate data model definitions from Device:2.11 and earlier (back to Device:2.0 inclusive). The partial report is in tr-181-2-11-0-diffs.html, and only includes the data model definitions added or changed by TR-181 Issue 2 Amendment 11.

+

I.3 Report Layout

+

Each HTML data model report contains the following sections:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoticeThe legal notice, lifted from the top of the associated XML data model file.
SummaryDescribes the reason for this data model version. This is lifted from the associated XML data model file’s document description.
Table of ContentsHyperlinks to the various sections within the report, as well as links to each Object and Profile definition within the report.
Data TypesNamed data type definitions (i.e. not built-in types) that are used to define Parameters within the report. Each data type definition consists of name, type, and description.
ReferencesHyperlinks to external bibliography references cited by Object, Parameter, and Profile descriptions within the report.
Data model definitionObject and Parameter definitions. Which Object and Parameter definitions are included depends on whether it is a full or partial (last only) report.
Inform and Notification RequirementsLists those Parameters within the report that are: forced inform parameters, forced active notification parameters, and parameters for which active notification can be denied.
Profile DefinitionsProfile definitions, showing Object and Parameter requirements. Which Profiles are included depends on whether it is a full or partial (last only) report.
+

I.4 Data Model Definition

+

Parameters make use of a limited subset of the default SOAP data types [13]. The notation used to represent these types within the report is listed in the following table.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDescription
objectA container for parameters and/or other objects. The full Path Name of a parameter is given by the parameter name appended to the full Path Name of the object it is contained within.
stringFor strings, a minimum and maximum allowed length can be indicated using the form string(Min:Max), where Min and Max are the minimum and maximum string length in characters. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in string(Max). Multiple comma-separated ranges can be specified, in which case the string length will be in one of the ranges.
intInteger in the range -2147483648 to +2147483647, inclusive. For some int types, a value range is given using the form int(Min:Max) or int(Min:Max step Step) where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
longLong integer in the range -9223372036854775808 to 9223372036854775807, inclusive. For some long types, a value range is given using the form long(Min:Max) or long(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
unsignedIntUnsigned integer in the range 0 to 4294967295, inclusive. For some unsignedInt types, a value range is given using the form unsignedInt(Min:Max) or unsigned(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
unsignedLongUnsigned long integer in the range 0 to 18446744073709551615, inclusive. For some unsignedLong types, a value range is given using the form unsignedLong(Min:Max) or unsignedLong(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
booleanBoolean, where the allowed values are “0” or “1” (or equivalently, “true” or “false”).
dateTimeThe subset of the ISO 8601 date-time format defined by the SOAP dateTime type [13].
base64Base64 encoded binary (no line-length limitation). A minimum and maximum allowed length can be indicated using the form base64(Min:Max), where Min and Max are the minimum and maximum length in characters before Base64 encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in base64(Max). Multiple comma-separate ranges can be specified, in which case the length MUST be in one of the ranges.
hexBinaryHex encoded binary. A minimum and maximum allowed length can be indicated using the form hexBinary(Min:Max), where Min and Max are the minimum and maximum length in characters before Hex Binary encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in hexBinary(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges.
+

Note: A Parameter that is defined to be one of the named data types, is reported as such at the beginning of the Parameter’s description via a reference back to the associated data type definition (e.g. [MacAddress]). However, such parameters still indicate their SOAP data type (as discussed in the table above).

+
+

End of Broadband Forum Technical Report TR-106

+
+ + diff --git a/docs/index.htmf b/docs/index.htmf new file mode 100644 index 0000000..1b8df85 --- /dev/null +++ b/docs/index.htmf @@ -0,0 +1,349 @@ +

Table of Contents

+ + + + + +

List of Tables

+ +
    +
  1. XML Description Markup
  2. +
  3. XML Description Templates
  4. +
  5. XML Named Data Types
  6. +
  7. XML Data Type Facets
  8. +
  9. Path Name Scope Definition
  10. +
  11. PathRef Facet Definition
  12. +
  13. InstanceRef Facet Definition
  14. +
  15. EnumerationRef Facet Definition
  16. +
  17. XML Facet Inheritance Rules
  18. +
  19. XML Glossary Items
  20. +
  21. XML Abbreviation Items
  22. +
  23. XML Bibliographic References
  24. +
  25. XML Template Elements
  26. +
  27. XML Component Definition
  28. +
  29. XML Root and Service Objects
  30. +
  31. XML Parameter Definition
  32. +
  33. XML Parameter Syntax
  34. +
  35. XML Command Definition
  36. +
  37. XML Command Input / Output Arguments Definition
  38. +
  39. XML Object Definition
  40. +
  41. XML Table Definition
  42. +
  43. XML Profile Definition
  44. +
  45. XML Parameter Modification
  46. +
  47. XML Command Modification
  48. +
  49. XML Event Modification
  50. +
  51. XML Object Modification
  52. +
  53. XML Profile Modification
  54. +
  55. XML Description Modification
  56. +
+ +

List of Figures

+ +
    +
  1. CWMP Positioning in the End-to-End Architecture
  2. +
  3. USP Architecture Overview
  4. +
  5. Specification Structure
  6. +
+ +

Notice

+ +

The Broadband Forum is a non-profit corporation organized to create guidelines +for broadband network system development and deployment. This Technical Report +has been approved by members of the Forum. This Technical Report is subject to +change. This Technical Report is owned and copyrighted by the Broadband Forum, +and all rights are reserved. Portions of this Technical Report may be owned +and/or copyrighted by Broadband Forum members.

+ +

Intellectual Property

+ +

Recipients of this Technical Report are requested to submit, with their +comments, notification of any relevant patent claims or other intellectual +property rights of which they may be aware that might be infringed by any +implementation of this Technical Report, or use of any software code +normatively referenced in this Technical Report, and to provide supporting +documentation.

+ +

Terms of Use

+ +

1. License

+ +

Broadband Forum hereby grants you the right, without charge, on a perpetual, +non-exclusive and worldwide basis, to utilize the Technical Report for the +purpose of developing, making, having made, using, marketing, importing, +offering to sell or license, and selling or licensing, and to otherwise +distribute, products complying with the Technical Report, in all cases subject +to the conditions set forth in this notice and any relevant patent and other +intellectual property rights of third parties (which may include members of +Broadband Forum). This license grant does not include the right to sublicense, +modify or create derivative works based upon the Technical Report except to the +extent this Technical Report includes text implementable in computer code, in +which case your right under this License to create and modify derivative works +is limited to modifying and creating derivative works of such code. For the +avoidance of doubt, except as qualified by the preceding sentence, products +implementing this Technical Report are not deemed to be derivative works of the +Technical Report.

+ +

2. NO WARRANTIES

+ +

THIS TECHNICAL REPORT IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN +PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT AND ANY IMPLIED WARRANTIES ARE +EXPRESSLY DISCLAIMED. ANY USE OF THIS TECHNICAL REPORT SHALL BE MADE ENTIRELY +AT THE USER’S OR IMPLEMENTER’S OWN RISK, AND NEITHER THE BROADBAND FORUM, NOR +ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY +USER, IMPLEMENTER, OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, +DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS TECHNICAL REPORT, +INCLUDING BUT NOT LIMITED TO, ANY CONSEQUENTIAL, SPECIAL, PUNITIVE, INCIDENTAL, +AND INDIRECT DAMAGES.

+ +

3. THIRD PARTY RIGHTS

+ +

Without limiting the generality of Section 2 above, BROADBAND FORUM ASSUMES NO +RESPONSIBILITY TO COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY +ASSERTIONS OF PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN +THE FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE TECHNICAL REPORT IN ITS +CURRENT, OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE +TECHNICAL REPORT, BROADBAND FORUM TAKES NO POSITION AS TO THE VALIDITY OR +INVALIDITY OF SUCH ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE +MADE ARE SO LISTED.

+ +

All copies of this Technical Report (or any portion hereof) must include the +notices, legends, and other provisions set forth on this page.

+ +

Issue History

+ +
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Issue NumberApproval DatePublication DateIssue EditorChanges
Issue 1September 2005Jeff Bernstein, 2Wire
Christele Bouchat, Alcatel
Tim Spets, Westell
Original
Issue 1 Amendment 1November 2006Jeff Bernstein, 2Wire
John Blackford, 2Wire
Mike Digdon, SupportSoft
Heather Kirksey, Motive
William Lupton, 2Wire
Anton Okmianski, Cisco
Clarification of original document
Issue 1 Amendment 2November 2008William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of data model definition XML Schema and normative XML common object and component definitions
Issue 1 Amendment 3September 2009William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of device type XML Schema
Issue 1 Amendment 4February 2010William Lupton, 2Wire
Paul Sigurdson, Broadband Forum
Moved data model definitions to TR-181 Issue 1
Issue 1 Amendment 5November 2010Paul Sigurdson, Broadband ForumReplaced definitions of named data types such as IPAddress with +references to normative XML.
Minor changes to DM Schema (v1.3) and DT Schema (v1.1).
Issue 1 Amendment 6July 2011Sarah Banks, Cisco
Andrea Colmegna, FASTWEB
Tim Spets, Motorola Mobility
Removed definition of proxying, now defined in TR-069.
Removed Common objects.
Alias Parameter Requirements added.
Issue 1 Amendment 7September 20137 October 2013William Lupton, CiscoAdded descriptions of new features in DM Schema (v1.4 & v1.5) and DT +Schema (v1.2 & v1.3).
Added Annex defining additional requirements for BBF standard data +models.
Issue 1 Amendment 816 March 201810 May 2018Jean-Didier Ott, Orange
William Lupton, Broadband Forum
Added support of USP (mountable objects).
Removed references to obsolete data models.
Moved device requirements to TR-069.
Issue 1 Amendment 9Schema updates; document not updated.
Issue 1 Amendment 105 November 20205 November 2020William Lupton, Broadband ForumConverted document to markdown.
Various editorial improvements.
+ +

Comments or questions about this Broadband Forum Technical Report should be +directed to info@broadband-forum.org.

+ +
+
+ +

Editors

+ +
+

William Lupton, Broadband Forum

+ +
+
+ +

Broadband User Services Work Area Director(s)

+ +
+

Jason Walls, QA Cafe
John Blackford, CommScope

+ +
+
+ +
+
+ +
+
+ +
+
+ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..1eabe30 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,560 @@ + + + + + + + + + + BBF – TR-106 – Data Model Template for CWMP Endpoints and USP Agents + + + + + + + + + + + +
+ + + + +
+

TR-106 – Data Model Template for CWMP Endpoints and USP Agents

+

Issue: 1 Amendment 10

+

Issue Date: November 2020

+
+

Table of Contents

+ + + + + +

List of Tables

+ +
    +
  1. XML Description Markup
  2. +
  3. XML Description Templates
  4. +
  5. XML Named Data Types
  6. +
  7. XML Data Type Facets
  8. +
  9. Path Name Scope Definition
  10. +
  11. PathRef Facet Definition
  12. +
  13. InstanceRef Facet Definition
  14. +
  15. EnumerationRef Facet Definition
  16. +
  17. XML Facet Inheritance Rules
  18. +
  19. XML Glossary Items
  20. +
  21. XML Abbreviation Items
  22. +
  23. XML Bibliographic References
  24. +
  25. XML Template Elements
  26. +
  27. XML Component Definition
  28. +
  29. XML Root and Service Objects
  30. +
  31. XML Parameter Definition
  32. +
  33. XML Parameter Syntax
  34. +
  35. XML Command Definition
  36. +
  37. XML Command Input / Output Arguments Definition
  38. +
  39. XML Object Definition
  40. +
  41. XML Table Definition
  42. +
  43. XML Profile Definition
  44. +
  45. XML Parameter Modification
  46. +
  47. XML Command Modification
  48. +
  49. XML Event Modification
  50. +
  51. XML Object Modification
  52. +
  53. XML Profile Modification
  54. +
  55. XML Description Modification
  56. +
+ +

List of Figures

+ +
    +
  1. CWMP Positioning in the End-to-End Architecture
  2. +
  3. USP Architecture Overview
  4. +
  5. Specification Structure
  6. +
+ +

Notice

+ +

The Broadband Forum is a non-profit corporation organized to create guidelines + for broadband network system development and deployment. This Technical Report + has been approved by members of the Forum. This Technical Report is subject to + change. This Technical Report is owned and copyrighted by the Broadband Forum, + and all rights are reserved. Portions of this Technical Report may be owned + and/or copyrighted by Broadband Forum members.

+ +

Intellectual Property

+ +

Recipients of this Technical Report are requested to submit, with their + comments, notification of any relevant patent claims or other intellectual + property rights of which they may be aware that might be infringed by any + implementation of this Technical Report, or use of any software code + normatively referenced in this Technical Report, and to provide supporting + documentation.

+ +

Terms of Use

+ +

1. License

+ +

Broadband Forum hereby grants you the right, without charge, on a perpetual, + non-exclusive and worldwide basis, to utilize the Technical Report for the + purpose of developing, making, having made, using, marketing, importing, + offering to sell or license, and selling or licensing, and to otherwise + distribute, products complying with the Technical Report, in all cases subject + to the conditions set forth in this notice and any relevant patent and other + intellectual property rights of third parties (which may include members of + Broadband Forum). This license grant does not include the right to sublicense, + modify or create derivative works based upon the Technical Report except to the + extent this Technical Report includes text implementable in computer code, in + which case your right under this License to create and modify derivative works + is limited to modifying and creating derivative works of such code. For the + avoidance of doubt, except as qualified by the preceding sentence, products + implementing this Technical Report are not deemed to be derivative works of the + Technical Report.

+ +

2. NO WARRANTIES

+ +

THIS TECHNICAL REPORT IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN + PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT AND ANY IMPLIED WARRANTIES ARE + EXPRESSLY DISCLAIMED. ANY USE OF THIS TECHNICAL REPORT SHALL BE MADE ENTIRELY + AT THE USER’S OR IMPLEMENTER’S OWN RISK, AND NEITHER THE BROADBAND FORUM, NOR + ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY + USER, IMPLEMENTER, OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, + DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS TECHNICAL REPORT, + INCLUDING BUT NOT LIMITED TO, ANY CONSEQUENTIAL, SPECIAL, PUNITIVE, INCIDENTAL, + AND INDIRECT DAMAGES.

+ +

3. THIRD PARTY RIGHTS

+ +

Without limiting the generality of Section 2 above, BROADBAND FORUM ASSUMES NO + RESPONSIBILITY TO COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY + ASSERTIONS OF PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN + THE FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE TECHNICAL REPORT IN ITS + CURRENT, OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE + TECHNICAL REPORT, BROADBAND FORUM TAKES NO POSITION AS TO THE VALIDITY OR + INVALIDITY OF SUCH ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE + MADE ARE SO LISTED.

+ +

All copies of this Technical Report (or any portion hereof) must include the + notices, legends, and other provisions set forth on this page.

+ +

Issue History

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Issue NumberApproval DatePublication DateIssue EditorChanges
Issue 1September 2005Jeff Bernstein, 2Wire
Christele Bouchat, Alcatel
Tim Spets, Westell
Original
Issue 1 Amendment 1November 2006Jeff Bernstein, 2Wire
John Blackford, 2Wire
Mike Digdon, SupportSoft
Heather Kirksey, Motive
William Lupton, 2Wire
Anton Okmianski, Cisco
Clarification of original document
Issue 1 Amendment 2November 2008William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of data model definition XML Schema and normative XML common object and component definitions
Issue 1 Amendment 3September 2009William Lupton, 2Wire
Håkan Westin, Tilgin
Addition of device type XML Schema
Issue 1 Amendment 4February 2010William Lupton, 2Wire
Paul Sigurdson, Broadband Forum
Moved data model definitions to TR-181 Issue 1
Issue 1 Amendment 5November 2010Paul Sigurdson, Broadband ForumReplaced definitions of named data types such as IPAddress with + references to normative XML.
Minor changes to DM Schema (v1.3) and DT Schema (v1.1).
Issue 1 Amendment 6July 2011Sarah Banks, Cisco
Andrea Colmegna, FASTWEB
Tim Spets, Motorola Mobility
Removed definition of proxying, now defined in TR-069.
Removed Common objects.
Alias Parameter Requirements added.
Issue 1 Amendment 7September 20137 October 2013William Lupton, CiscoAdded descriptions of new features in DM Schema (v1.4 & v1.5) and DT + Schema (v1.2 & v1.3).
Added Annex defining additional requirements for BBF standard data + models.
Issue 1 Amendment 816 March 201810 May 2018Jean-Didier Ott, Orange
William Lupton, Broadband Forum
Added support of USP (mountable objects).
Removed references to obsolete data models.
Moved device requirements to TR-069.
Issue 1 Amendment 9Schema updates; document not updated.
Issue 1 Amendment 105 November 20205 November 2020William Lupton, Broadband ForumConverted document to markdown.
Various editorial improvements.
+ +

Comments or questions about this Broadband Forum Technical Report should be + directed to info@broadband-forum.org.

+ +
+
+ +

Editors

+ +
+

William Lupton, Broadband Forum

+ +
+
+ +

Broadband User Services Work Area Director(s)

+ +
+

Jason Walls, QA Cafe
John Blackford, CommScope

+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+ +
+ + diff --git a/docs/index.pdf b/docs/index.pdf new file mode 100644 index 0000000000000000000000000000000000000000..56d4164a482974e2bcf0df439251d4acaa54c585 GIT binary patch literal 956506 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
|WM8JLqFy+RTzi^24np3amqN>v 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

gN%gbj!q`3*BcW<;spZ3fnvfOQ}aR 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

NXCX5RDx`U4j|ILN)$ua=3bMZGXELHm zkXtRUh)5I>Ip|XIO!sNxNzX+BvVmy)$!@G;6vOPNGKrm>v0P1$aX+x7amxiRwfPtyv2V**==zHFlXw zy*J0IZ)(l{(&ho6Qem@Yj$8P#a7~$5dn;4x@|oVb3^05Nqd=sBJIuz&vM>Q?+X4K@ z2}Ity??oh%V}f5DkG&tWyde3%Dzd7<3oKp6uOr>d#qDh0R%u$sTu?d7=TRUV$XREw z?3iHmNav8x;j_OXcguH!qTtoY7muBA$olwl)PuQCxJ1JXo3ZT&ZE`xZPf7S{Zb5i*Ky4WLZ*{$*V{(^XKT{9LiA!{rR@PVu5>rIa{kW z?43NYCK@SJ2zfc(oxgH2{U*(T)~VO_h|H_{bFUvrP44pGa_`e+p&Cyg3XTa!r$sqT zN5=~Mt#yqPn(ScXh|v<+va4opx`pehFgv*dykDxi0z{sSAe5Hc!OVF7uR9qc&P*;+ zOWPSgn1w$xm3VIcn)&It$qQ>5PkyC#2Y(AIxeSCkf2-(BFfc{gYIz-7?bL~=4rRsm z^uMoX?0?d2sRnkL#z{3!y-BQ_(l@)1hi3oKn%-`WI@HEM}S*31>&;G2A-Og*BLEo1wcDW z)*i4akn&G`$FiHd-aKfnI@PPzxznD^Y0Ow%)n4po%YSlf^SAt}9x}HKf)TqT0;GX( zwwL6(NV=rD=R56?mC6Lp{q9qq&UqEjMKyvg#W{!QV#mL6D|f1iG&haM@AzV#tR`O9 z_~4Vs%3>WcJ{I$`ttay=DS5|f7G&PPcVL_F>{Z!;z~a&LhJD4NA=+_20xkU~?8YxN zPs8$pqt>W9)eVn|I}G0stxG!?7M^g6i`XuU2lGj@gBAI|8S@%@RAxyV=ded)r!7{XikP0s7CFGmARKKSJyQPhgl9CONp#~ znxH}}316HlG>zx87SwJ+RjsZ7(H~n%F3=Im^M z{N!W7LdWH~<*T=Yp-;-KV%s76&+_u`B{{p5pPa}hGQBtdY+Zgf>Y@`6DvLkTQ5hQ& zE%I$nG|jq53d)F$6-lZ7dKr9~2wk6045{8XMAyD^g$fr1CPq^-{{fMiXdLu%+c8E<_<11flHY zxzngKWOQgS#bo-D<->hlO@D9-fb^}haeF=R+8Qy@G~{^A5vC>+qJ>UWkzS2!B?|#z zT~}~l6KGeX*$z@SIyX6=?h6W%YRH z^ou}*aR-r|&XgOL&oRywO-MRi0p1$l#l3{Kk+r&1%mPjP8?m8*tCv)Zk{i1@Krm7# zv?xoeoFB%mW{>x_Y9h{5R$K8X4_!i?aa#D76JdgczhEX6gOyu{6}6UZ%HYTx22XnI+qNKo>U#Qs zyR{)AQi8@1UYbPchv4Wxpt*ZCI>a zf4$%4rgOFl%OlO_=1#XNBK_zQ%I!G}C{5U^5c(`!#nl#t=rEq{PQ)(bS3 z5Om8vlV3X!o%IY*CZ@>83*cTr z$V1duxE~%MZPUv<#XRn~1}}(js9n|$(nrS{sv1V;-Xdc@Cr&ac8==Il&e*O1Rqb0> zfF~KPdIU8HpB|QUtpi>C_+eoUHETse?mKU`>Ov1{Ogf8~W9`DGC_H$8DVLuSHgJel zZ83ynRIq~E{o4eI277x&8ro#*hzG!-Nf!MFBhHP>om){4Mi3Gvu+aL*+!Ro=xGm|a3jkXli+glNxGsWIcWyYw z%e(TZdh&sAvJZ(ggiQGIt3)OP_RXUDc-;Fd0LOBUYxw)iti6Xi^-`@1zLc?faFLAG z?`m>+Epspe?fK=mf;b2&OIcNSUj4lG6|v8UQxX17QJyVw*1+}xiDZJ+ax^Ka*>d!! z^DZoIyQ0zqv>e^aT?U$Rs=IsI1jD-|jNlnzYpR7IL&|y<(D8mEJ(7eA>VsceK-=!9 zi6Wps>c));i{$#hh=m)6=+s;ROk`?%F6FKOdoL)5WQ<4Ifhb))9y2a&wIpJi!ZP9{ zGQ{%oQ?okCvHhhhNA_YiKVxsz=a?@IqTV^0!leDh|GV0+5;1py-=DQ;UOwB(%S#nP zvHr!{E-%G}IIjwf$-rq{Gop%7m*33P?fIU)9#$FpH9UxJDzLcw+~cqA1>?O>vCY|u zF0rRNpqYwQ4LE~eD-9SDcwz}Qtxd&@sXm7wjZAED$c9W(p6HCfXybk7;t)kNkwf}P zFk?IZG%8FFwpADynwN$uXg0Nm*;0D!uY~Hp5v^u-6w>{cVOHvbEUY_741jekrRd7L z?v%%k|3x>7%&NGf76Lk|w9!`Mol^nzQDQbVmf|lj+yIV4kG9;t<=mIlM&DUl z_Kem{RJrTDHp19Pm(RJYrJu<8XIM|Yt*tJ`YvL-C1kerte=6&`FoPvV!37HmN-Y-Ll zYlOG33Crdqbj}14Y~YHn)M>t>l2H=VikyP~++BfaUdIW26+s@ZzA4>;g3sAY?yubU zwhFqq9y^;&WVD>QK3>us5sYiU$eLnWD9jGS)a|vHrY;P6S3Ik>1^6yDeSz8%m0ZUV z@xxB7HV(X*KtiSq^TLqldiO{2MZ5FLCvzi!&000yumuncK@jqE>%pXof#l!A+ib@s z=7i!@z zug`&zzhs94xX-vIX1p@g8e8rUqS#S-ya~T7@R)8~zbk`2 z5B|d#Ztl$m@bd9~hK1r}Ae@#c)~NbbV0;T3>g4S2t;EzigGI|f4|)0C|1nY+`5TLV z-PM@n-6cTH92xgq#`8D;(#^$ioa2h63aeI@IU04 zhrG*q=v(N__TqG;v7x8kBDs*A|R>f5vNOR_}K;u}-jU0>hf=Y%))NwqbqaVsN8ustdt z=d=T&Q@QcxA~9cpC;-%cYDs<`(}HYdf~wD5(8Lv=yGB5bRb@)o~fo>t4UJu z`=~{&$OODc@X~aY>P2*WlBy#{aGb!p3$LNertc2U+|whGt?g?{8Z9u@$P+yBvL&zD zbRQ=71=h&czZWGaVt+~ibi6^~wv$4ZblL;yJmY~!ah@dA_1v1S#g{QE!Kk^F3M6@v z%Mx3Ns(fq+D{XDR#SU77-&ugT+l8A4xN$?zYI1<^mv9GFAJ?LYtu{burVA#lP+z_b zJPBsEEOT}le&+otIh>ue~htvscC`Kv+{eTHYM#*`BYuoM2pRI?3^7ypn)0_9NUH$B}# zhL-JbqTo;ZV0T9mKI$1-Y#G7n5r)pxc>lVa+qH6|pEJ&KP_@OU@WEfaxd$qPw!i)1 zs3${)fdb>@Txp0w4pTd6N$$ zwW<|lFC2-jkq&JWKU85{&NjeAqlc6I?V+oD7|?aIMe}{ns^as*2R6TM-250F|9$IM z#ovnArJgGQDby2AwtyE$^T3u5nIR*~$VuY)!zu#bO|`rQBTEplyY|=j>YkkOv7`jt zC9YiUt@vK%{<^9*@w#o|O`8{=x?@@OAN&E(0Z40k`MIcsE5bp`^+XIVp@bV+1rXK{ zWz_Cm4||Jr&MW8g!^OqLE?cK*XOq$F^!g-v0GX;D3(2V-vUJr_q#amw1?ZyHGPko7 zUus8u$dbp`(7NAw&+}vO(YyIdR%{zlG;-g`D32rdlAo6;KTbD3$qwiYK>S%hZcMHC zMKVR5Ez-H3Dt9orwxV9B`gR~%Klqu$XhUxQ-Kd)q^9!C730W!GbSanXFB9287a9{J`1#StECBugvq*xoC$2g5|@ZxL;5 zZoBU)`Tg!;%IB#wJj;Lv+A$vL^re=TUKcIa9Z3=6?g1;R$y*Shzw7npK4+ydC^C>8 z&)~aCREel@5(a}diegpF^C3=4E_qL0V%GYdCqw=`#a+|d0tZ=!jY6+^%5-p#bdFH; zKf#p-!*{@Z;9Hr7g9VQwWlFS=%6on}IhjDvmzSNZTcV<#H=Pd!S1(jKaIK`r))0wq z<}D6z+!A+~^9W%`*YgIXZr-;DQl|o~SGWSqmL9r;*ChTl-;d~7Wab<7xB^^E_U(b$ z)aVA_65Rw2Xu-%8z^ojh5@EoerQmRQIf7j<8I)!zieoGSM_4FQO8tir z^&h6r7$u%E|IiW-96uwXA!*BL!0qOFrP5l#8>Q%df3yTq2}lbvK&2Ms&tvnpXLs^n z%(>J{z57*e@wS<#?42bGDrK|cx?FSeUj3%6imtHoQ*F?zz--oiFeCIeoDqLJPBX2u zaVeq(dm8#wOm<4_wQ{;!z?SsWn4~IkIul1C)Un{|`gdVBv2R4ago#4}y3F1+Mcoyx zan=4dOU=Cbgx~G%J;k1oX^o%F&lG=u3k(cs(!LxjBxp(w3O}7sJVW%gc8T!FJ`R@e zg3;q|psoP#JPq1;Zle!BsOUC=ehviM(w0Rn?6nfD1*X}VRfn-vYllR-L1BktC8Vu@ zBZIOFO9MUb#2HT1PUq-oD-6bQBoyT?UyP@MZ^{)JQT1QQ9k#@!$c8GQ=UBA3pv9E>CW^xAtv~;}KdgI*dSq%6UMaI91Ka_Q zLTDHVL1)Az^2eG7wg!Va9*W5KuW$UMB%3tXn;T!vNn57YqcMS`;pDZdt2lhRTph{W z`ESd)2h29aSltj3gxQ40)qJlj8&eH-nO@|XW|?l%6$=_D>XWAY1OMsRSrL=LWmXuu zT*2VN;nr)Hh!l%$yA!`2?RJ-oC#sSDJ<-^cpeBKpo9mQIvtk|d3oiV`*DzUI>`o%w zWxl~**+%A9PA8ENCK=I@icqn-hh|aI&A9os8m6DZ8{_l*8pT|E^4xDA%yuQu*{|iQwnF+HuX3<4M=5eKH4Xfn9t8foxAhF;6C}>!imWy`qjb79rIk8oV0nZa&x-Q=prVP0 z4p-4xonvpN&ArSw#NCQr@)S{s=N{Da)c!dc-gw?mafZe%(f6tX31fpsedpyOt(j&{90_xrb0=%>8q5AU`xa$vP!?rX7%7} zg{xbI$Fz+961&Ty@NagdoFXFA2e2~D&#RP^>`HZJ8TqpqbA6j@a(t>S!kZU+m*zin ztiaIE7_X%!i_p6P%8DF<28a*}3_|loi$AvCc35e6pV~#sjLxmZA^4 z2>jzU0;sOUhVLVR6iMG%oO=(RL<0bF5s82cVnWp~)-`KwgC2<);L?_Cz6bD6K=x=PQu-HJ+dMGRMY2S5wX-GMWL z0RpRtrTYj-+vZz^d%}5dss0yHNmY88NIU#9uX~iKfJ!aQEqEd8Iu7@CgBZMfORfMb zn%GY0VC@g0a!~{t85|io&r$y#FZoTUP&=qcyEa9;;XWT+)ayx`!o`G@d~*YeytZp& zDQZ94ZBys`@I5j!(Yy}m?Z-32~qT{!P8tugO=0OsIb0h#8L7z>w=m31{%lKuUAf~+P<^gvxM@Kf5?o87_Q zh9ly|@-u|GE5Pa<`dN8GEKdbd97rYJdMAKb1t>z4@b-} z`b6oBF|03MO6~S;Cv>LZ-*65ifwr|qof#9W5DvLRt6hG$QZrU-tu`~j9~{;tM51TG zykpi%)FEdJ>0VX|HMVMN1bGyA)-AF=$S*P~DVf~y9er2I7Sr!T%E&Qe;Len1WCz$mZieORHns2o9cVmXq6l@As6<9q%L zwHcmhfQ}%dzx=KBI@Hs1He#hP9aRsWXjTtcfin$3OK$in@3GWHA~OVDk9WrUtkYc6 z4Ku;={V~g~hvD_Eqt#OVBku8ahz%CsNhtr=yOI6qBMXo8-^mIfAA&H{_~Q-Y=dPLE zn9h9@k13Ov`hiq5;sK-^-?L6S3`-Wa<=N`heDh-O_5H6#(tqWf8iCksW<;a8c(Vx3 zCxq+wRIT}fQTMT43r?ETLBNjkjlw+O4|wW#{pu2)5r=UlDnbp}BG`%ma9UdtZ{q{Qii`&&{i=-9=wdr0n!rs)WjVOrCO?a+BKhW+V5CZ;G773h%F>N z`T@3m#5lH>R*jR?T_E%6&_;Eobz8LMr6i&S%HH`!Nujm4A()UbSJ#&#XP@yjDMeK3 zWobcjqj?$PIU*3q?gB*Vjm%0hg^i$rt1OF|HFu{$*i&O-tAsuD;axb<`6|*Z%$rDes zgF((SUlFTE11~XtoB*~832GoF_RT25Gt;jW=Fmyh7WVuY1Yv^CmY5*8)bq9q5HasB zPx$FqdQD1pz{2w;e)SO{jaDFmTN;#a^w8?@z&%^x?=f|PY6;(dWYZR=VQ=wVkX4M?Z zHNRcTzZ2{kRLVWx@v)a;LgZIC-Sut}Jxm~W02R;yx>h6Nih~mmcDbjc6?+jpazm%Y zLixb@)|Zb3v1^~ewJ&?~HuDV_$^D@*&UJ~H>S@;#`-ve$+-KpT**W*KNwW*55YK|` zfX0RPE_+A+K#{C_51F3~odAr%s4a{m_8t1oyzWW`B{stJZSUXnI*gm`Vi9=&V|>Jf zW9$Vp#sPauAEib!yZtdF0JbupI&IA9wubsS|5MXmwA_)(#5wv8-yoH9~==@#EGiM0EvB~>x*olTbWF@8aL&Ogz5IR$=VH&+R(kUnTSo@=!m8=7L?yu#H-{cSF@_>r95v}_qplKa7cPR|E{cEU6GjF z?zmoPSy5jiYN-PlfdIkq+C|v>RlzF%Z_cmj_nVN++TyZ41L>MvghQJ@TV)*J4=of} zt<|U^{v2*}MO?EGMq#R*vvhl3JhB(m?C5l)@>BY);_0`_%dBSFVxpLRyImAr15bqh}(Ze8x}OJptZQFvhsq5nR&mqt%JbXu*wzVo#7?GJ@{gp zsFv%^(_&#lco{VRoA?-vs`M*~KuHJcBh6QKH0xO>6ou%X{nsrwP_&reMAHRm#pt_R zS>(u!sO*T`Q5a=!Or`z#PEL1Ks$r~d5qHXBse1@M{f94&vUZ8beogS@qGPPS)to<$ zVb=&w5AM|J0n_sEj}v|4XfyV{ds3YTi@ZP7ndBLfB0k>~)D`2{`P!$+qG=0|yHPIWw1RM9Kjv=(r94zu; zYOOBQ&%LH@Ou7c6+9kYU(%^G69(L4tYzED^;h^BOcx7Gf^p_ zV|Od4tA_rhdrW<|yC$PR%(5=HbZ0Lg_ij_+6~dn_7FX6p5JrC&nJ&DHYPs_eZ3ZN- zgBLn zNuouE0`cpF-yyjl9V5SAkY6_vw%8axcz?RSCUJVfed+JfJ&~ypLmWfMQh-RazKj-xr`$AumS z$v(Opi*!NO%&(e(xO*X5*oc)TcUuh<_=BvjIEpQNcX2XD@c};*eF%frivA@$w$WEgen~m`=SiRdm<%q%Z>?- zXfA{jM7{H{)Vy6>;HRayuQ!**vZ5~W5VOCZViV7nd*Wpd8MMC5Lkv2-T$0*7n1)Vf zQ&(0g$=g}yja3|PmR!`jp99^$T>e&VNL%!MWvuRxO7422)Kw0bj|zE6dwEoCZmyOs zHRQ#9$nvPcT6x*~#V&|eMe7^be9jUJHLq=G^5tUGvAw4W_({PVWmyRa+xfh%~ERY!zofH zM|F52`2A(F@0N{ol(1K;1`uwntO8@h*e{FyN=G8h-0Mo$I;)$^b)44{HJsw<1Qp&G zuB!Hwc`wzf6|5p{iN4^!r(tEUf1=B}t9%9PJvqLAleZtq_YRcy1t+CzuuO_nfY;Do7XG%iCFSSK#5n<0_}4Nhrl6LUjidiz4th*BXGlgp|#Kb z*Xgj*EAJiSm)+d%<+rZ)+T7xWm2v$)%)NJ1Q~$dqjH03_AiWcnCSB=0Dgpum0@6!V zRGRb_AP@!VO+esl1R_mDN~DC)BV9p6Y6PSubOuH}o(SLLA-U0+%z;?niwOR`LO0c0SUGuhmG1451>twp>Mp@!m9ZkuJehv#sEtfLa3w=F2j|~AM>r$9%3W1{*BaLN)|&{WrFAX2 zzxD1E34G)4qQTY;C652&+1y%WKGXl*GqEYKplJhA1i@gsq@r%n)Ja3}g^i>zEeD>1i5cf-^CyC^V>BJ{rS5!aLb(9lo-#pqBr2Thw-$w~-& zSu1`?JD;Q1_IvNtZLLIghKE+Gx}xpP>|Gu@=rKsMS436KpTTRHcCzpF5k7uvO9y5zQ@L~SP3+>(uRQY$T)R%eR>dAD!8Pl*Xse96Xe^DFn(oJczhCA_c0 zwm^#P6AO>Tw;6Vy7qrVg5s~wpTS`+MUB06I=FE}aN2Mz|x2kIFzCZBT(bAGR`g7DO zaZbg`>A-Vq*2u>XOY*61`Q(Kp+4!Cx2*0SgCeVw&Vn?RONIqcb^V|bduKRXR!WgL` zVU|!ETsK0s(61s&qK0a7^V*}!=d}XsNqVOhS)s-B^BSaW3sNqPTg}+~vdhe>!*aH3 z1yE3ag;8nh&ua4)HKhWj`;^$q1)zWmrWo`W#L8{-&budhS2K1(&2JtV z%`U2$Hgb2-N9HcV#OL9Y%MnDzZkzD7lQD0WA0Z)l8OK=aQ_INDH~2QcU%dqHG!(K; z_n==-+U}Z_ZEPduyj9Mx5K}xaj&aK(UaWzAozys6t5Y$qD@DQCk<&L-N=+;5R~;V8 zG0{w3Z2mITaulC3ka)IHpMmiQ-*m#a6!P^1^oXU|{|pSxdU0fybp5l~{|uV`-+i5m zqhA1Em$OzR_@*2w;4j1NiB^qI8;6M0?Wx4L$IN%mk(g$@Cs~Low&Pv^5P1Wpm4xdz zkDK~J5KQ}U;V;9mbtk+7cznvn6g7ga>#YmJLs&hgx)IMmUNe%kWR?kgol?$EEk>1w z!-=``=5gTK?cRh|sbZQCC8Fw<@+XC*#xWOCQ<%u@`twT`FE2+0uT-*fWQRQov&_Rp zI#*)9?bc*}fnGP~PwH`4m=sfjV0=`B9os`)Lb=Dl+Iq40<4 z|SxRQs4%rPEzIat- z78gFbmuVSr{=};`-+f5GX?>~HBSUEEI|U1(5V2$E#tC zlxH4Dg^np{!mwcaMB_~0g5gW=+dDM5;%XgHFyXdhQf8epcs>cjz2}<@5{kOwNGDpPS6HbD`+|(1DTFrQh0Nr?EHjX6JjK^Bv(=e@e?w zscsjU6v5vu12WMaYW=~kH(h>Z1IQAx zV5t1dKpBLB$t;1Oqa(I<2rVJfICA*pR1f`&?amtBMh5R}cqV=C9e7U(ayOkK3n9v~ zfw<8~+UYs~w^Z4+9_*U=V#RxT-qn<9l?!UyD9PcAgw% zQ9fl~fYSn`x+&Ujq|Dt8x^%Ju`B`2Lezu=#RcqwC*UH@y_c-nwL;8Ci&$+ZH5KVyW z+r_^>cMgiN{{_2U=4kMowAJLjjHV%_F_X*bON*JmeWF_pl1{EJTT39i#jQ*vWoAO^ zOm(!kS`+N}ZkOrrcty&&&2IRPZR^U=f4FEQ0&ZD>T=oIzBF~m^(bIYKETk$qd$(PYUvKF!L}ab>sT^U zx6_<@z~zaTnzT+=nI*3+kA_mKp{d+J0{@rc34{ZtLt>z{r+D~d0E7OqxY?oYOef$0+WIqQoEHZ%eB8>BMCdjfl~GKwQB5nN^uHq zIcgCDWzaMWgpD{`%@9|u7j9Jh#UbX!udSuZ>^RiyRt)+6=3$C*DcO8 zjqP82ZNtiA67RI)ttdFL@g#v3yk-K3}y=brB(y*=CA za&U{<2(Q#YyMihG-(;gOQBj3LOF#X4NKTlMNZx@Lp2go=Ed4w5>|T-TeOC|X-=adU zrH_ZrrytI}JHa3LZKhJeN$uB1>wj-n(Tq?XZd_58w?zsSyAxBqnFSeK(RRP0RH1#H zQ}c<_qcRQEH@zyf-~W>1iFAq#{HQ z&Zd60;DtHMf7!KYQ_KM%K=2}5OuuYMfN)AQh59sPL8=R{H0E$?*iG(ce%RyMJNeXp ztt|Bk`6{_AVa_Fbys{XZxj!59D((K`L@_CCe50n+NhteY2C#VBVZ`A+?>HbSy+*8^ zu2~f*BifQdj^vPcs2R$TOXEcS!%Qu~z9tDT>o<=(MLJr>=vPjv>EaZW!?235Nw32o z@i1OOP2k1Ox5|S|_UL~9v2-U~o`v;3%?#U`)7<8A0!-hB7uSQ74|xzT8gwLk!2kf? zjZIMWFs*`i*^H$nh9gqb3oK&Mosp9a(_;~1e;F?SW$;!=0(0*vkHYi_EP4-X(w4P) z;_l%YO!)t#?|jf;LhKw%wf6BGWmPCdz{55+s*CJoHR~P{K2FK$uvLSf!jq9gV4w8V z90;o`1sl2WaU9UJMa|u?%K=}L$Q3MNp3iSwh<8{9dx54R2)r*_g9+)e0>FVOQ10!` zNNh#29@xF88j;ycZOAzzF)zsfGjQ7pvZ+Bb?}F5Wh-@Dzu08FF=BM0qZ7@nEmD(A- zSKSxf?hd@cYB97$;N++VP&Q+VGnvpcEA(r>hpd`jv|cwkx!&L3^&n9w_Pw-m{#UnX zeXGHnsSO(@)^6K6wrs@AO57 zNvaTntYxPKkZKLtMBhZ>bmZ%uO&Ob@Vz0Sp*udXWyiqf7cKT(g{6N=~YFQZz$ei^G zrg2nm8l>;1|ulD1TR$62%4c ztC)P-s{cpQUIO0sa$pC=xWsq5gycpXAV5w--*<w&Z0!7NzCDn|hw4Ir+K7%_!xQdKI_`CB3UT_3(A;smr9L$(FQP z+}(RuTg3fqfu5TMV@MA83z_u98*At3=P2+}_*2iD>sQu}@4f!>_Af(@W#Fzs1S*_7 zbv?%`DKqo!_8^c1EX38)G||NkeYLQMCnzg?S=`yzSk`tC_d~E}(&C&)vs;G7`RUfy zt=_I*Y4~RAlj6#DZHIvm;7%~p8shQJRA%C)unPW1n^;VOu|Rn@>SQClmW$_!*@OY%$BHItV)n_gj*6!iuA@| zjh%8<+a87~?&dN23~_|4JIJN3Y~!Jf(F14RrTbazoO@wQNX0~}%uT65;un_D{?jmX=|aH2J(M31>smO_%HOAkE7E7J2lTC`|34SvD#m;v+CT$WGdXk|l4<#Ht zC{RdpfG4(U;LSNGMfjDjLp4p}Slo5uj|7~hK`l4f{bsDbcj*l?DC*`!aok*=%Z(9b z5VJ|epUJ8}FM?ilL<+s>FG*JrynnwMs|xKnjV6$>@i4D>1r~}4OO34R*W@ccPpwqM7Yn3zRy3qXOdafC2Y$?BeH5aj zu2FcYcVMQqq{`!&?b!Wq^~8u2FaKo_HMvwS3QLeLPqhpmVz z0I0sKN3l>4%Tv8T>H?{CHs_KTDnI&R(U+0Jo+ot4_6N>E8)3eA0;}SzuuTC@HdftPfX_v(TN05t z{%%XI4$HdzGjtwuaPSvhe_lLzUR|7E~^&H@nICv+XaIiZpq2%b=)tLzPz zaa9J(wlHV6y^UI;8_peqWI;i&o_t!^!-!wf@7mh+7 zje}|2D8jR$;~@^w6IU?J`e81e`8_!*aCakwh_rhTFke0!$)$QccDI6!&1dZxfvOxZ zX(>FPOOF^Q8X+72J4cWXpTOP(^5p1$XjV-CwYS_JJ0Stg?Vt02Bewu0U^I5+m2pFr z3cyS{ss_H@YC>kr+NGmc=-0>x_*+lRAF;q3!9)Tf8M&Waq8s@LPM5EMcfFusLZSu= z7Z0i0NSgDR{)59%-TJ2Xrty-+Y^z_4E{@d4Q^}B5wjYAkZn)8@+=~~fev}@j%kIVW znK>ZBs01a<)o&+6Nm3lVMJ?j*n|S1lJ&%*H?axc$=sU7;stafd2bkTgUfM7jTm`qW z+M#Pio4~|csP=l&^(yny|DKH{JL$#i@WRsYZ1=Ffluf3JYwev9#VwcA=u?ZfH88`I zS~m)TbZjcx8^uNHEk#AGYx#2Cc9%n6v>T6`@6?uUdT{IK&AeR~DgB_~UYk<>I~*ep zD$Q`ojpCW08x?V7mc{`NRY=Ijt_}u|+@zA|kW;4k^mqun_x?Xupv76Y$LCd>JGH(% zV811E{rh?&L#WC!gk6`D@_s?07AT5xx&wscuqmy9kmOMQ{>&R)1>F;80+cOfWVoMc zoDsSl={4$$^_ml=q%S0rp0`z*<3TL-zxp3xPkRvT{-}OidGz#_f6QRe&uR{gaw+IJ zu}r?Ez2)N;>f_*a&1(<5l)Zt|`th8huZ)bASF`O_SSmMhj;n+sN7m}pvmiyH613Uz zM?P0yx`$dOSIIkXF@D1^EvG&V+>LTJeN6K`NrQ!wcufSVt3GzX7bck#&~5SyzRE|T zLJHfQTPqFoN{FPUV7qeT{4(x}x4}lbCpI&d(gm7%h?JA>I&bUY^686{OZ67|e!{Q* zH)K%%Gs6(3s;KS)4vH(mcj}_qC|zMgO_S->VndTx#W%61LD^4S&wsPg{>Bxw?Sv(= z6+_Ltu)^B*uJev-fL3qHGpncAxxc3XKc>OnBzD@!DFkG^4t@f;43j7I0YWdJiSMY- zzVB&qbpMQ_qiB7qRN`x~GtYd)rowRwRK0ZwVeMrY(TGu;_e|6LX6-)zPh>nMVxSt_0>c?udNxP93}S2&&OXpcc>Jb~BT?SFPO z{nD7cu_}E?1e5WEgA__nIW%=%)rO@3cfa=Aw5tc-G?$)`Uu#~dM2o3ccfpmDT&$bp zHlqtPEGX3#?_|?lKlP#67U3-$ZTY)bBVArGAnZ(vZLDosVpL~Rmwro&u}6hhRSs@g z>!9V={D-zGTj$beCC=L)b0g7k9bjfg-Pi^{fzRiGYb86)lfgCH(XEDrxwG~g;OBpE zm^)*wvv(g~WZ+zOtruaC993~#IHYk>7m$G4T4R)WiJ={-p#1Z?mbcG?Ufn)H<&ebl z%q3?=hnXrMvQ#bprJZdSXmW}dr&rlrc z7vZF=j&}aq5#>R~?vM}x*mL!(97oYN>>5tF?}SNKMVb6F-hp^v}8lTVF=c@P{>X)rF_EySaS#ea=5& ze|4pH=TtTCJTQih4x|uqZ;1DM)%u}`NWq46V{4MhTGjHnXyyyM)<=ZJgs|i{ryg-- zB$e{gc*_yno^>qA9{jrbu)Bqg58@Fe)k0>? zcqWg0ter{U>c8N>{MmrhT>%~Ndx(2egcDc_3MeK$yK5oMxi7`Zs;}^>NweOH$LpdZ zgsDm29Lqtd=!>VnAFEVKaszWeNY}^;m*mD8NLFwjAFad{ZBJ?3z8VPcisR) zouNc@(ZOV&iiL^BQCZsK^GSps_0QWey*FI*BpyBzdes4d?c$d8r2;!kPE+dJ17(C} zO`Hz1g{STatRb|vwE>&C9?==~RZW+BOhwqrgwjPgUxE{wlFd+7V=n0zyH&|sIK7iM zpOJ>H0&hNBNRK7|hUt-WlYCl(@o-jq!NuAMWnxaCq35ze1m+T>#8B>&OEp&xG>!~A z=18_ftnT0om91LvPmp!BgIvF%lOkDW-c)hLx4+LRwFo*kXbNoqs}Od!jpB-jpYsfl z98XV#*Q2#0MiJD3w7YRUXEZKrKjTj`pCv5oj+5b&lY5?>K{uKEO;uEa2$7QO6KPsf zGNt`{1Jk$|e?M=J&luZ=4e#ygALQ*RExbf>6}>m=3fZOngI@7EkP)HXRXpMfTy5&3 z?d=QEv8O*9a&!p9GWfA-A&!uanBhW-RN%?mLo&~=t6_50*(MT1lkIqy^Di!4IxRB> zb_Y+@eZ}$znV5=A$16kG9R|FF+TC)OjPg+}%W^Gwu0ps!Ml<=}Mfml(9;W=SK;ZvB-jfNuL&>Oy zhMJga&RMo-K4?xN?;VM|)gkUp2jnK?R}Fot)RZpN(4Up>?w2+mvDIn8=MshI0n0L` zt}hZz^K!ghA__S>r@#sIroV3e;t}!s?yhSS*>=Mdlmf5SN42~q<4q684@ zTKDJ!l3C^Yvhf!Lr!Yf}RJSr?ayat-ShcdZ!R*e6hj(?An0;Z6sx(>ijrH5K*O$+$ zteS%a{tR)Rl>*n-dkvX_^2g@_)6~_B`(GnWipRlN>m|2mzjIwk06ZCswyzA;5W?Jy$G6+nLEKQ?Y*eH!2q0;wSm4RQ(d>%F%Nb^)ndlkpkwt zqte*?ku@0uh!i!I;IXx8|972CKuYkn!`*7R0B{s5E(6g&S96Am`V zlZ19fir%~=@j@9ix6g$YB1{RHm|B*qk4w@xGbARPK*?G!{> z%TV9DB7(ny^DQG`q9NL7%*A*91yJb-4hUg;JqMg3x4H3`R!Q zxrSTIvW7VBd>eXg0KTHt98zs~kVlD$AVUsf$;iZDxr=o6)F@7iJ!9F~(jm*aQ8SS5QL5U9fEcv5%H-fR1zka@duSc!Z48-l z6y+4olUD6xhSz>(pbdo++>4r|$Mfx*vxTQaeFyWo)_U`}u2kkE0QcsPFGWdv*q1;u zvZwG`)8_*sJ?4eBNm!V)awxAnc6Idw?K8h%xrXH0+AR@pAycKt-2WV(LNs|Vq#Bc+ z3u_)fh$vy5`)1qhO#h==c^*yj&VJL&ko3?g$|C9OIKZ4t&bJ3-e7{6GH-Mt)2R5~s zh4wZ-zh>)s$vQ*K5xzZ*q7M)DsHQ0L4~W{&{+5x5TC*=E?4iWL^$%RLN^j~Of=^QI zM!+7iBj{wUn&P_mCJ8Ik2YEif7i#j`$4(u`0Q2uNGJ2&O6{D*#9JKG%(tkLQ1yQF!ioQ& zu7m3xkVmgE^fQ1YUis7tuYmpx>Ui2Q0U+t8#_w`7N?App*WF($J4mzyFLJ<1qQI~| zNm4f40@&VtaQu$k)35yOAUyp4j!q-jj69V0^dLx5#9f(bo@V) z%KzK8tb}_fMKF7h!Zn0^VTJQXyTGW*c{KMhnjaCNA(oQ=x!)}0(VK^tHB_c)M&!QE z^fa;ulL@H~rbO1KmvU*QcB>gUvkHcM3wsTneJvzh(W^8Fjpd%c6lu+C7Lpk<1MwLO z-f>^bVSS&O7dg@5aae^M6hV`R4z$U<9g)|D9HIe(EHWe(ZIX@tGQQ{7-I%m&aOU%i zpZfu)wEV(@QIa_l(Kd!QhIg#9$Sb6>YBGDiZMf1 z7QU_uv+{XA@_oJagoqo|(R|lyhX}E9+Nf{a6cA_OW(qTcZ#wdKC~AnS$^+SgM&v4w6Y;me?Aol8v864=4BE2xD6*-@UE(&*3HZ z*+$5eLg(x?l3^d5XO%7&*E`oe^JYV!_w-q&4-d|1K49Ygj~OP_ z%R@n4G!F3Y$d0~teL#uxCByz8LpXeMh?H(k4(@Fs2-@$xm(yAp{Jdeyx&EfUAO*hRKZ4V8_HEs@sVFuiJf$Ek$nnpSs8L#7jL!C<1#HSH`kINWaTPsd~KQHMeB zGOlQ|emf#h9WwhJ?~H)6QG#f*SU(GW?&bWB|2UNY>)bTYG}w-MVEq3$n##43zCagK z`!#Q@-WG~+DVakbCcz-S3sp*eR%&T9jfH`wHfOK}Oy}E0On=zdUFJu7V*4sfTsC|D z)*jAQSw>sUVC%Z0f5y8;%iUB$8n)U*HWnk|0kb$#F2Ss6VKqv`8k(JMNl^ov$-Jd(P^Br;2f-0x+9svv_cm5;POjV3$@OF}^uj~0<%wu? zbo6=deqL`qMK11!um;a?9P}SmTXo?KcKUzrMSlD#b-qK_WJyCvM5fv)YxA|C<$dC@07jqWZs?fn9MJqdkEaqSN?kp?B74vi8&CY_!F>6a1kJ9@x?1G z_;UA^tn=m^cCHc4b6F}gP53fSNjr1D4Ov0#0zhJh=P>N+u_bheFHI#yNL^4bp8Xn*junGGozbr`k( zjXsQIscL71LCLOo{JAzi|~#-ux_Lp6gfo}%vdMbh{u^b`S+eGUd$Tu3BO(TMU4{&*iPiBu@;;`I=ZR9Vld*AHD|#!;FiqRLoOX{K zSBmno4S;wy*AoMSwe~Z9FXpi_Y%WBME<}uH@xkWl}mYgW6|#(%}Y1QKP%ZXx$cgK%JT@_ zCaUuvnh%*RHonJO6U61A$yF;@{^Cj6fYlg#mb<;A#qNtMmv1NyX)l+N-M+#ZVU}bR za7trlMaNWR<~WQL+p|!2b22@iaYEVr?xl7G@Cy5HyNDX6x%%}R*X99wK$TUvdw=PK zg!Z8)k>=p&5iaA2*zn4OTRy1!060|hcHzn@)?CXeRV2M0EaU#r<~EPJKu%&n_iO6i zyN0ToZ~b=~|1tz2mb`{xqEs_zt|6Hz-Y0m{m0bO9A?AAB2zuG8MaACME45_hvI&-le)mLfJ20nqW3uk@msT>?Jfu0;um>4%M<}+ma{jM3Y0aFiS10Dh^Mw39^ofB&6y@2 zT~;w(5!^clr$QcJ)xTcJ`_vnm8upG)r4PbpnF3@y9@Q(R0>3J_HGS4%xh(7uz_0&c zL@1I)m4tdN3?;X#u1$crgR307=$8;uvEv7bq}>jQt|g%xVEL1lFBf|KE>xyZ33k%? zN#=bDJRTyK#^1Y;3i3aj`<8ghE({WDo7lg@&C)3;9nQm6Ke0Q#OPk6>ba&d6_eNKhQ#piqF<~*@5=a^bgf%BJ!I-8 zux@NIHt8f(FN8~lXktCAJa^vU%_@e6<9xL|I`m5Cr*08W{ud#l8A(8+14tX$3=>-J zX=~*&H}_-okJJ605`=-q^C#h%rr}s(%tAiz{7|aZ!gidBv)RtT?dVfg+pTW(P2(cNv-jb0?S>+(`w9s@>y92?^2n$KAd<=p`5&DG z;5PpcC+7dg*Mvb`Y{@QHDJld(ortdRJRrn++^DA*8(A2~AM!=?lH&P34U`EE>+X9o zY8b*^FNjTa5kU{j$rTpJnOl&m@-y>&N``FvS_Q)BW#uvT^L=C~D<3S)@ z$+d9bE>kl&)5qdxvWKd4+19(5hDNI$#~$_X-ZROzY-G#W)();MCR_m>Z2-cNc-2+pp6)u9BAx!1Aq|&x zf{CH~0xYGB!-_85tMHvA_`Dy`@ghC?IttK5E(|tHp0G8e=*-0c#kC&Z^*+e_7!(Yl zaU1?+=yRt}16!&AP}Mg$`BGy%9fqQ@f@m2eeeSLQLT}xSbftZ~&3fZy{t6_Tp1m9yiI_Q$AGi`N|T znAr8XhiM?vNm+7~9MsVmn_5~kwjW_)^4dn)MML85qw|X#7Z!uc^WHvLJZ9ABmpMdG z>E~Uk${i7k3Nh%fpEir>(lYG;s?lZv?@9%Hw~sl|L$vGF03G==g&S{RORJ;i{$&vJ zKM6rTk7Bccw1Pj94^oXRhqF;)u~iIkay z&sRZen4;lspsALx1?MULPmYCi6ZfDJxy0k-pV4@ero!0~<0xz9EOQt>qhZW(Z}-oDWwU(HRE|lEygA(=g?zv z+Hq&x_mJ+V)S}Z ztiE`j5(mN^h55tw>Auh!=8m+uiIt+~!pE z^+>P8INqjg*Hi(+z*uX3*+>T9>gdD*wi+okBRqu71EYDrKm-t_6qX7EPoUpl^yoHf z`+3B`ckyWPN%NOv_MfHkZKIB%?a0KTgrG2iDlacAfg&6{mqO>G56^K|KEv$|_`c5J zu)CL=t0~47>gylwxcH_MKHe9zdv9FrNj0$O5ztP>M~Rv%1pSEKSwq2T4`+^8y=HNn+IiNr4SdNw}o|PSswpokj@|f z6D5h>OI^T3Xw8+c+zIAPA3MtP#sMNV2==JL?!>5u?+b=0`syvivVLiYvdPk@!KlmQ9`uzZ7A$IfFd&Masl<6AMkI!fOsx^4!-J#>mEPuAs-$XkdVYz zw=7qw2)Dk=VGg1CA zVG8`^k5VSt`-z>m2A?)=BXqM4nDO0zwKGtTNAbK}Y^f7!&8bP|9xQvB;V#qZib_Js zudZ5#U=}i*=6Zc8SIsg2bjGX&z@%ZuO)V2Ny$JcjNZIhvx3#9CJWse(8N~KbL6lMQ zY%`!{*`}MUyaMv6M_+(m9sg|X`C0fmc@>pVS`h^`<`hz-ii)pV9z|Q;TM;DynI2-!&59Ry1!7}N`t8+ib zxM`mnw1L}N>ebP|NYF3}KPaj7Sp~Eod=ZnT^4|Qce&L#f@hvwm`=>39p>5YSw761B zLeJO|;;KrVS2a@_awjmVwtlLUj|)`O?hO@Mo?_a76az*53Ad08#dZ`!$2*sx98jPWOh(t)-;r z%b30_zFLEf<%!!~fL!Ys3H?amd5<0)Z&|B8u$dU})y-4B$@TWLLZp^5>Uo0=&TRW* zS=zA6_`-YN7zm$s7+wmUTm@P1PMwUWa?FnKj1j%f{+O)XJo+XVt(vBkRPmT9;018G zTfOmeG7IDMcVy=2uA19QGiy5ux?{D~w^GHgzRNvxgTI4&3;ui}(=4?tWMnBc9I{Ds zlv!`kY;QADv-Z6xHZz{nutC})HWBu0Fe$W)RWME5@(7wJ|ChmVtcvusp(VB`V<=OHjN)01|NT|FjnJZz%15eLO%-njZ*}K}7#zFWY9Gs=~G5 z)j<6-15rB_8X5MloD=@A#B20J$?<_x1|#@h#N6n%wEi^Wqu^Fn zxNQ6L#zRj{Yfo|UW?kK)c3{Pbzd^hGm!S~Z0Y5wdNLnd4cB&pw+g7DnQ&nN|Eo2wK zKlzf=5GQ>AKxv$U??nR9Lp<+{)}N=epud&mQvxWo_!y=IP#OEB2nI1hEJij{pL?>ILSpnNT^lrZ26B1vF zQd0NrzIV=$n#uT{VN|GrZC%|y0Gc$hzWM*M0Q`U2rgBX{ZY4p1fc{e7)YklV;VLGv zB!iyxAnOy{RS^i8pHR0Zrf)tMLFpEVX(y-rh>--=`qLL8W&F2F=7l4OSwVOytG zN=2bW0Wn1R)>OFM*5*`9%<17T<8KeLxl zvb2F+3Ai82m%H)41~~y<=@Tp6@<9}_xU27klu}4qt`ZnDHV%F<>O9Tp*TMwNAxhjs zf`8gBzU$U>a@eht5kqC9Y?8SR-`8`kI6SDwoCD@Cfvty`R(pmo&4063kQcCgxzBu| zGyU-^J1%WAf&6iS(9q@poT>7XgICpdq;PA;1C*9#T?671?YJ#!!|PCF2%kQMG9_)N z?+N=Z#7Ea-<98_jZucZO1UHh0Zg|gVyy1S%s7^=$Y)tX#y+b@SuW_5ho~WziD$@zO zOYh5*#q2j~bb<2t*IPi_klqH}wuc0%h^pCvdvm_A_Cd}pQjb&}4N5AhJQlLl8^RWzn83v^PkU+!?(gq%x_-GiWRPF3_ z-1ZapUWP?tCv2(D`E$)v+@f`47_dTUj5^u@b9Vwobv*FhkK{fodRIL!`t9|fLDK<7 z_0{N*VefHd`4~AyJw-58z`OKgCXfjXwSyd*Q!fGz0wLVtNQ!>25F0JVJ`47s1`|;0 z(JpJ?@`2*};0%0G;6z5`;+K)V<+RA^?tmtIE4CNJ92C(~F19oFbmes8&Y!p{W7zMZ z-~)5oaGGGR(1Aspr*hVg)xZA9ph8OB5Sa-tk{$ZdefCOYL+yxLwA*{b#+Rb?WJT1r zMZi5v=#cRWsPm9~Lgci7RJ}tDgD%sgM=q=NV@v&JuTuO=dL5S>j*a;vH6J`24F{!= z)AVBTPE*x^=>e(6d6);;#ali4_F8S3?JWfmDi2I=40d7Red^Uh#0dXBzt0`b7huH? zKf&`V+s7;2!oL>VFNmNQiA8qM@WlbvQ^Fex-7Z?cOPB~7&gJ%Y`#1Jn4c@wUxtC;9 z#a+JumRuCTk_#n6LF4UP^%fkbwLGr!a{M!UQ;A(r(KwT#`}8fXn{QZ^eoZJOYDcEd zfj3;>cyrLnHgdnn!qQatW7!B|h{i?eZaC!lHhYTHA>Z?*U96EHNpF*3KBO}bq3l&h zNgG{Tv&ncP>=8%1?U>4Rs-<3?bXl9>+323#Z{dfMSrCx!rEfs0CJ*270DKP(zprR) zIpt!5p90q6JztKmsCaJ)FM)Zg_0 zlghxfR7e3FZAi;ajSyDT2mBN*TMy7qY?<&OBn<(lW$Y=F_DZ>BeAgpcfCXFRq!qp} z59SFn=VH5<&J1^T-zbgz#}o8o*I&675Z2ZA9shA<+S*@k4=YMK))wK&;Ysn^<1QA? zLG6yMr98BLW1T8v+wu#Qx!${u|GBL6Hs^wX8l?F2`OkZ{mfl*0=t%x`R#>fP)GLSV;CTTr^Z3)ne_W}FO+S~u60RI@qdr0p7eGC8Nt)S*DKL#sP^NpW zwMl|@txKw zbm?t&L%7y)6?n($Wl>vsyDpR$f7tU0ot{v@g!wY^-c&V9Z-LwKTtwy(?~BTNuF9=b+@!eZ; z2VUB>k=JaKoR;ewe2ALpOB!~0MGicGkg**KoQ@uv%gG8;zJ(DL26Y)e0AoSj<3X?4 z!|*&?hJNdWE79s#4yrZBq%E^z?HbX;6~f9DcS;_X*N<+Bb6MC6{2$?4+^G4X(*R52 zGEDDrsr!NA?3`!r>5*|>X7RUsw|?A-*;iS2xp{)v1IA)c+MrOo!)-p|cw2%anQpb% zqc2`Rz2cuG$jI5N6@FOh=5jeRCcHi0T#qFiFEbikEO=WvuOP#A_h`0%YwGuL4E;QC zA6?_^22s!3!&jRsh|NcUgGoAJ=mKTsHW@{`+Rko%!9z20FpoJk2*=Bd73(%q5>eY< z+kjZuZfk=iWeZ*-8q&?FVaQZ}Z$8Vx4Xf8x47u{$mlZ zTza3qKAzzCD6ADI(H_YLI+b|bevKPB=}}-ruIN#XQUm7t5K4^g=!{q$mgM%1-Rcd~ z+Yjkqqjih0*D8o}=b>HJ6egf%7Wx&!**~J2UF6~^0&4Wh>b&*bVzdA5%Mh&|m_8(f z?4z`ySg2Yh&QsE2q>7+7gG&6Cd4C&JTD3Y=BZEdfV!13JS0b`=*Uft4Qs(kzscv|bpEa+v+8siRQaPHj_l{vnMox58?poz>t0W8`)0!q7#} zs2k%PeMY0(!CK#SH+jA&kEqek-d5QN*R3Fh&ZD{q-A&8Zfr;)Pxdr<7cZ-qIjDAep zu(2hC_Q{`MZavGB8k$itlxjOcyXaj8Q%kn1OX_sgIR}A6L+C%f+JQ- zbD!tHQ+Iddc<$b@gSqK_mur=KrK|`I_x9~%(jAJ{fhKMn1`qu}>9QP-5;Q9NZCL*2 zJ6?+ZQ@Q8wmT!DS{3 z9N1w8%uXq`B&Su0)2lwYtcTW~9BqB{DDkbhDe-A|zgZcW=uDlpW?gnM`o8g`$NQdj zblDlil%|3s4U)JifFUMUxPv*w$!uMNf<~05koy9*8O7DK9&FUIhtfNx^gISXnL*ey zLYpsMqV_ngt-@1taCg68XW=8vP5o@**8?FNQ|=*0ewWWn<&s{r(=tcmMMt8Zb`B3` z7KB5v5NrsLd;|&t7t()2z&$D8K22=bi3KXi`OeDymZvx0eTYQWzqvOwFC(4Aunk`L zq4Ia~6q zI3%V@)Mt|-yC5hUD=$?uz4iukR>ec@K^#5V)%cG(0~jbj@6E# zH=J`v$$Y>7h*1PAFS^t*npE)|)6iZXX2No~J-O^#`gZUUI`dTIz1;U6RgtQZossGc zaM=<)TLaIp_A2p{WwtTS)fkTZDoR&EvJUepvr4;H9b1}p$Bd*9@xzV-JNmuKcPbx_ z?P?9Z{rw^(%2@J>PPv;rpDlYVCmVXV(a9SXG#x@IrF_i#=qyAJXt4B#Mo<8NEjOXL zP}0(}eh~Ah4u{PhT9Ap2_xj}aH!$oLlERE1%HdGW_fW~{U5pT=9 zHw4@86%zlMp_%&E$rj^Rudg7wG)GXa15vsN3(em(gUPbwO~sq=xRXqtf1UG#+aJ3)e5Vg;F1woOM`y3+yyNkoKLs z-dii!0V1(Qv$wbP6**q^(x$o&cZsfS?hl~;t2&?G1c4m9W?4}?TN_N9=D(1sbxB`l zTcNT67D-<^1rC;D>Our>UkQl*Nv?^!fV{?lP?rPWMv8hn_kAk&YDjb}Y6}~_G>KOO zH41$r%E)sqw2g-oH6+?aWv?q`s+4vaQW2j0{2jN!}Qp2z?KUWgkLh zJ5~+W^7I9Lk=7&FwX(|wTU)D-Nze%S$2E0_eAo+zlLsX(;+DT3%;_SwGFRDZKcC*2B8#Ka<8w{Bl1o z8NP(Z7Zi`?Th0TMecXZt?tThk%~ie z{2;x30$V&B7%&~2g`Y&t(gC>{lvWqdyjPt_(^1j5{Iy8v)94HnJNt{lLh%f=J7!!6 z@b0N?bg5*@0Xt?B6~&I%ehJ!OqG%eZRya}`Xk(H{XeN7>WfiG4=nAa6)0L>L6%cyw zJ!-{GoE>RN13sS8OqsM|~{~^^$!N@x*7}Bh4sJF1^OK->>9Y-}tT)>6mDT zOEQ$ypnyr~4UkW+pz%i~gcJ9h_v<1qLZ08XP>N4Wb#a@`2f!iR@VEc()ba`pDfT;F zgyl7I6dQxoE?ouOGo8n#vot^y&@`kie#1y2vPVz03JRwQbneSP!=ayF<&Z zolYN~u`_Q~llAQq6`Z(n$gTXn`=^y{NO%>?+UHxh#(JTuqe&?+s zU#h5M(Iu;ya#88kb>7zn4#>xZS8ie~sA}z~n7kvkkkbh$PE1=|+HKHy*vtB>li%w; zJbhf}Cfc=lgkTuLbYjem?Y8BOi`C?w9!A~?rBC+i-{>v;8qs*|n$csCwNt!M2_vzb z9G}dY6(tICI-}Wf7$T$XhFdSbKK;IqnSqa})nainWzDo-85lpNadx;#Ghp&D6*5?S z-AG*4&N~9)%wO-ebk_Mq1+`;vaB9L_Q4;GW*Gu0>MdA$=$hdY`Vt>(hJGG6IR5jHt zcg}%uLgFl>zr?l6FF*q;&>dosS|1XyV*Y!?P9;b$n0|K1y9t7up*KXX=aHuGNeKnu z>$1HI^LHJsOJ`WYz`@c_1hyx(lT2?hav}@g9~XPH@?w?qb}6dTb3%wTro(kxphJ3 zWRt8?7`*~Qk0lr=lHtj@DkBEGMLmTGy)C<3m{^~Q5`C<&E9toGTuf)cPDM3cj4??9 z@c&i%t6_kki8>~at_gQ>dHZNESL3zy(Dk2~SO>`K*VFors!TJ)t`(z@w%9%+Gq|lu z?Mp9Tsh)B6Rx0^qoivpm%grHf+{wYsK?cqkj{kZiq}w%ed`JyDbnS!*q?TGy91(uB zMhwOx2s>SF%UJK%($&8vsF{ca~%R;O+}vQ+(r_csEI z?&wGam80VFzILLU`4|SPkr$%>8ZLKOP}f=w~RrOm7_ycKSgNYH70Sh>DSvMHx?pB4d&&OdGA$~-Ez4T z@8B5n#vyAr(#7{y05`vRJ2nI+5Yeb+NH?&Jr!O^&u})SoBIu2nS8Rm_+Sx4l`#P-# zp>g*{^+(r-)c^eTLh->kzXH{@e~tMWaja!$6&|No6el&TokBE+^Ol8(7@P;GU-Khm z3Arc}?a$TV+w%TIAYahB35l{h*dK&N7~h%vrfgD3J2)DMi@lh~_bO6kWk!)E@qkV6 zCvFj4ZiQ63etDMugTgg?@g3km{02CYz$Xuq7fF0CkXDhG3UlB=-k;NPbx#UR4spDY z@N80;TVmpNfK>XLoVr0~#TNvAa-Jg3+%jMR^qpwC<~x*ZU|gO18XNiPiG?#wrF z54Yy>4zO-6I(-{~Q&gXndpt_|T9<$A=E*A@#x-eUjnuQcP2GYX8)a`E0uc}gzq6XK z1M?mB*e2)q_RYeIE{>C?gr6j&Bj`EED?CY$my-l}g%rl{TAV4j%8%ROQHGlK(OqDL z>HC6ihd8#JLHvM>GORb@CYy7NL~Dzay>6x8Wa(Z?l&znTt=oKFtHb>L+*SGo9t!3` zf(A4}!Yfibj94-%&P}t@xWr}oq2Yz0p-0zKLQ|F4)Xom>M5!x!W3$ijzIh3F-ez9! zNL|{gyds}msmA#E8^h~`Dd(F*Z-a zYU$cR5t6yFIeKqbg7+J$oSm(h{Z$M1dX@EkYDSox^rr(AELElQ{lDt! z>SHP!6wh!x)|rn|uBlL?KPA8o?)>u5kC^>0?mH+TQ~Gk;K^U$;){(IEH1$w zN>NYkbn_N-ULHT95CHGuJCFmQpu19We^8P;yqs2yBvJ^lgKdK)oV9YklsPyTwoy&s z^6xyEqw1&ID^sF7LiqT;M5QkV04*%Yj_8b4Rvsn z8mX9Ls&>Af@ycxv)zKAk?;QGyvu7%M6E)kSj*Ubq&Ie6^hMMszt$N>X>eoWoem6At zLKaXWh}P$Qt9}j_?ut=gsPc-1;AP>JE2yI&5A;ModG?2^fJ;3Pxapns`J?a9J(nAy zeiyEjCY~1N$s#{&t=?wf=~|34g)c87K|?Z~;F+JOY)4M&{sQD>h96NjRj&5yc}}C7 zqVkxLtm65Nq(*yu#6Dp_&b>F@+vz=_6a8$K#{dM>A}*Qc)R!r+aKX~I5{eP!t5G)% zJn#xNU~V5HnJl^Lnk>64vcAow>91u~5*MoT(#?$u9GA7QG%>@-J%_(J`e14ZZ4=>8 zb8TS<)ejTm6R5-1C>Fz}LMsx9(wQLKQaz0%~8dGgKubLeP z4Is}7duh*{vm7_+f2mR2+ul8yaj?EeP!xYYAhEOJ1BwSc()(hI8IiNbRKDlidB?o9 zv{PnUBkxW@`7K5DB`Z#J?|>BMiwqpm7I(WRci~;rjTPYw+15JY6QjspWaczGM5zMa z)eq*hvVD;XrdWbEYJ(zixZ(*fFGgwmJ|;P+xK`EErfC$uE>e>zd`F{7UEc6+n$w7l z>j~L1^o4*ozyD|l1Fi4poBx-P)uB~9=ieL;@Nv>Lo-x+da|hg354+?p*T2Z{8t1=! zjZ3tpbExT5Kl}JJ^RE@fhFQ{B_2r$LfNjHC?f!XSvNh!utUX(Wk6+)gAWz;+vU5*M zQLF$wPM~ub0mLvpF4lHn8|J@zJsP;3%vC0EZ~r*H`9^vvel&pLcuM92@Fy_KI2>S1dVrVq|eBc=K;&avZlI= z;H>O>coLkpc)*tfBnzr1&FF~L0f@pslbUzK?BlIWv!B_Sq>4I6LKhOXqzUk&sb*?K zsmTM+)?O#0N)TXG0J&vO;ycs6TZ1`$$@3b9Sgk7#zGBiO3Gs*^L3o4L^zX(anv zI&H&^hxvFVbp>@qjd&|Y_%f`YNlr*nN=dMRJ66&FuM=aS8~qoNMwsvq(1ayfx>M)H zj3`hGeQ}b)mP@C3amg4#NqSLw1RE-54%8Ys1O z^-5eqAjNgWf6c_w$jxrY+RDTmy0VtL>YiGmm3Rpg+@R{#Y_Udjrm*?hz0LZJWgRd# z!o_h+MzyB@tQ>4$QCg$?g>+m+KM6un2Gr_OXEy`!FPo)l!g2HU@6uce2~(KN#@)Mh zeeL&~LRasZbW(WcwW&4xy!cnOhWgjOHD+xuXWXf6D(O<}A)Q6Pp>4i@9{)G+5u!SRg*(Wnia3kysNb_Ojg$5XFOkjyV z)*o7`-*yf51+QT1&-o~sSNbFyFj{7u_be{VYc1FA*zfkaQkPu{-K>v+86ONnZ8qQO z=Y|s!t_nZ=WiIOJZ^ z7vGuqjbdyIn+meA0iSaeZp@hj$Jqa2tRbk{^o9VdQz%TYe19PWR0u-^kihW<4`32R z@XH;FwJ5?|RYmTdc&d(4LC}#%!KX!v`X=|@S*wp(cN`U50-XYupLCqGP+&(BkZQYg z;MVIA9-PZ#>+W=#^t$r<5vfnLPmos+UKzl$C|YhjC=1g!3L7n53lutxdo_R9^y7xSAkTkw^_aX2S(9>2G+*zWTh zaSZpp!a~|;(9aL1!M3g44^qx?NTis>f*z|%Es{;~BuWUm=vmG2ZG{ghK|fZ$)97K2_`q0#QoFu3kL!eMVM)_2wEFylNKm*1-EmO+6BcfV7!_Qr11y$>m!$8`{53yFfWS~gZH(``}`m$AM&Dc5Mq{!3` z&UzF~$lvfgAtw9&$z+uIx);0mOS7U06rK!9g-!O~-`|#Q6*W|&_UyRq`68wT*RtsK z)T=icX&=A^OK$pO2C8rgKyghc>{hx=yXs2UZ{`}j;Mkm4wIl=Z7UTq>-AxQfCH$x_ zFVjdU%C@N$6}wqfcHA<=|>br)H)=UVP^K#%kE9rdt2K7 zZd_X5{hQ+ou;UOq`UTkic{MZXWYlql4rA+HZB64#Rf!w2&Hi0HGIirE?zQH=Ii;@; zz97R(fmD=y9F%Mr0(b+xfI5xUCL}aYE4$0nkrlsd^zR-M2aCuUI1WInAruf9Er>)8 z$N=*k=#MP7VIJm;dRwi4MQG8X_Z{7(8;#&a@AY}H7DmKlST zA#Lz4>k){WT6IGs5T5aS>suZwfBM$eyY#f@I48?ob zZSmQ~96!~{ocr$ps@3cBN+)zU4fVz-{VhP+jMGx4*qa$q!rXAVz^|+YD3G8`mf*Y#>zbZ`RI9&DYkOW`%`;X79&8^{9hCqfWDs&l3R_GU^Alji7<;$OE zRtTu?W(UcU3axW{J9|i8^6@}u_>Bm;sXF$(ha8Q#mPS!m9F2$tvWgC~ENS59syIuj z%+JInYzBlVv@7gfUgH+1Z+VOdA97CWI9L2ujv1K{zZ0SUq=IEd<|&nZb**l5<*LE; z%a>0pK7nOF#i)%v-dG8{M!%p+kfobp+ORx${kDjI`36NA(c%T*tF5*iVUo) z!4Es-MmC)g=Ahnm3}GBwZp5#h6}SSMr(RXp?k17?C`esH>Mr;)3jK5PLyj= zN<4()E|O<>hZn`>2l!~O^kQ&g(HGGNIVaCVd>%L@1!I-Hpi4L=+gRunLMPmWS^dBWQ{qe!Fl!G(zBkmP&#rwGCMz}wYI#d0F; zPP21pmtE)bK(JNgIfR%mtIv96_ACy!JB->gOjaXy_nR`R<>NI_FPk~O#?*`s51VJS zO--2I@ZI`R*`F2WyInW}jM>$Mr&!j*NGJCqhNbDqcB!I@>QJX?j4G@CluO{F)4lIW z=nFXCcu=ihaE&JnUYOCe{T1a&+VyMBAh;TNmLNLmqm0aXwCGaqIUG%;a)m9vg{r=! zT26jm#u}`%YCIc3TFq*uVJNCJPO>T`rUN_AciQLbazI3W?{6HE*p&!JAAvmy5o{fF zvg;%lMTVt@jIQkLFf*s_T@IA-y(~*&#l1-TQztdn3249jx ze{XF#ISOBKHClcYDn2@%wm+;;;caajl2(s%7g>63V{&&mFucjboWE~ufkI9y40@^c zI$xnj{rlXZF2kd;*@L`|zK(!qxD`@)5u^QMgoch|S&=};mI!sK;h!&kL}G%9Sq1r> z{EwR-YWQfl&;O79*-V!jhs*BErkv)~bdVf|RUqHk*?OrQRsz z0Vmka39{JdtcHcA*?jY+FfTt`pj?oNZVjafoLyxA5TB$E;XG+zFs_lh`!XoWx$lQ? zE}6^|e7Wt_iHG-CI1WS~bihEJ2}0@)8VOA@&>bj&HFEQ)iZi+M`T!;A&&o~X@#?e~ z^aAHOdLOTU*apRh#@Pls1vo7Bl9Q~ZPkC$gK##^$ALL$$ekSd~^WJYuV8Ai&cIg8} zr{U=AIvi1XPoX&%?)D?FQt(pIC3{qLDK;Cr3As86YzX%!kXIQl$6`pJ*cpN0poD~D z)uTbH<5mZMmY>>ppD?=n{LX-9?puu9C<|H!-M31Lp_hJ{xx1XQ=Kwei>9;?5C-0-E zW0M+oYUdpoi%s1m>*SkdINiN)LD3^vo`XX#6)HAP+(~`$C*Q%`tN9O{adG5pO)*xX z+^rm-eD%!&sdb#C?7>_RyLD)xt}2%#E~^>%(WhxGWyjn1=)t$Nez3*5(IxLJpbde{y~7=ak;Sz~aG`}R z(}>SMl&@XV`1B1I+=2YPew|05)6MK0A&OwFe2|qnYCkgDxo>7YiP!e1(FJ-?eBPMk zd&ky&d~Q#dt0B1F2&ng4>{yD_eiB~{OE-uFIXyMCq<2qhp(GCcz#mPv;=h5D7-4)L< z8Mfw@s^IbiD)p1qouVoueXU+U(PX8&zwY4vKx`O~gouSI-?=8bpfQQhK@YTMzM_An{tF9mn;yA0;0cSAzB zSI&HX24OhEu@UwjCb%v%BS1w_{Aha1NJGGW8IUG4)(37Q0+~HUP($F*3l_cLug;y4 z$ho}H`IcqJu)!dOXgU3{Ec5&O!NoqD8jqv7O#isvX zTL%rzXI)pTpqUN!y-AA`1$O9PrhRLtxvYhEFgA>K;B~wiCQJ~bL6QgfL9mtrvd6)4>LCCmb3@ zd4VTb$Akd3lYw&dgoiJRM*O3RNd{hELB5;TA1gg901$ixAh`qx)f)6n-LsofNnUQc zO7b2Cy818YfEyx^bs_~HO1shShlVgrKf_nu(mHKkH02a-zQ|&ZJmJ%7G1+AP713Uf zbZ3}oA@L$!ry>eLqfMA+g$jrSNEui^1vAP&rM>>5P1XoEaIqt$59?cKA}QfIz_ zn3}=BhmD^DZcgq{F4 zk!vjbyx4s{!F0m4>8md0Bd{Y#qn??u-68?>XKsOyZH9T>t5dDkLj&`@@?S`*bN0c^ z{@M#l8!AF4Yt?%9*-YsBmzF+BUFvW1QKrwc&(j$I-~ zVeC&u?0aqj|fu!E<%i}*G78^ww4`nfO-R0q3Uq0h7P*#Oszod!2$(BBG zkO0w#Z5dcJsgcmYv_^)!9(@s$&v3aNA*GWQ@a5ifm``_!i_+$4aUGq>_gPCgMJB|1 zme)wsWvN+&0iRnn^l-UYGZHk(aAvQseN$R{-Zx&wXZ$`GqcH}U^%g;>g)gJS$&wEj zO@=RQ!k$P`dT}RGgJ1MbJ<6S4`2^;&?kjk|P1JLuH@ab~w%09ll|pXECpR_)Zan&% zwJ&&(24a}2c z)N?O+VKbsn;7mR`8yFksr@8WXSEeikd?qM0Hq>S`9f+p>x;%tc8E&kqZpN$K=}^GH zfK;Sv;CAL>9Q&KY9wdqrDE7%1%kzr1_!{qB*pSAtcb<9}tJ5_f4`JBl9R=u=v3an1 zMp5Y$<}hSo&ulF`yd9=SJd)yUq~gIl$1OR&Rzx5Q}$}k;|h9W4*p19 z*NaNQoj(QJM2a$irHqq8lh26uf9>^J%H^B6v+idirn-_(*xLE!Y(%SXWp32VZ~lJ6x0NZLFSVEzKfj+Ysx)vkc4rDBt#FJq z=@+upLQ3YV!moN+6VqK1ymZ(k@>lhtL>fW!IZ#$h=@XFlAr-C&eA^YM@PKN0`%-ht z#Vk2pI}h6vx5K!8$l7)n;SiwxaIX+bFHAsZ>fHip@cbGBHV4+d)M%Z zP_vkw-(PPz)ZFq zPvkL`Bp&?=aYs;M7ShP5R(up&XsCuxooxd|^jUiwd#lR zXblP(S2A%QO_kXG!P_{ze!PxzmacsomSKMo$SMn$Z+E9&=={OoK37STV!Cb3D;ky3 zy(lM*W8Z2O^?s}HTk-+FniViQF^f3HZvBDhHMmg(#hxjdT*=<C0v;&OwwEtQ1UDX|7qon1@>i@MIMH1a_;BjBa*EzfGkRXU52P2D0LpkD^M zx>y4$7AC6NRKTLn+ew!>bVW!$^=j64Dwu+z>65V0s(h)Hhf($Y%K&rHnq~p6h3+~tu_x`F^{K}*H!vSVFScV3w9s$zy1D&BWhyl zXwWPbjE({{y?=8st(V@aH>DR4E)BSt;)85XeCJ$tQ9|fB1j#N2)dZT;VdcoR=7?KUG)<%9U!VjR41oG- zZyK6ir{cc@0vnb}>}>+_1{p5Iz}^}Dm9p&Y`W47^E_$s0*HClF8{dy%^F^8tJ#;cH z_NCETX9lQMYo9MhW2c%axzqRVeq3lt6nC|i;*r$vbMul1(2k`~OzSd@)z+^N!37v3U@& zboFk#+sqDjJ2{C`YIf>^Z^4+@seaP~HEdbkc6|q;r$aBVOsQY4dGT#n9P@{N{6Rc9$0u+4g_d3q?u~i%6UfiznvXwPsb&XMb+_=_oNG9i3Gbm5T-| zmUph(K-_^wL=FEKa)><`d72hONDMR`EgHh8KCFF=%bM+RG`Boy+VehLGD3L;#0Unp zNbd_20>9F<2oT^gUwgjkizl{r3Ru|KWDtCrlY0>N-<3FU%nw33cS@SyT6!HmVACP~ z0FVX6y0d`d^P?VwB|d|qbyFb>1;Uyub#)H3#uREKsquCd`A8GLPFg;NuggyeDF23q zD0gwbcX&I)-TB}P_>8W}m(oUU)Pd}KwX-C3!B3`V(tlG*APY!olgQUBpM$8#GmJZQ za~fBCU>{5mFEK01 zSa?%e`DXcIy=yJ-e*){x@pYK-zs!HRC}@^=D8|K0y2>%(Px|TZptp2^aacx^Fn#6V z9nOZvoIgZ+31}oceKdZmoYX!H)>f~HmGP3{LM=o7LFMG}bD#5gQ4jN?#FAs@d0-xF zrVXBHQJBj6wPZtD{XvxVoT>8aAW$!#WgST#?uPI(%9HgPI#7kk^e0+=E?3^Xd81$k z%h`5hfjOl!?K`dQ)KBPLA{sS`b5`wBiC#bM@Ix-@o zAXLn?QP3Pdk5luo1rV8gZ$BRu6VOn^5|*DUqz8M8ZF-KW1F2zzp-$c-Wutv^-zNlX zTg^5y_ufYk)@WoGaMPvtkx^i3#V-Bna4kM2t8m-@XLisD_mmed&-Tt@boUA8i-C)L z%svJ2e4PBXekT?%G%e%lXDGvegg%-+>-^qx20#wm#$Fd5Z)}%Jc4-auI9ysDo&WJ- zc~C^nume+O?Eu{Qd!k}dxBV$wmd3t;1P1-kKUR0x+*s-Y<8-E2)TxOWz= zW;Od~BFAR9@&1np$+N~#0H--)d?izeJa-uPQxK(TLR>wuFGWZG31x^FUr3e&=HrX8HI0V|aFtA9M(+#k= zq*grz5Gom)Tz@?!<8yc|=>m-6VlUvov}+b<92gbhTAJ z0TCl#pz4v)%-#i4wLg?%nHd>`2Kail+2B5yB_MB6caVcl_(KSCMco+<1W~NCltoCj z)z4~N2)&_@0QYaVuSUl=Qkll1J3xWf*8w`Yly?}%Q-p}V33Z`>?MC_M?VD`NQq{Mv z3}l>t#qlWEP4EW<=f)X^`(5e2mVvRG-MRv&QFJ#*k<7&Alz&LDs~L7Km|+ojH-umfk3JG09oE^vez@$wXm1=Q;=$M%!)in{iPXum$!-hBNOlfV@ zaC91Ze?PMCh_*4K=LD9EE9)}m&`^|mntVs3_5jYzs8O<_l9X~~Ic)-< znb-1HOmJ|2JD0568)|sAFw0#GO4Qempp?|+<|eEk%_OCPQ@qNt*0XW5h)McqMgmRz zHW0Rf5rqoU~=aU(2?W+qeN5V_XrXPG_9eO~;%o7q=+J(?ka)kC@qn_1uqv`1{KZ)rceo}mHozp;Iry`RsO9i!p zU***ZD3r#>d*Q9R6^ER5_dX8RiPdv7ob;LJbZ6dHg#)Yi-;7en!bAcQ|k42 z*QjEBJAd=e2di#`$5i~>VziOq#bOL&!;Z!muW6;z>-}lT!Nq-e@sYm6f|HJ%i+K7| z#O@ag9@Yf?fj==%&3plPzJj@p{T|RIZP`ODkDEuU8eI!AZp}ZHJN>XlomhG1>Is23&967S;XG%Awq+dEUqRJD?RFC z$JW@Vhai0ElV#)BTtBA7{vCMng^uVnv=t<`pmx((8)xk^HNKu`t_+CQBb1x5Ts_`&Bf#bc)S(ZgY4PtLzRKKW?LEBmnbR*^q5lwi_jv-$UCbyP6}_f*V9yC0hP$ z7k69v4mD+)SCoD-km!_ls(7BBBS3vX!sYS=QiUHwQng;nI1?z+8hQOsW=6q z5rMualT_Zg0GZfr5nxK%lFZoAZd)NhVKz0WF*iw3lQqN-Kjw(6eO|(D$ z4gbc^yT#J&Jmnm$%>m;?RB8@dnyCy*TR^;pu&w~a*tO8^$N>;Hza*aeYnIOmk0Um9 zf%bXBLe}OVQ}4`Azx+x>x1f$O{1L#vLDN$=|2QYPI7570q+TpacIQh4>Kavm&H*udrT=}sntiY;5VN$ z328pR(Zu}a(24V0%{$sGPFw^mlV9fDoMb^036T;Au@PytRx!PU3!r&0;BP{8*?r4` zJ_Ek1PQgTlw)~9@gZg(BpTPkiQzbRFF>$&g4Qz zS)Krbkq$^C|K>1FyFH3Cr12AnF4}n?%kyHWJk=34s-?xu6bF>l|1OdKMaYO84~`4orM;qahj$Iz_DmkIp}cUT89(HTjL%mkvd>8UM|3 z2(;KqR%3Ik{>`y>0nK;?nv-WSSSCQvV1fr66dlQ~g6+Uu8*ybNsHqo8*tjzHlB?B%!gH zfL(xDBzn)j0qXBvtLy)wq(1!r@ED)-L0k|#CQOaOS#%HSQQd^6icQ{2_y%(@O)pfx z{NlMNZ(DZwKZ#>*h#R+o!@rAl=m>r0M5bL%&CSmzWs?W$H=~cqRbwTspx;hT0M}kG`9F9>a0iA3Apb;C0OgFH2EMfre@WpYY=M5ra?GBwd`j zgNi^pT@?vLAKZ3-X5M#os0t8rL&-u#)QK%&C4@?ZL-LNrp7Z!iz1= zfE3Lj5^RPedrF|rJ3Ve1{#CG)@=qdnJN)eyW#YGHg;;?!;8@oDyhOyu1tm~qZelGh z^%XC<{EU(nu|KY(Bk?FIV)adaWhokC<3H0qR%M|y6I{y<(JYECVullqvBse;C!7{Jxolh)Weqh1M= zm$(z+MbDAKUi?Ge_cx11Dhdu2)xSRT+R`t2m}{&SDLo&)F+M*>$GiKHdLgDj{V*wF znpXm@w4F3dHxGWrS^voYa=_%U1Vb<^NN&eRszYriul;ked_iP*lRmV*#VS0kdCYPe z-CB{n>bN<91OymBn%uvM8UO7uqs)USyl;*){W^6q?nw}sZzXJaHB)P=V+^Z!`ju&w zBG*&hKHBh5(=J>34hgh>1_|8t(Z^AYEY@m%bHdSfr{sSOhdkc6*TwDN-P?iopXZGI zSgFwO-O>FJkO_#iV+244ABEc>jLQJ55cla{{!Rm)@MLn2z~+?R)cu=d^j_nh^vvHJ zznDC9EU(kGm!hra?EezT#AE(lJ6_Z>_ zspQp#nQz*|zm`SrgFBmu*U8}ysNOMFC{9wZ=-f?`=hfs^6T z`rft;!-iW!fD`SC-?KJ9x8_-@A0OrTU?_^Hr(itpJ-~O6+I%{{I!Vkg?ft{F@J64m z+wsUQpZ;%`PykRPi2;qddGqGtmoB3ZQmfbTa}6jlIB3kOKnt}z1Yk8)g!XNR80q@} zy{g5hS#<_g#_obMLx7#OYAm9kCB#F9P5gSj3?S8nbD%z6?7=RMQ`!rdS@zDUf7+9)&cQHlwN~cVQxV2w& zd#Jsj(i!Vzi9mmxq*yL7U7^Eu#1<7%0o)%pQ~zD{|Bv$j|Kpc^leTg5*u(nNzP^Np1qQ z+#nwv%_$sF&VNe;8<_K)M=I&=9s0+zxH$4EOP{t&xk_^+%eT2m$A;C#7WPMkltEm| zt4-jA7Z*YjuaG6EQ_ znwe{6&bem!&0qOGjA+RM@_aMSTvS3p0(NH2o8H|!GiiITAkKBU+jvX-V$P?IuO;`X zv~ESTj%p{$`wn~_TkG-u(mng6BP=y*l-jF)zFW~OjbP@tD>D#1&sGTqj26t2FlGmO za(te~2ei(%(RZ2X%bW?%P95$S-wPLtE;1ZV$$K(e?M3QO_E^*syrie`0BH3KgFle` z{~duz`QJ_h|3YaVbF4&342qrT@N~?hgx-FCN+p)kWX`P3v7N?ed`k>&8S`klI8C;1 z8-NN8OI?Y?hm{MeN-I@A^$k#KP3r@7MH z%z1YpTQuXy&=x=%(B%(S-~=K-4tbLklZ8D^&Gw8Rqw0h|#Ae!HxV0X(yLM!ID>Ul- zrtnRUPSU`@x_e+pzL_!W(THzv604ee#!bm;AL<|*rg$bDBA{(;U%W2|2`Lnw+HFU zJDoBmf_O-)qJMi;m5cphe@rJ>C8++7>qqq@Do2Z1!nYPs7tz0Q? z9MaQRaXmJx03eOz9V$Eyqze#2TrI`qX|hx!(U|IuM9c<)ng}-(N%$!z`Px|Nixl=n z8qP3cTkAX ze+Y@`JAHUHq>}DE@*HnvM8}u@t&J!bi}TmFIr;}uwtrI;%#PK}Po+ax+W>&$S$N6+gDfFct^F^g5`NKQ0nHb({K3B|YHnokG*Bz~WH1j>2GdSY|9E*=`Os)R33C_Hk zBUk0-KV7Z7y#q*8HPN3w|0f{i|B~sA{3^$>fOZB#>j`E>(wa>Wy)~*FYQf-A`?60f z`{tc?bh4-J_IcE;yd+bTAVhuPcpsD*J}F9)Q_-rjdT67qGC1jW?(-YIvTiwo&Hm$X z@wGnpXC~p}`)S1uB?SjJ+%!1VNniKVu$${JW7{U1h^Yx}cv;0QP4RERYSh=v*`o_x zfA}X8sY=$_ACM~g*t;`nv#Ttg3dN@;_^+wEo9np zz^N=vUyH%Sfqir#SW(>jZq0NX=;D()mh~-@allj90U3&9fOA-)XH{GGS3j*1y6iZE z@>qVzUB_~a-I9)@;ww+y@e>q$A^EfR`2lm0?NMHdJZz`d<=aria@?|a<5E#0xVpO; zPzzlc`>WvO&%eQn<0S(o#ER&T=(~%$#6V}P^B3}zoz!^+fWFDbFM#B9G_+lcth(OamC%*YUWtOK{m5|4( zf8<$LdqMOWh4)3Sb2tA}g6+TZ2AtjsQGj@2P?ro=y~M&`o@_%?XM|b(>(4%k|MoK) zP$E|%gLgqMlhdkO06@UxsJ_{#)F;Fy+bx5MHKUhKM|zO@(DG`9oy`kiqCPt243UQL z91j7o_>Vu95M#`|el*Bu1!Rg(C{e2UU(dT3q#|X*M)JYSe(?`8Qe#V-Nqk`$*Sg0$ zo-Of}7^oMY_8@Jm(6TsP%Xq6QP3uavQROiFtCMl2pTly}$}cJ4pd_*RM~9++xio<; zCXIUgawm@Hb1sSw<9ncqH|5}#n`r}UfU_`i3NBo_vP*`<)~`35wmsz#$r4o3vH%-&n^ zuP)7qpC@1%)Wf-+XLts`er-R1g*0x=?>o|*Te30J((~SET0-@&s4XHQl>~_ib~dmQ zVu=1|Q3dho+!RMjqR*!XkMo(`U%gbkZ8CdVpH@9CWjUpONB-LRX16v&U~_x?_&yoCR7?&aX1FAO1e}ewve#SA5eUjP zWWQmMau(oedA4`L(?W}ZUGy1PL`F!$&e~~b5H+5R@*^J(PoCzGf8k~s`SRfvlZ#eA zs5t&WrSWgZIMb4ieKb8CaR4(G?j1<}L1^&ZpvyyF;O03D+VPWe}+dF9w^~d|pg#D(XB&9%;Ah zvsS&JdF2zSC$CJ~`S4r6inw+y^X%&!nz~V=rQj-r-TcGd`4Vd{H;Wu0!Dm~(cAkUY z>(yGD9SlbgNsosEZ^11__ZnH1zy6T0V|)I!yz-UBg){aHY~R+F?g;z+9H&uc?lY>$ zA4xFWoSpBTOOP3Uox_><3UKCA0si{~T!4RtG-iY*t}3U{E-9%h*>i6+Jw4re1b=6M zxom~ai;`Mg)yQ7t*V`$hvLI$`ljw1j>i2=5eWR_226r?kkA7UAb4B0jxpi#y`1DIb zj-Kvz>eQccH}S9za4V6rFyn@s7b+i#iGZgcT5)`Qa7 zUE)YdIrzM7e*XND#vW!FvmD)=j{zh$$W*JeO72Nkl;z69CmID-9A^sETv@suG&B? z&q?w|SvixLy#ht=PFEsFXg?K?qC-bzKp^15!lcS~jGf($RVn2$c{FrcnL_Y&>jDJ@ zWtCtyb1)B^QN7uiepSS0jV=*}#)~3?(ggeQBl13AHDvB~{_9@-N1y(z8+`bo7J~b6 zrpExYy%~*mC`)2u_2a5Yd_h?6yE3X4o|t!O^WN3=KLH$Sa3~9Knj|X`TUx7<8HpC- zCZjfu5o)^B5=-8~*S=Aon^}CRlrV#6R#XBLhZlfA^lYCPG$8(<&{BBG%IulPc1jQ8 zeLHdDozs>F(W87dyT$T^Y#?j)k0N5${E0SaG3*{6l9*x$x3R372nM!=>g+Gi^T=MEx%A zU$4kk_q>retPlHqJ^SHsMCxpuA`QW2EM}wL7Ij&2i`rhl$lt*gwlLjsfgqL(?jEY) zcRhcBhcXxPWRZ&-z~9v^p0oFh>a9*Xd^_Oks!&wB6dNYodKl;M17e4o5`|4swi-R1 z0(dUC*l@FN{k&o_+xR~+N7`q)&c3SsSf*i_t|-*IUd~}AWneGfD1#lsPHmA&^7Uk0 z-e-H86*|enHxheD*z8Tv->G{kMs-Y$*uF36clmk`|W<4 zADz&RTw|wP8P}@SoZR7Ak>|}V8>8u5?)-8f(CYzuQ5k@4=IyxBr5}4dXa^B>hI1L7 zHks2ib7r5oBm1OQ?#ISGI~FtZ#2|>$Jdn3dKvJp&#C3;&u=AKJqysA&MU zUrNfMMgjah?GtCEF#o91Mv3-6^w$d_+4UoqjsK%=KLO{o`tq{~}v4>u^Hk>w&4 zQ!k>d5?xGlDVRhDYkMsD`Ps0htfb53gu8%TZ9zZf3_JbHs41t|KskE~8c{$Tl8ty2 z6pohp*1^1U9H0eK1SqGA-tJ$MDY~BO+;G@3;~ z{)x$o%YWGR|Ff}kY7?MYrnSL*d2{r5RUdNB(Ww%|Rg^YS@!BJ5@bfL153$#1TK(&i z7ZLXUTdZq{3PjYV0s_Wd67^-w8EPENr~7cT2Pr|3RZMAsm%S=?kBo)e`ruU)F5BbJ`(oPA+#MAVo9uv*YXh-Jy~XR$c>{| znDj@+bJ`yYF52X_1t$KcXn6^-nb!s(7B(SdF{oGy-kD0IWY1AmS~7kRs)~T{P=5%$ zyWL5;Us)MPSe7x5T1tL#KJ<;dJTN*q)g(9PFN-Q@A90Z6N1Ir>ZoIAwi4rN?6S2qq zs6~}W=0PU6t7j=?EU5A}9QORt`=m=N3pOoa4!gi>L%@p29v$P7q}Lu`#Fj~y!{heh zma_69n0PG&@b3;)5*qPrv{=V*Zsz6BDE9SkJCr5@q_BH$a-PdmoVC2)+M683CgXmj z`lY*D#9`dq-xsX&y3%JPj~V>RVR?4%+t^tx56^5R4mGU=*0CgSUYwG^!H^rbz6JN{Mn9v<9L^*uvO|4!YwAH2+A2 zq8X-pMQ?84IP3@^;q3ZcEo@5YTOFhY6g?+`+Yi}m!;6Mw+Q&~BtYwV0XHd)1i0TV^)A?Xt z$^h;9n+^QW*Ghmd&1(uo_q`1OroeOrKr??_GJQz8^M|QIt{nPzz+g zdmerKWcn5HBWC1@a$v8Y`M;XP4Xu{j$3kE@cl65Z1`!vqzE%^m<*;v|vXm+IY-3+V zw2G3Ot_8pSn^gaCjAUQ|d1y%aID4VelKZ`n(dfI^Qt5K+4zw5VdGJ@nYt7lWUkTeD zc03ZCCR3~8%8v18$hY1jH;HEZz_L>`%R?B#1)^xwEVD^>>Y~JIGjZ9gl!}noO_Ikc zO`LXt@;~;{?(2+;N+=JB6pLycxHQ0)TG^N!Zn+tD>Qr2%Oa_XXtS!PeO|leVgKY=I_TO+tZ;z4)If_C`OC6{|dr7gfJTXLOfbMycRGo|Mn zelfU5%feL9=4D;eSh4fD=3&;er+LdaO`EF&7O~KKXatK))f#E-X%LFj=s6yQn5ihj) zzhT@y%09_cXNpLSYFCq~DlD8a8q6ZaxKm*l<=z(*xYY~!a`Bwtp8vyQz&f;)KRA$; zSWkF8To`z3t=b6u%Brf?p`gIqBbJXr?Ct6Nj*n8&34pK2q5j(n2mmBpj^q3}74k-; zQf+b2+1g@2@ss;fDeq}D6VKCiF%vOuAQ}?r=)>k{SbNl zh>;`-r}G#C9f*lg1hnBa7PLb=VZl?JqXQul0#>!vGgk4MK@n+vU3|VpjXEvRi*OE% zfJdLkecXmLVUTzGP7~*m+5`B8$kIKu+o^9d3c9E_WGMqc)8(%nwXX>~6>fdB6%Iee3LH?hKVK2)_6|0`D(vG*-_$Y+E|irgrG%ibVf^hL@Eo7 zisMRTbw%%O)>FL8?_m2y>p$8N)S%{h#N-gjDRrqO-=2%Bwk%rK+4A9-8fAiBk~}07 zKH1SETXF_q_>AaafScj^OOF$*VK!NFUG5U|(}_CFIxq=1uUmQiN2K90`%%_-rEza1PJSfCjiZ=zSv%O_eXYRl+&*DXk7QtnM}90 zoI&pb7G&FR>o-tg3LqEfefD;p*b(P{O|{|TwT71~*v)y4l;-$7-&)$*JvsQ+b!NX0 zu6r>(&6&UGop4o!?eLc`r6MS6sRPB<1E=0viR!*{m%VM z>B69Sh>C_)Ah2V;rSnSek!r9A&lv*$ON1P$qGS|01^&)R%xNXl+FIJNkAG(wDg|x# z(ql;L>N-E+?N>tGTi)-2Uj3%{x)lw#L(kf@U9y$Z`IXKb8=WNzyB_Sx@SWc&lvE@3 z?k=aFzBiynbOF$`W0+TOp+eFR$;Riw*Hb!!pIwUc%9tO(#Yb8uW1A>Q);}7a9Ldgf z<$@!MDrq8^V0ju}Ozat^dP_gO?BWg$jp<~*;5@^=APK}V-Xf_)Gv)c**fAWD0IV|Q z#iEWPC8DSA11{05h*bWr<)@TuDfSG+M@~ z*wfhD(s>=m^#R86tkT=$^$+;;1zmKEZpmk3v`q_?)4<2xA%Lefkf*w-(#f7D=Sz{l z%is)i)RzQI?@QTgU7Bm4wHnHEU;EZAaU<4|1y9q2rA0CYayZmi{fC{DixZ7zGdo*G z-P`+v1lqa<%!Kq(#;|6ql9hw&a#WEG0{9TZb$ov{8cAOrROASBF8|lKE7z=(fe7R? zXEJCTweEIpL3{Q8A;Cn! zTD|I)el|i3gnJ4)0H$~-l5k1;n1RzzMqm0KQ|kNT_`1o}y6pgZt*7|m6&pD6b9`krKzrxD|djVGcC?a zW1#Ivv-Z#nJ+3xA;9sGjFFyc0uLS1yldrj?bsugT28HyV6XO^#3{+O>MA~8s&z}`de zH%w}EH4aY95=#{iBjYY*o}!>~_QFRlRyz6YwEAfiszSiQZ~^I{N@EdSXU(Otc-R+T zmk&1gcUD}xJUQ;jl7zZE={bD1S`p=%vm0{#rFNnzpKHS`uCpzBK7H_Z(O-<~;6{_r zaXPpGhCxNvnHFIQrAsD-%W9IrADsdXILThFk)#H?EKHLSYy5qg{BpaI$BB$sW%Y4? ztW6&d>*3FgyKJkQp|0-Km^}S?gVpdsXO15DkvW)Fn+60+luS5(Vm{wrw6Jf%VoQ)-i*~nA{ude7*Kd@cW zD5eb9{D5f+&tVuVdau*7q;)~XWMAiN8K3n87jIIp%b|e%awHtBt~niH&a-xw()R zKS$@vwycRLNr}lur&B zB@Efk7TT7o5C3=7`~P~1|EGU<{28wjYk#N}=FuDl$gS8SIb7)m)sC?05;UUn=q#X9 zZWSkLpBN%wECO5t5+?e#B{Ys4%xZ(=xsk*pFo3!yyUdL0gra z;Jd?{*CCFzaWh@Ma>B2AFYLUOj;+p7-#tbwhJ-eO=AhNVl|m27$G;p|x4KQ2Zu8m> z(w%ojCa5}BcEJUXvlKY9$sO!TEq&VPzVxESG>fTie*{x!RlC2ooaUg|i~G`>9ap7? znU|80-$mTp`AX2qeXJYn+Zrx<_n2LOoR-%+fafn3w9C|`#=iBnn5rwQEOPSPk-O1Kz;GfB@+ex^Wa?w$g1~HS7!#H3fYDJ1!5C)~ z26&^pw`}`3nEe=gxJ%>2{&UUmS$yGVwlD7=z7pk`jF&&1RZZbO)^zzeQ8EgmG3uz2 zjaC$D3-kZdY;)N={y~_Nu(QV39R@Ov+v?O%V~ghTJGeQ%Kp7XeI;O;4uSumIAm~$4 zDHSAQee@_U3R&mWQ#$JYYTwV2c_;Pp64IKv#$CEaj`+~9ownG}OkHctuGo-wcCN_Q zS4M#aM3t=9iyNtRc=qIJvfn_0A!0#DGp4eMm!vSN#2VN!C;fE<#-xLMTsrE>R_uiB zy;PCJq~X?lsXpPc6}NTRw{>VY>_2Y7Bak;F)&e*^For!H0x#mvRB7j~8r{e(PE0!I zbA9JV^0Q}d`46erS$Flu)l0H-uoS+o8+YSXYlofnDx2kaYV47I{Gd1wAV!Clq4ODLB5+ zcU+aSI9^^a72l8lEPR6P(plKhQR5~Qb)2`M0L>;3lBKKh$F2H-QXz&ln$EV9hJ5vO z@UgRZp3>NSI{i|H{clgw&rbz&`mt|Arm9=R?2fcZ_f$N)9memU z`At#fFyP#vb~f!TQ{&Iv;d-Q?)Wl`*sq%C!H>KB2_4JWB%=C6#*4EkB0Q#hoH}LKE zrYNo)fOY)15N`8%9W)`nHZIb%YgjgG4F1SwciK83T0~@h;W5 zn$h4{2~mS+Ty$x+Xo_e;(PX#TkQ1v1i$2Xuwd4!ZRx1jx#c6%{Tj-;Ww1Q}NOnj=L zgDWGC?xBkwYdOD#HJ%BIIb|H%T%y)EEKw3Bjm4;yEa4^FhVr}odaJMDQkZ#lDX%<< ze9r#;ar5JzydQb$?ydZVLw0HoU&v{4obQ*Q4B-hzI+1pjS;m@04UK;3EqF`vg;>@W z#ANsiCa5Fo%gE-nL9FDPFU8Thd^?e<-8*NpqMBf5M70Ljp}amQ%sj#I%c-n2GxK%6 ziJMj(R1|xhb>mfVHDVe*69~kjfx(490P?-}Cy7gj$FCC1<{X}NY?2o|Y04BE03F|r z+AS(_2Z*%R)B{VSD;5Ov`;dc3#2V%#*#QPy%eaIa}eNUCVi8 zMv1*hd1J9`DfjZ-qjjrr^UmYOzL6@^8aZd%6$0gAT5wrY?U;@YQPI6W~obD6>9)FC|T%t@)ebLvs^?r(H~rGw7)DzVZK}4OAT; zOg;6lq@ISBK{$pV)e{j5S71F+i467J3fgSdZ=Fc(4){70pc}@`fx=Ly8#rm>i%_8+ z8E1RlwIG9Y=PJU~8O7ae-6Jh(#VVHMOiK0r*azbxiwEL%fq*^XFZ|iM?p{sdrcFLW><9r@LG49R#&F%7I{pCmeYkmn!S%WjSKO`uUD7r!{vDMl4 z5Z3dT?CJ{T!q@5^ojy-srWc~{gQG-!clQcibV|>TA-&PG2^{k-0fUTR;Pl3(mJ078>bjr zMC-5JGH~hm>d3ST)eIa!Ra7P5Vsxr&no37Dy)LSYjMCwWUyDQA)vBHPjo#11sg8jv z9y!imga@#6M6uqjjTOIj#rMJZb_t*yx%QhPex3*@FwKGWZjfPow*bFFrUp1S0E!&C zy*|;77V`D7#*y8w!s~Gl(F}Q>+$=5eG2c0y(Brcd+n6wzP%y6N4Vh6cArbg$;7aDSCAO}}vXgNo^IXMkA@4gs77vyULQI;(*f08uZz0sLjA zXQjs>$DZ*nQzYaq94kBNF7dQsJ)ZB>| z=?{Pd5Uk-l`8Vt7p83g<#~}>we)@dgU|78fAt~EUkY|ysyPX7M_#OP&GK80aF4fPo zz9N@LepXp5nZ{TEs6^oQiYp*SlHRGsh%$iw1E8g8)`8fr%Y({V@a32XdJ~jgnr@yk z6whfhN`F{1(1i=CjSy##RWE1ae)*RHxwR3t9#^1|s7o&iV|;*$Fya{?>?DzYurGb8 zZX%)ljW#Fb9Ob=yI3$>@a-RI7XHg=`WrDDCpvcvA`RZ3U`X`DG`g$eCF%g^1$mo1 zsDj*d8%Lk;-PC;Sfr_@)=r1S^y*1fEei;aa?|uhf1u>jxKgYfFK3_dGQ@*XTY&B=+ zY6;sJY#z~2IS^39wS=H-K!>M@)c^o76%g=z6TnuY5A28RQsQCc%YXpbst3h0l$9(Y zXHW;%0=$qPPacc`I?w`;&Qd_s5KG7;!28CF<4P-p@*E)xz@hEjZj_}q>h)IZQxm(ScXO?AzkYV`sGwh05ByllIQ5`Vmzj-L@L21b4*q zN8YG1zA;|Hj($$%9ruAcT-%LVMcX}j@#d$~f9S;V$LS|g(1Bbe8DhrKUArkr8;nr{ zAS%!VxU%FT-9o1XSZ>%R@fpDTFMDjA_?4ndXo&KFU#UdNS^JnGqK5V;|C@&>Z@Tfs z?w_jHxGCIf6i*OfOC{&O7k~k;*Z4&R>2a>pEaTU)B4@tnfZxw)DU@+=y_mt&#!Rup z&YJ*n&{jzLAq@D8Ql9LOAs38t#T@+8G}#f`VP^aP>Sg{{Z}b0-Ps&4ipzi_4z^*X( zRiFtFO<>QUF{?KN!dy?h9pV{@KuD@ZU<$x+%hKqDO56eO*P$>;%LC_fTE7EvrQ+HH zz`K+gAU|4fMiOK?ep6)W>k4P?U=m>Lg@3-IYEKfpRbegG`3mr=LJ zngQ4^ASU(5GWU-nQ~#&a_K*`ufLAE+VjvJ7fWqJYZqwexSY1^cy{OK>o9+?ABwEj;7g+ItlHSk=KP* zWSLg;uN)uZtG(5JsYaU{OU2f%rRV^dVM5>ULJxV_k>tyOu+ces08xf#n_cKy(;P_? zF|Oawu0KfKqS36c2>gm@RrdoQGtz1UE9wIP)WRNu;ZtNKhn>p-3<%c|+meCWgNDB; za%;h)17Ij-lPwOjMLVVeMRo~M$QgMQ2xl2o;I~^a9-!&Ua?mK?_~>a}&-m(0sjvS7 zwKqq-EBrZH4j8|iB^f5K_tVe*PTeD9N87k1C^i z#WEn&iI7)<^^i-vq2GZpxC|1MAA4=l3r`G#J9?(PDL!B2$m&0k5``3%w%Nqr`3K_F z{`;J_E!h@*f{Yak4gpj`=P_{{A@-E_@ZTOEm~! z+@AxJZ?o}u%0jG8Lif*x4hioL&=V=9CMTy@Yno=Bzq&pf^oDKfoC7-i2t}q5 z`b}|tzh&!?2<%BeoYv9QM}_gn{SZhWvS*G@S@c?Qk}YDD0T75Ab0FTD$} zUVD?I01z`v!snq1Xiy-p_61_MzkIDoC2Lv+gUUO3_4)*ZsLm_E<^{uQqhU-$9zqPh zDRxowi6@H1uCA@EsU)zB?d(!_Eu&h^OD$u5Ug|Z-bHpoYL`4WzAe;EKqdgP7*EU-; z(qbeo5qKw>#qA?q$O8 z-j)!bV_VALf8vazBrp+x#Uvdq{FP^DpLu`)CmHCRH2aG*Mr3Py)roSCx`A z&6i!Ms#S#$l(?chGZ^P0AE#-HXz6acjrcJMB2!}_#8G&V$r~ntT7FKbH(7P}234Em z=VrMD*2fhaGb80CJxxu#T~3lDTy8Ddb?l6pquk0|>ke zAbb8ya}a;P3AuoLeG}MOmDUgoV!--0;0wIOZeY=D#2t~Fz`*F{@FU)<|4k7Et=Nx3 z**ZAMfmrR=^HsAYV(iZr-tx8n9{ig^uOM~9tSRA}{?O8d-Q$+__xt+OBP3|#?PRuM z2OZ83O%;=>#`qxt4_N+*+qXAJ{Qp#l{J(k5Z+t@o7x8WWD#TVqzGa>PZlXYsc1Usf zXfqmF+VQjQK_C0_9sOk&Ry?q=2IFi($ebszFmKSN4rE3!?J9c~q3%UqBNU6{c^9`7 zs8jPC-{uJ_6-~mG7#x49_@#8)bZ&xpp{Q7MrmE z>EY0gL~Xjs@`l7Gw`I3OcmaNq%NP!b>2&vwa3uEGA%kZH7Zg znht>aV-pIPECHqyz-|fPVvXDWrWinyQpl%>#=vm}(QGL}3sE~xgG=*$Nz0k+oa0fp zsjiH^VNS3k^4*akl=QO`d$$CAy#&yywT1DGMW{aHlY|#E93i?RzRq(=P0heTCGHRL zX8)&EOH@UHtxd8-2iywaOjZevFasf5$<*OfOQMd~V|wlQY(H8!Iz#K0{_Oun=EhZr zlVyqJPjMx4;(atg?j?MniI1- ztzn!CRq+{Y#qtV=6Ftqh898$7mmoktf+hgEp?%D63Pw91e8p0GT+(n$WH&+gNe)l# z^{Y22oT#pz0vyW)|A}LbeiHDPqydcBXw-2;BJ}X4{^#+uz)tA4J(LzWX_){A{K0#T zEU3({piRIZwguD$3R#52K=coSE45)ksT%Ey;014TMO+mcCH2%bMd+r+{Hpv%C50e`id@wfVvf6_Ho6)@lx$r3*0 z3-nm|Y@eiNrAtb3__IYojL_<7wi`Qf57{`Y+G*hV8m_A*2(0R2kqrihWnF|`B8C8y zBqx!a9lMMDePG ze#2OXSex<8_?-kAtfh+r3V+)z4l|#_At4a^%sMNhgBLzO|Gt;WLHOx73flCy;S>wD z{~0*_|3Lbo4tj;etcroQfKS;rT^%k`xG@zNWWyX)iqwu>5^K-UcV(o|qT)YY1wrE> z%)cpCdYX|$k$6B=HQw!^Uru+uHWj1pua} z>o-LQ&}kv9Bz-`806vFUsM03OLj?wP$z?B)J7lO2>gzTDnYII}A(TvM5b*eFtmZOx4Hj8x&dw-*Cwu@ zeZ*6BOm(zrbF4M-;?M5ZrB@ftDlYBKyrio6*l*ZLaWT%Hy5pZ{;uae8L{73|5Fu~@ z*W!5}rdC3-Vo~+bh8+|2wMFOX)BP^C# z-Z*dF_7bax$?g`THb}bIjimsBzxTxQ;WF3wifOfK>Y!N!8ac^QcQ^ zFPodsfU;>$g?Xu`R*u^4nG$yH`*c(9Cl9OU&+M!T{ZL>%5+JD&BXTr-GkkbjlPilF zdnS8CisCysy`)KaJrz&!J8rc*+ucJyp`C#2e`@%F5l+t$|*0D z1={R=b{E@?Ba?REwd8+`xK(r4& zDv0KJu}r(z11JaF?p$=88-NDBno|g|Vd=^5zs9i0A?4gY;~Htn-222h;6>$DFPUJy zA%N{}TFe=0k|Yk?9kTdZ3KY6g_*`35$W~HqF<6rP>+!c!8)v2O5PKHssqJDX?E;1H zqAAu4!ij{sR9x%Z)Hr5?Q*mw%$)AHl^NZ{h6(-~)=I~J0AzLV$0u=3U$UUr}i_w&0 zv$mU)H`Vgd{poDjsYg+|>6fetT4arAP~@AQ@F{5Z0wcs~Y8?W!Y@=Fp3S%mRmz8pE z)OO!A2+tpjAMT49%pny(d9sGdVno!#krJ2)P^yM;pW2(*0hSzbHIHx4*{(>Ly!ys3 z8IJ)ot(k#G&5ra&z?B-46#6ywX)6gYuTYdTYEd;l`TRvUU(Kysv*by8DpQ?0`ftfs z{wV=Z|HI0qKWqc@MiU=#6^GKr(axoqOpcj6P-*TA0AOhF$6!}@+ z=5n~#RvOGA`_L=5c}iw>WEf6~&p}rQZ&r4U1u{;p53aFd-JeGl&)hvuId#?eb><4i zPR)+ySTbsJ4v8MeliDuU)AG?^KGjwa<XMh-wb` zt97Y^O)1Ykr$d9|Ub%E$z1UT=lelUEX^UaDHM@;3Y6Es}1!+)_L>>c+qAZwe)(@Q{*r7g zCdLgmFf`(pmF4E9mXf+HDlK^n_`}V8%k9^A$!MTy^*6#Y{{KuKb^#s95TaS17IQ)=)%n46Wg8@KT-pkUyK zzz?k5J-ER?H{?iGS>!{(q#GZvR~` ziOJsnUwY{=@II-*kImhHx5_OJeEpOfd>`iQ0o=NCi{JW7%2R81n5Ubi^+}S%pELbw zs+`(aDo1llEjJ--kKE+;m*bEv>mvZXe&* zapC?;$tRb<)bX;jw0^3356G(HV)NGoRX20rlQO}|J|3z%9_Ai@eq2?@ocpA0Pyh7Y zV{;D=Yd7bUf={xl0L}T+kElp-OZ~aBDq=EH+$aD3)Ls>_+qZ$~{O<)AXj_~N&p$n+ z<|HNy&rl(hMqc&!fY?Ip1PiPS|NKVC~aCD%8r?=ns};zckgJy_h*%I(pb&HN@XX9413lcQ@W(h zLGgBzI_{b?A=;6_zG9!b#3f2aX^!p$-%!zUVdJsDJ=#)7CAeefe?ZscR}r!6ch&s{1;$KJ?>S5thU*#72W zdCUzJ*>U!;j7v;hus#3c?4Yl0et==#1YyYHc?7mqoF)5B06d2( zEpntWl<%98MnYj+aKme7|1C+4>|sk2YHpH%}<_M7CZiDN89fkK4(g z$2_4K`+Q+*?_FQ|Ql_{~cWhB}$P0z@i;GC|oq<&PQq7i}+ciTEtj>f~T!|Pc3~^b% za`kyW8&ux?=JK;xh>GxH%SM-lr%>AGQl1nS{R{aCLCe>s1gv{vndiALhzIkWda_*M z=GK<#pm$WnaaM*Keq)z4=P=Wukn<#m%5- zrIG?eeu%VwfqkRelEHA>ggaKy`n9d^{rrNU32o;J0n<27{o*C=rM_-nM;gnD^3Q@A zrme5vQZU`mE<9zqTAI)9DgfgE$*7L~iR*CWxRb6obs_uCnGL43)Lc%(g*vfc z#@`~uUM^1`k6)EC(72}0s2(S#_=s6|tm3ylLr@KJZOGd$m~Gp<7k>S{Tp8^vTtIPb zbs2XuJheiyQa;Qy{+)W_OS!kRA6R{({O8Iwq9dDMfByQmonM_U>6ty_!TMYMdcE4& z*vwKP!%Te+>GButdL)RmR7iWFYx!I8Z$r<&!MBTCf6Dnkilb`@)82%qDOr?{iE+ak zn?Jo+yW<-_W|wfq1Nv4c%Y+A9YrK8=_EpDH7k88Ekkk9kJG?XcCXuu&s|rK`t}_#- zrOz%)ekpnro{}3|`||Sh%>~~D+YhhlsAL^03cPAXXbt;E3VGo|%UYB(>qbpquZw?b ztj})uuAaKr{-QF_n4gb}2DXocFng=k9gg-6TkbHb@)qbf{(N4QxDp=Yo9TFwDaKmV zX9@TJu=kchc|^;)a6-@!ELd>&7YXi!;2H?-?(Po3-QC^Y9RdV*cMI;$i}Ovg_r7PJ zy7#M7b*fI){c-vAGBazKp6=DN7Gbg((Uu%08hS3Tc_WQ%diV;^Hd-e=U_SJex&xMBDHh!cqx<5;SoHlk{_B!uX-^jt$ z#BXdK8pQ@#?7UtaEH>whIJ)O$Dl@e-LJ!8=dpRvuIfI%*-5m;JW4Jn8!xodk8%p&# zovVGpnyU@}#dg&$FLm<4_bs9)c&0A$MxTRaE0zm1CmvwyU0w)LX2e;UZ0BW(E;QGZ zBZz3dBjmT1Nr4Mjf&BMz6fE!C-Va#ZMo2{<#Msx#|J^c8Y=H`3XAs>VuHj zD=D8^k3SRH$N8;@_b(Huq2Ht>Yw`0P)z8L1&N}uO(CPpR?P~<}Td1vD@zI zFEKsmqHHO^gpqu`0ib@zG4jXfGzTlErJXW^Rn z=m6!4&ti-D>pdm&qXMsV`#sanBNLue>sJo`t(U7Z5hpxyt$I6`@03AvB$P57sD+25 zW1gJDaBF>fKDD)&uaVxJusiQwGo1QWBBhtz#|!KnzEF$yr68#wop5S6`?SJBecn_# zhKzSSSaFO%6y1Te^Bi~8pFeqGeWxUXcPU+UdrdYcr}n|!YkagGi=UD73FpYg1I{Sb zxrLKDsD;ExCDJ^)=~^0(z-k*=uziQD!i(-T`^)&~k)Kb}9rhTcRZ^|iyq&d$u=GS- z^i^W9W<GRGhTd| z^xd|nGqwsMl%m3qUOR{3OW7V#MGu&i+mM~UN>Itpo!@&=pq+e$RGs%;e$7j9&PuyP z5MpNt`h-2n_M!~6b|q;XzAijLJhdvUa(z99O8#!+=QEaePG7bs&@0$c;^b%R(|X5u zvb#|HHC~vKfMAiSP&qO%mi;D+v`${HUV6Q-l6Gcl ziUn_Q;pbZd8`Cg`J35v<_%b7bLHiPwdYIfCOAbv;{gdC7lGN_iym#G#CD58lNn6Xh zaz_eSvbJr*uG|bb&LGvomPlFH7^(_kR3#x_{NP|kBVV7fyGHd+3Qd|ejYBStXe1%j zKxSJ`b}l!@vAh;I7`PbkX*V?Ev1Iw#_DW^ug%~H}f-a?W3>HnS_-`$t=dy4PP1h2k zLlwi2T3O$?^5U<$78_%CP`}PGJrna|KB~>-dVjk^O1>`PBty&FUkK~e=fN;-D|STJ zjEnY~@OYQGsDNM<+_JVp&_-H&Ei@;WZ4}&7)B+7P8I|u3-ZJguD?T!oj~ann@$kKoDT15nEj{fnawp{saxyI)f{|uv z|3b7+JI0N`qFf2|DoYTlv^Pt3-lQNTlAAO3duU$97Xi-Htue*D&jS}zU%oH1GKXL` zXDvnk2Xs71P=KJj>Q@WHjGE%TcvpU_X+_`QLsJ=Khk{BwuU62>1!j``l_4U(*&}~F z3nfdHWLi*|-|l8S zY%-UdWq6sSaQC$V%1ZkM;>hMFcUx-Az1E*<)GJ@?qm3*SBaU2z#Af3Bh7EE>T=bv@yw?J_x?2Jusj*-2uz zfl?kgkK((zAs(lW1u=!8YKH%0CtvN9TSss&$j%(_+>o=KS!nxW1YGsE1Zm&*`&sF65%`k?W zSux7>+)ja|?YSZ7tO=7;uKW93sGm!FQ(PXutXIH|&t}Owxhjc<3_NR6uWL9%C1&kM zjI}JnovqbCYDNv*3tm`2mPw=kIE6X_Zy|&HA(wX!KA^M>CziOq#t-@)+1xtYDlU5b z;;c)cPX5>HELrvBW~W;hw4HJ#%I?iaF<;KB%vw!)brNeriph^JiU-C~NP-B5 zvg&V_<|?j|cZmm+gakp@%$yThDUdi})^_4R!y4#n0{Qr#)r`yoe9Qx%nTz0zqx6hr zP$vlcC$h-1_#?9UrM~#$3izh{faVB*W_gQX`vJie0(<)t_6+3zRSk4}ktC}$8Ps?9 zf}mM`oO84_-YL_6s<>PW2mZC@Q^wM6*KRT`!5QzKdy@l=@VU591vu^6+QCfQN14Ol zfx`TW4EvZ$t*uPygHl?1V+HA~(3Jv) z{O`Di2)l`QrOXke>$RJH@^UrSP&1Gxge4;xHl}_a|WO0Ox=J=sAa($^of}IvhdYG~hLyh4)1VX)7&H zj}J}~5oA8I*S+kf8z}=fErwx>L_`R9aPs^;EJec(UdyPbW!Z5lt|r%5CB9hrmbr_JaDGumL-~+>Y_%>L<4%` zqbeyGXhuv2LT?c+BdfZ!{WyIG4}&D^TVg21q{lTCA6bvYWSBn7v@z2r&sl%9=0M%T zQ;g-ufSZD*S1Mu?PNh{;HLtEXMz^ZYfMnT9PnHf0U$XyNl_b^Y0x#&>MrdVS z@l~vF`oQFKlHRn$nm+IleQMuzC815H;rQ`8n6114QO!?ps0W}0L#x?l2Vk4qtNIw3 z4yg{X!6Ddga^mEPPpHMdU(*I!LLdZ>h;YInT)sv49tiCXi=Bsv0D;0RiiZtJY#hbO z3@bQ6=wOT-l*NBIL5R%nJCn^%=mT9W;QIygzuDl_fFJMF;H_ZAS%!2$L3)vM>Mp!0Ml=}OftmpDO4AC!4-`w6bZ@5~ZD<30z9AIld!gzV%`}(;0|SdU59(h z=HcgIafh5#Zj7Vs{*x~iug2=`P=f}ZAq(j4mwW7u>n65$E}4lV^8i;jG=a{a&Nh@y z09P8y_}7ZD@r-4pAo>&XMVc5wpzpuT5#IWid}LP)fW8m>zua5??+zRmr){<$kaN5h z0rt$B?mZ+$=s*4wyYt;R!Jq%n3#4iR_v%pXiIvea%-0Pqr`7h$wb#0L}MScPskEjI<78U^}*XU}YYx<7+N zp>wcGWcB*<=TAaB%khOduJJ11ZgN`7HEUZ1%&ExRU0|@I6LSUCpk$r!0zwYI zG%^e287#uwFEW3c5^U8aE>5obsmXdv>*EH#zfHm6w_tnO6e-yBbi5N>GGstzFO2HLecSz% zmTw{*C?w4=)rbgad=)>(S1|&M;9v=Rvcid&7E&jd=jAdA{?VpZW;ZeF`UAhHZQDK$ z(4?za&|SKKuREaygE*|BaS*FoIcsuyK+@gzio!p9qlQXF(lIzcrS)#sh!01Wbf#x?%W zJKz6zhyM{w`+s8n?}>E)8x4&J+kDX9s^$;Z36~DllsA+Y6m0KJ9(KiMs7$o|=!-M* z^$<0l80&;e2-~!3(11lWM9OTF)OR+%|Ia0vdz|!E47U2wAJOtpDj!tnF}@6sz4Y9| zwhCw*9HEve!Dcz2RvHDaVj5=Xv~&LG-S9AL(%6(pRIWtO{@iq3MkndVjt<#GRG`r^ z5twU?yb*AY_$e<6p+@u5Phyk>o%hc^JV*X-K_9(a%Un?qAQ(`a`Yi>0-yB0a_6rAc z6X~}z{176pq5yak1KOQw8XN*d73!TSH#Vd;Eb!AG`t8D3-#6yj{BIg22;Zm~Bmbaf zhW&{FoQD7ZKdra`U8qv|LE8p)IVH-IpBNqZeC<{@gd>4+C5`GEz3GVY2U|wdFNL)}>%F6bB-|ys@8Jr&tccMO_+Ij8A^4%X~@?dqxce-8Ld4Y#2 zD_&-YUw2~pu49cd+`Mm?wKZSwpVptQw<9w>A3C4U&EAcoH`A38ZKJ{}vDjA}5#Zw5 z)94sG_s}{$NB<${OPvlqK}G{xSopUe5D=hVy#+3n_yz2^l{(MWN$%?1DC5jtE{$F) zp7=JJFO7CzjCk+Mzj^jE)#w~a&rSbuc|MAu)$0-P^?m2DN~=I7@msPbYCM%vU15Hz zx}mhRRP8N~$7y)u>)&Xg#ml^^aSt`~1*h`6+@A;YjX?7e~gW2o; z`c?02W1+mP@a@&ZP5BXwTWf0z=Q1`;qCvBH-vrWcsd1XpqLN}cVGlXC^?-i_30(8_ zEORu>G#_umEslg$zP;PMDV@yNfRQ z`v)qT^&DO@l0gdqa@PD@EhNT~Qh zCIPR=oT2+C%HSTpN}!X~mGMgejjCz>)qEw>;mZUdOOj7Y#$GnL`7vw?M+zgAM;I%@ zFRm@*^$)x6Ypsp_jrV>u#E*oRsx|HJpfz!uS^8Elj!e2zsr$(0(d9z7W)2y-d#9?-2tYgrs>1j$kF$qyeZ9-HQc& z16)qq5^VU{;x92+uh8Btom@v6Ml}HT_&z^Ik zP!o(+8}TmZPX6yikvE{v=K?~{-_1$9Q^w`}@J!{pvJ4!&Pzbo+ zhCHoBuok#$#1>dnL>Nzf)ASjFYc%_eqQ_O|O{k!D;^+^+;^9_sP#?78Zo1!K1pho` z052N;(@TsnX(`ix(2o9T=ltLC3;*sm-Y;wa`0EpWfgqQ-ZEy zf9eFBgZ)xLx`;hQQBo%v$w)iG^6h3Z{TuPt?Pb-JQ&^A4^@7v#SMDxX?>9@kuf1Os zbV7Kp+fPf?+@J%v@yDw~-uC3CHk>?=9C`7v$URyuvX=~GeMPi#cGhP$)@Q#Pj-HI( zpx^Dl$HH26@5jgeS+qPde%k(AaMMGAKOWUuS)0wxHJO8Se_mUYGFN}}0Q|)>Y~Zif zY<)OVkzuMoD?kDNAdY>{(_#Gp6VTVNcF%g`@OCTA*=`I zr})~knvUlB@^TG0JPi+$#xz47cvEt)^IZ9fjQ)2&AK%r7bv|7l4znyj~ z7sIsR=UpG@c;cYGq`H_@=h84!shNbl-cLQ5ke;{8#TzK75kdfz?@Y38pnt7TxmP)V z&K5ox0@K)f>#ASzFA|aA-uID2n(g(-VrFvN90w8GwIGT_q&pu6v+)}8pu$=_G*jTW zw$(#!xn>RGW`7j}qtizizlmesLI?|3$HdO;fwFwlo9@PZ+`O6o*N$)f+$ymn1m0T0 zb`p(bAR|DmAa@K+5Nw8btI@u(gngZ3$V}7zhjC7qA>9*c&cVM^CWUA<&*l>y|7+44 zYe^F@xn-EpRicoNfzAE&|6l_=I;ReQFM!P8`!DhQ-|hDQzy<)gfBtK=ca|c)Z$MII zh|?Qq$^ib$HeHJwCb@Bzzee3Gy}|IUb->a&wOD94Iz~I1eQUgW&6P1_FS76U#OfH% zeT8@g1!24-Qs}v$p%SHwvj z-1Zu1_3)j3S>!faX(+ipmpsXf>`!+U9Z${HhmV$rn3|m(;;p&&^B}oDi>+m};oT*| zoUJ=77i6#1pI8hb1}8K$j8$lYA4VHjoALP~Avav}?B{jWhB+}J>Ev1sMr^)?LNJz-+dsR7rUz{`_+_r*o`S^NVJxSZfPdeJ`l5aFM0Vs7p<;Rp)Ob&DR?A=1(6pISI6Rgu?Ilr#cBby~Zo>mRTcjo$6U< z6cvP5SgENM%PDDwq{C|i+%Ot=csY2OXecNsl=xll{f8B2>yg4No`*cFG_-kopi(m) z=1$lmZyOXVL9`>|a<*UOcXrUx5)vva%uZ|~Et+p4@LqSAsq>6XAL2c@PMaKt7i7Mv zJ*Qkwb^EjpqzX$*-%f?i2nO~dKZr6@4;eRb{Qme6eOFR^aDb-NRAq0m>7KsL-TWhy z9KGfG#;K*MMoKMd?~c5yATx)?U@=y+(2jysx<^K}lp5m8+ebLWRnR)V)EqDG_9DIQKzql%v4(*16g^w@=rsVV&yuU zjfy%;n@d0xENh00`|+8`2Cf2iz4(c7(P}j{1;x3A>nF|6Zk^5hnT9+nni@^cFFSf9 z_)c0*B66c8F)L(Z7ml@QbKMOe#ON5zeY)OT!OG5HjaG|EgeuK8I)Iz|rQ2AG=RVMn zwB5I#_4&4K7g#O*lC$bF?r7Z`}qoO@t>@;2{TOvQcytK7> zflKzVN5kg1nA|QhJL`LSsw^$cG=#()P1|OR;JuKuEq#Ex!-OQixRIx+c!ir$JdL9V z=oJCCNZ#i|E`s4#MRY06a39pmQBCJPs|@Zc3(-@+q(meSm>4 zUESZ%&HcNpBmZIvkWRm?U$qVNJtZ1Xcn2fT?85Re+4T>O*Oimfu`>fITmRJl z07W?eD$4o%w=VX-F3LGhhf|kVcN63{X8(Tg5~U)xz`iO0ba2i zZwDvabr|9K`xtz8NZ*@vGWa!dQ#~hr@jT!6Gr&SJsgA~=WLf2L1H@`qOD4j2?x_8I ztb0)dz1XW#9(iO%uxeybv{La)*F>RHVYA($=dps5me#amAx3aalKe3-G`!q>0V0z5 zfXytbrsh){9Y%bw_T#>1De;BJal>}fN7l*fuQi?9z?T#Jh?A81GDtaJ(`xAv>PazK z%*|_*WllZhF>tzV&7bME9*uW!xvU-H>g7I6)FoO3tw2GSb{CId%9J_?rDs};R)#It zc=0cMFrYML71>@o=2DaIE(<;FIB#0%=qs`QDi?HT7o`DGM?ojRWHdM5HPL}Wx+TZ_ z0om6|3Qu=Z3;J^U-A`d`)~Hu(1_hpb>Z$g0=!I6BDI?oY#f!1u)B~a@YY~>K`8h)2 zW!9}XxGO@)_s2-4xp{)Ik3^t_WR+vcnI6uXUPR%_&im4~;(p!E>@k~I$9!u%SsT#y z(tPPVCK#?hBy~KZ#&QL+s zqG+nP@bK^t_SG|cG4*NPtCQnh3|8>ZV!}%DuF86B6BR&L-wTsZa~sL+db<>J7NPVJ9k^*5 zdum4HHH?mNcF~w-Pe7H?MtXYFI;kWTs^#B4H3fK`Mc#;(i!30le;T(FT)eL1fSGz& zgdRR=0M*Kk?{v)_q000QoaO)nwQEH*-;v>U_f&Ob(^e3yu(##i!}jYEiKq6!3Q$w> zQ}$_tHI(M`L<3=LT}-IT4RTr>9JOL|wV8U9qb(O`6R3HaLStv2b=}oN{c&>4Hqin!T|7VaBcC@>AI!r#%)+c+HrG3JG5~U! z@lqJDZ$w**NCMjY*o}5H+kR+@V0GK3+f*)?Fq7g!atzx;L}*}48SSWD-E|v283W0g z1w9`CLUi__1Qe=klxFKTiB=5I!^GA!JuHoP^L`7N12L;R3!qiNco7>S%U4S(SMWy} z(*rnrL7YRKpZOXFg(e2lbv7ihctcxoI*@Nf7GV$ zlgMx*G>70NKFA!JnWn!935Gs?xl*NX7P+;GBXHWliItVLAw*Be_eL#d>Dwxu(|tc< zl_~R+ag+cW(nKxR1cq~-2QL`#!=sEj&}Fb0+bN*d!s_a31?H>KHYRtEr~Wyb9XcqL z0Qr8ZR%b7_)!pd0j+tJERh`Trob{yR927R%CWnoLD82-mO@cdvr>YOjH7AxlWg<}yjo52;3j-*uc8TVzJJH5* zRFxa!PN`m^<3le$Wpme-ihUj%TER{@jK}E(qlcZ3n$vRxktr&uJdrcY@Ym59dVqv=pG7KZhnB;K;H;th+Wu{P31sB34ZRcMzqxB-R zS_~J4y^*v$wxn8qeaBSVT1|ZI<^Eat;4$l3d;7A_RKs^W^+y}hjV>Lnccc(nrR!|N zz@u#>t-gN*WUYp7Z4%_+x8hGc{KmC&UY=%8d6B0?p4^oR$77;RCDpNN2?0BVt6SE0 zYoEH&_qkv46VKl8Pn!8~CoQgT83k%Z%jfCj#?g{+d}@XyRLVFfdJ8aT?0a1t4z4UikAK_Pd5YpLUln|td>@qcjngeR zhWGG1IX93Vz4kFDMypaT@wCWwRLQs2YT#vC!XTBz7N(4wC{nF9EVqLOVh?v?bX}ie zy$*C{ml!VVeo&QF=3~-eCNi%1!?0$M&Xsr%;}i`e%}!3wFTMgshGEX+{1*D`jm9?+ zkK6B$%ae8;b-(z@Sf5Avj!qf&79ycRajo|H@nV@_%jP!liIAZ!{{3P-{5Ip95cbnTb@aXE`^2=uPF^L&MQ7-Q+bHLGAy1|F#YIP z+TIZuEmpo}Ni8>II*Htq|IX4(sy)jc=CYI^5Ih(3Hw*v@TLodG1H5|LV5+a zX44z&(dC9ll_OG(2sF*}n?xLqsL#;~H@)H>BH{VV{O?^M%I}lZzP=!H;qy@OJ?LL1 zM5q3yHRFxUUk0>OE}_z;@jj5gL%x0pp1$ouk%zgi5g+OE=JoS#Va$CqKT*5hbe>bPYu?rD+^V${wEOytsu+#dX$DLPwq_0 z!E*GO&daCa0uwNsKbU8bYAZI3?CHKLP#|a=S4$Ss)gmp!s4a|79BEGi%91D09uS!m z)sTsaZu6!a>Zs9&)#m*|v^+pLhFQg%m) zO;hISY?0UEu@YWHa@u!`WL_y*+jr;e*xT>RaJUOQy}rlP!ezId;w~JmJx=4g!J%BK6gcxF z?#KYW??^vuGpN`S9*+x!9-+nW_^OhvypmUZX#v1*fR(5@*Vtm+4)L(|VJG824Xb^~ z%wP^GW@VN@mWVqf=T!e&J&Isuu2L1K0s=cbGk7LB2B?=SBPNLcZn8 zYH`Hu?3RWxhRdtRs&QSv~-nWRx88szA2ZXZ@nG&8M&!0YI=_2Bae{w zuW+k8)F{7f^fnsOL(xm98v#Hyq_?>bCxl(<=}U~gzx*17>EdAPsW97LnZ~HlrR=&D z{AH##7Mwc}*@*u*NxM)LZdvO(n$jwumlyaYRaeF&^ffmb&POQm%sx^cqSj1V(!~2p zrkg|m8z)AAE@d?mMTQe!I%Rq;PK;Av3zcb`>M$Fvgh%q5RTjkL1%(A-6U8JFs|)>N z?6!xv-sguxL=1Gi7!4Q|A&l_PJSk`TEH0d1Y})59!g;-gc9v_$sY4#6-_h^Aqe370 z?Vr+;!v*0_N>g)_-)hDK-rK5kT^^g`dPyT3 zZ0t25fz~~i;aS6XRmcP&u`r$p&Z57HaAJLrN!(RUtDI1+A|BWDl~$cgVT3W|w9L!| zBx#&^IIl6?`wGz=^ZS7C)V7DdRLf19t2EYJp)enV;?Scz|6$XP7va@_v!V?GacMsi zl#L=0U2N=O_QaHv?p;pHuYT0@Z9iy;ZPzEap6GekRNn?I-KAe!x>wm;k3J+TEUaK5T0r) z_a-jcey)TE2FL3TWz}JaT0ynW3`r(&)t@?L@tAAb;S^;$E(FwL8l-X8B|kchK00S# zMJW!=sn22{oTopanac?#5HxbYVo3U$7J=I%5-0tB@Qp_vb|~F)bs#SyE}IyS8)9Ia zgE|_SS}+@|54xNhOTu`9uHsmAcn@^lEns49OZWf$i zKT^-1auKhgEj8z?BpJ3Q5aaT=1*fdZmqqu{DihC<$;ygB-?_)h$08A1@-Cn}8Fx4# z9ib2-{*+u5gDjKQGWbSB-*)}+l7u*DCx?1BK1IwP#&h~E7axAkDj$v4csk)LWayl8 zeS$dan<(9V^=qTOg&y6JjoZ>KhX1>5MoUx-&{SH!j_-=8DfMHgUm$UeC)E+S{ zvI74lG2mw%f^#+2_&0OyQ56V zt+40$GFe9c4Qa4d0LQK2WJ!axbSP(eb${zeHR^1wk=I0M1grUq;7-mRO?rIEMuIBB)DXk<9E5Y>#)S3=Cgo1m!w`{R3@27++P3EO*SB zU03vJDPx#%3qf|}$b^35)j08lUBp1~NKIkm(L5;xPLMMfu2FcK2wnc3#%{2mu^yBnRD6fdI&Q+`pPR+*NJR0yh5~K~ z6%Q^)v{2^(tk$4<_*=YCRK!uff1iiIV)I2dQ2Ma=SntH5Vr}?N4~<;kqX9^DjRqMZAY@ zo3tm5GF*hMu~lLtRplfp#)DpJL%R8YzA^SsYpu`{X z{ewNCVfO{RXGQHkT^<}aV(r~uIPyXb@lXfJV$ z=3Hv{Bm6y|@w8%gS~B4%X?Y-2sA*c|u%S3SjkER%?(618z5(@}GI^pX#Bxg$L4&W>ldxj`;K1fd+Vq1BIuIGlk&O8cPIGtfm-U^Y)B_1!IvE>_6 zgIr5Cco{Ua(?~+ltmA6t3*?kSgdcAv$9XV;lKO=7TN6hbap!}8aft4V6zGUl(pBS> z(d&j6{jr}c*#T6LDg`lQHO9Gyw3Jtr$eNXMN+T2$fYVd{z#$~Q)Qo_`hQ;LdS)3>i z2VfB&5Oho$sY6%}^iXK_2WP^;^yJ2~ zZ7#expAI~mMPa%>WN5?Tf(j4+Qg+ez{Gk`jtD;17dumTLm3Sd5UP26^Wvwkv67iE{ zBj9sW^LS>ytMo?DVuPCAw_K--C9<@9o6Y;5HnEgQy4gj2p0a4W01|6vKM}n-43*K5 zjT@QSQ@PnWG``98OEg3h+bqi&eTW08mOA2DaHVk@%GQsTy;&}z`t?HbQ&s|Zgqq-w z>SWCl_0iy~Kqr#b?9Xixp(ZZ87nrPbTt|u1!!GO)p$?s>cjEz&eXhaG>C+H18ZW-s z0reyRqc}`n7fCLm1?6>eCfQsBHzI$+1ch5R%>&o0bNlDg z1L--8*zeyzps*FwF15w3jZv(+3X6Nt^?M^Vbz*;Dm7Im-lEOalB4_-30Ta@fMk&_o2UC zrhY7iDwL*EPpotU!LSnG?fgGBC^UdE3nykKuq)@@H$TMp37$^?i#g{ISkBelQ>Rvk zw+N?#wY2wbqYXeR#Gy4RA)iB4i<;!*9j~OuJ-5nTdkRLE2s{EfAI>9_s3QX`^7O-9 z0Pic|MTQFN2hDYnZHa;2bN!=qNTGz1^xbuIin9H&4_RczLJ2~79GJr^f3GT2Qc? zCuf0C{+KSm!%|?4=jJI=dBv+_M-Ot%N6Y8cGAY5od7RrLs8s`P4UCDZ_knlK0 zRn_Gt{gyB70#O&Dk7Dms$PS~_Ql?%2w*9p?J*OrW+&p|um*H0Ny)%c0GI_E1# zX<&c0evf`g8mlp z;vfI@;syqoTk$r_3#VNLJphCI#N*~|Zzl8o5x+hED8PNXMqY6=>W4D3fhdE;Rl^C3 zrtwhC>~B!DPln`mC_1U;4v&`H7eGFw)z!q`2A&R{3U%C{#q@sekfGfHJXNKQ3uY=60>WWN=<|#g+wg~8(2yZFU`&Gb1dW~x zeUOXkfwbS7NsSgGcsA;ErVZa#IA(B{e_o0}jRrzV6r;PaMR->8WqdTc+mCN|Ib832 zDt|H5g}hZcLBbV+%t{{uJ)m+l&Yj*+F75K11`o!1D^*n5al4Qjt1Dk~n)s9UG^QPkW9L|rkRtlAs0kxnb(&ryDJ= z`)RZI_BdyPRCT}d(rf(8dv|LnPUaEQ*<=$J*13mPZ&;uwf)H}-*WjQM2>RZWPAxq?gDCcahQ zAfE7_*Bczv7o@{*2>PR+NA^}#SI48;1rOoWu}YqH$1C_G2`z>hjpQWcj~AR|)Y0@V zXac$6K10T<@fNOMbi)7nnl*`tN?uPP$3`7JJw2wZY;x13dEwK`_UVL)qb& zdJWP%Bx9W}f^iI-{_J5t7|NSNdGz28$>B^0Vj5D!p6Kg=_|B_&o4BGkFpGkzB zse+bt3qH%zm3)vy=|5i(BM+EZ)5K~t0Am69Usm7Lawp+EmB4K}0~OVODLEm6`Y3$j z0`PE!77+s{W;m2iRKru$|Ga&Ek%<;g8)y+P0GLu4{RBN$UBgA@#Q$#>>`%ij7q$TN z2s%I?3t>9^&0v^ip<#`Qnz|5`xKZamkSWz6V}H*amw;p7UlGP2)P$BVmzAy<&`Q*n zDQ0q7-wFdc31G&G?a1Nc%n^^KF|t-%@im?w$arS9L?y0HFG!ly2taXZ_SP}F4m&4q zEA}W2YRnzxcQjBumcOT8pPOf`n~(W1zUOM6bUbDF>#)nLXFkvXPn1eqkEscvCi0Zs zq2EZ($szS@(M<)}{hQ+}o50bZS-+TXpRE;wB;?no8GeRaX>USlxfQI(t*$Rf>Ul3Z z9kk>4A!k7I#w&qapW=@reMXrBena_(%^YQPUjT_;6Rsi6(;CG@*Gf*7ZVt zU*jvu@T+}S5f%-Z$?&l%*_KDvFI-38hg7JLnIwD*^~sTeY=g4TgC z`hEX0TE@FXoI_kbog=J80;p7z554g3vD%!_*t?pY2y9HK@T|N=RDr32ZE8J-qb;n* z08YVgi)qfF!|!9WX7?bBPy^fSbAA+NO97vHjXV%pcKj-phqCpnJKOsi3AsZ}gjbUN^PWao}2G)NBq z3=b+ITs%RCHjpV z7PiRXMH{2#8^PD7M}p?Fcmq1squAyxdyJ6Wsw43AFWJY9GP+&xv_wyuZbX1aTfV--Lov^e^yuOhn&y-HKJE6Z~*Eq=bc?AkxF zT_+emjcs^E#{WEmuohFBXZ zkf#n#Pl-fabJ+~@oQJ!W>2qSoEW0@Ohi8q;5{P+(I`F2TD<9t>9@9r)+T8UMLI}va7W1Bz>bs!qdn7IQx6f7ly4@Q zg*n_wIPYF-ge%!C^EXIR5D2w7ljMur{{DWEW#s^XNtDVwY0=2)ZkBd$C?wu zAw5L+6a|X&vByFD)C)nTlA)#l^aVjezNJmvQ1(Yx$1ihcwV|<`87geolhc=N+|!Wx zZ{#;QU*B;}ZLvpg$l<)k|V~xdc3J zCZ}t^k|eZ_Dq58Dm8dAceiu2)fsNNB7xRB9no3Ng`9@Hli9B~WFV5|&`x+tjd9*oIQXnUXA15Fd4*F836l zjQ$XUgL|Uibs;SnU5xz+GKJ*Ph)kG!`Tr<;%cv;3w*Ma~5s@4Qr8`Fuq@-);Zjch` zk_Ksz9x0`pp+P#NK?Ed)Aw-c5r3LB!Z?5Zpp0%EP{oedv!D5(m&U5c$ANz>!XAk|+ z($_BueA?%6mGq^DG^SpXe?KobhxpX2A4k5;{eW($ZhCy@9N4$2f7zI>Aci98p!df zEy=z@?(}^S00x))C zFw~D+^_IufZ{0n8W~Fg;cxa+s@-rbj8m{EbNCjgzh$(E1H3_qR3B&bQsYoNW2?zARe*@V+%LFs5po;|HMZ zc`TPx;}T;DJC$g%@PAN<~v2wYF0WMbA&!F!qc?>c2M+^%sWcz^EE9K zT0iM)f96*&%}C#dKUtSm=)>mQ%?*jLDwm+F~c4>IB2FcJnG%G4gb zf-8Ohbgdvtg-}$5VV&?GbZL{UtmSun%K|OKO0awiX6{SB6<>fUS|I3|u}L#M#MF;1v*X$dZD~*Y>~$ zd1}Bb-~meh|KEfTFZ62R=K5ratMl^mV3a)WTCOzk`mDIeot}Z=_tz{6DAXz*wgg}O z^-IiqFL%4tR?F3uhiCiuZ|j1?8}N?6n~Q~0`+~zTSS+lz3;MGw@RgR$5wGpZv|Y3UG4o zvy?NI!zR*G$fR1zv{f=-(8>5 zGo89?$ z#uPUU)i7JTiOs3rE$N+wk&#m@XNXRceXG7&DO*zd&Su5#$2m_ zA?wBQ&Qr767cX8U-Y6!q->b6!_TdM3zf)IvN#wuQSr*-g9Bc8|iccF%;vj=SBD(+< zR|>`n=VWhBJ?f_O=4zC7TIY}d=42^J<@Y@4yPM^gN7JS!e-^6deXUCH5_QkrQ;ybA z7$2Wl^v8dk_ql%qGim$&y}4Ep8YXsis1;^-z{1N52_6-{xtweD(pgR^%hwD%=?W_m zMt%F1Eaf!U(%|-6^{CSIHLVl`Dr}OIgIquoPsJMXR3}&>=WQoSXuMxQz@}%^1 z_T^V|Eu;^bRp|KnzYPwS*-jKaHmpDW3zo>mt}yP+{ui1Qn8El5gE}xAjrP+{;G>rz zGJWv71k@iMmuF{ZX9;^@|KhV9@9FE49gdY=ZudPgX>wk={WCu0_gc%LrlzK5x8I%{ z<4m-)5}DbFiJ|eRe7Thy=?Hwf&*R+gvtJ{L7}DAJ+i~D65q5w+@t4udAk3n z!fTV_$$1>zrJ<+x~Zu<4|pFFbSSC4U91KaAP7uECj9Bk$62soap*9fq1>$ z6fTYZbfro$D7pRspR2|C+nH0pTB6+zPeOj*h5o@pel4?hhxb0cSjT=J1x>&yUGM(h z9@@PXn#D@_7sILCIKU=UUhLyxo_DG%d~Kor@dLit&El<=J zOQmGJv(9!z{5_6PYR@_rk*Y%xRx1Gll=&AA3S)h&HrL-ruz%|VW!i#uIzI~-S9c6Fzdlaq@+_(Bs%YZ)3uy`K;popz5yuM)Dr zaDMkemlPA7)(Nvyaz`qm;S2ZVoE)04Ofi4Mt54(o=(IO|F%;N7dgMJYyKo`5UwF8V zypA6#Do|qYgoR0!Y(xgLucIQXn`_~=$dW2J0y?QRS+2+BN6GJ? zpI5sTu1{p+b8+lgU~6x$WGqdq8Ai-pD$c^m8Jo(;#YI3fnkCF4fs~CQ2TQj#@J7rs zsHNH&0(Z)L7gL(vSXal9s4S_?s?Y`Ygs)k`Ut+29wc_vgNH*He&Q48{(ty<-cJnDM zZ15}7X5Z!EgxV5@1f=T?;BWCA=i3bOGJ{TXZZ7ZAJbn5!$|QbDipfx~%7lt$e=b2x zjjhf#f+qOTZ{_1c07fy<(c|Zhcycr%-V!tea1vtT^_`Up z|C_6m#qTaFea65QJ^R52Rz)>u{XON4P!RboUM8oDtRH5*ueOJiUTcnbK%S5dt zjlI`0@SX)s`U>HlCu8Zvc~vH03GG$DVA%s`C^E^i!$bFO!}{*G`-7pW@F99{9$Z-o zhD@436st+A=g!%|@1b|Uk~s8i)T2TNXVjbdtb?uhVzw%^aKYHkrVfltK$^iRPCkdByw$K<*EDn7?_f&Qmx{Et8;G^3Vw%p+4UcFER;zSFCldbd;eZ0|R;UO12~T>%^_>4X+lc=}H!Q*?zk`=HRRho7N$oQ{D1nDoi0)vq0kEIgEMHoQNQdEie z{{Gcuy?ADu8n7{5h-*1iuKok^u6F(WXlq}*tQstd=jku%^Va(kMk5GlmhaP-kbio+k`<5cyh-COGDSHS@kVcM>ik;VIw?)0v!Aw!#Z$Xdv zpD&e5nnGiwR(4CZvISmIZ<4pMQMvf}`*mUwX2;sp zS&fW?`ry2%uyDrm7%ach@u!^LOHQ=(M z?AmpR*BK=ww)O5{LDC2K_z2BmP4#L*J>1;1Sik7pT>S}D;@aQ&xG*lY0iujx?HrwG z;vb!XoxIF;KRLni1bL%k7kG3wuI!0^N-WVjpMzGV?jg$Dp+`GEKdwJJ`4e}O^7wi9 z4cPGAgcvO~(lvs3gC)i%0xxz1W_IL6Kl5&usSG2Ta8(`})(4#KEp;z%G;}}cGCa(@ z^L`m(Xb}N*$#bO=tyxcCki$h-dzFmx773-#)6P>FC&;J}kAqMGueh)VEv&X8R67^f5xW!mv=iF?=kO01r<_I0gHSI{NRmHBsaA%F0Ul zJfEY@@R72#t(gXUo2#Xa)>jK+8j`t*&R$+}W=2M{TE)s)uS#I`aI~F?Ly9(G+AXlc zuP!f(l+!{Cx!Bk?N~`Sikk4GlcIR3fdWkR;K&Sz}J551ezKdjQqL=_{=KFVbUULmz zOn0MQusvIjKK0-DR%!hFxZrI8?hrDFBh1xqmO%UxM0oa>aaGT#&cQZh8hGUq+La~a zN6R{gm0Q230G+FO839aOMsr*#(q#&4Qh{e{DQ-#VCo?lMik~EK@S^(p?7#Kgtn|fb zvC6T#(34jP65YTIYD1Z?qdFMK*C0a9i$PKfz5VxMHYU*gm)^sop_Nhwu?l)w5cadB z5rKssx}X}~&s~P;+PPpZ&m+S(=s-ii2EhB^3uFe*O3Vk8+U5e=l zWP!4tAg(HLy$A8ZWy;G-PZbXoGoiU&E)3$=v5J7QUoe)Az@0wqPjQ)cWSWSQR(NcE z(=l*YQx*i#NYmldQ4x%Sf?y0%XsDo`0zhioWcBw>;55>l$2IqGow;%IOwR5 zIE+}PEzV0)Ak(`3Gc?=iXE*_sekHvS1GNOnMCYN2U*K@lUpYym7$L>wEji?QmUVPL1?8d!l8NcbU|9 zgzc+WTM^M>%I_BNP|=HtnY6*Wo@C>3 zM)UJfH`Fgs7<9jve1J&Y?;x}uFHkt$T~W8NV8rDJr4_e{((==GZlZUkH^CfaZBtJ& zS|ZFQb-KGokVaE8u!sn?)F*c~^0gCWbMZ#gp5C3}oS#hRv+vOmq{zPa z_sxyQ{Bq%<|1%+>aScH}Riw~-*K*woUMmv{ zM2KVmn!3+Q4oIQyuP4>o7#fmisUqa$Crg#ylk{YZZ+7pjph{n9&J-w+gw2R(zU+53 zfb=#=87#hOg7i*2mR}U`VF*oUlu?JotpK<8ah%(Sw|qbFbNGYaUrG`x-VpUsAZ5IBgZM;Mh*`pISf{P=2O znvkik@prhnVhe9npPxo5#j4)uAyJ);0i(XQcKRVUQ3yH-&C>W}E2mE{$i5%gb<=VC zMyHDqvYV!#GLkyuT+#|s17FmA zop7$yJJlN}RFw6&G!ZHn9NV8UxRd*=G(_$6dy~scO1sIDgvLv-@#>x9Z4jF~F`l8N zBhBwrNi}Da?cCq^fRX4O`boPG$zH(!flyGzLSZ|P4s%#ZMWqmDvbJdHAsuZ_6CcDV z@x^|wVWWeBSsXKQI}UGrVew~wNYO|yy*%)>xD%(qIm=+>~(f& z7)n1VDvUcNCep?MiKUX6c)IpsQE2@0GOq%V3u|@sq=gMJF*9#EKYLl;U2F4#+Y7ZP zU?k-e*;23u)n@Db2`5bj!t zSN*j_F)eP}E--uyI*<;B@jz9iv`bkDJ$Gjnuy_=Qq!a{TuC6!NS0FdPr}9{kKh0q*ejrIPF*-`1qOr0QW!DUg7Er}t(mq%CZ5y;xYUp<|=T!

u1+~-pbhMMDqp#;yf|yGp{C?v5lc$`(zO&Hv~bxtFH~LT5?Imp?KHSM7#C$TW(&&pRhii<8b1C%sBBp z3yorRGnc2{ZhzeNr8Ok=RGgh1w@aFa=+Ud3OT|2gU&_EC#oqBMe8w*Cw!hr#eG&OA z@Y*lT74wmYXxn|VLJ}9n4q{{Vxd}2{5q{vwH{J3#_92n+AaGF@5#SwDe>mQCXVc64 zVNdYNt%o<2*u!pi0#Wt4s;$}mGOc3#ucVal>A|5PY2~oLN}&*&z^6R}T)V3>N)K$2 z&lC_?@y{WDX0ppKcj~ETZfJ3wpyB`$O^%lmPK{435@{4%zmYZ}t!|1D zwi(s2a{AY97_Vcl$Ae1PQ^a%op$Q?M!#=M1;blHk&r5yLazyhDydL8xYHfyJE}rLIgLz$i9$rGu4n>(O7(@VR+xiz{Zncz~|l{Emh=d%&$U44y3>Lbss+3l-YGMBJ075iN zJ*P~j=m!H45mEQ^k_Z_M5iUc#NF^o{rgVx)A+6U(lSzsV_Y_|qiJB{#8jHmZrGbS%FMFp&b|lz~N$TY(LF?@o>5G}s+n z5}5__ejtfym|k?$=0wETy8Zq-&Re=J+ZrWH`l%jGBy>@UZW)h8%qS1Db9UAU?a2da zjAsS*j*)N_noLwWm!v80Fk47PMTOLlBTOHSPCkiPIXQbkAf^Flg+jtt*B5{G^m*0x;6-QfacVkV zA@wMwd(eQ8D)x@a(-3)qSC^o8tu8~GmHhZQk`$vGB7OGp)q<=ohN{ia#+?$4{NwE( z`G2*-_bkS6E(ya({eJB&eNMbf$dKM5SWtV4gT4%M$%g`1jfwdE%Sxemt-s zYHgtK(%6sTWOR-Dx55&Dm=x^?|l|~Ld zhVwJjbCVKxQX?`i_N=Dmtu4edRgBLpm57{s_DUa$T}~(R4^A7=wKQV=eiBu;JmwUy z$0&V+L3*fM-pzB?irZ>}6m4mlUR8(LCv+j)Q4Q9Q({G0Ie#CZ8lHPM4)^nm)l+PbG zkXsFMw>hQ2f*fh(`H{HTY+<8mf>20|7|~r=xIu_O9v832kn0!(7kX z8;i>l;H8Dk{;9lw5q`fo&f@$2KolEOTp^-&{nq$QIGC8ie5MMvSx6P>!fHiXr6htL zQ1ENBp4gEz_fGX@DsO(0-jSw(pPY91U;Jf)ZSL%-5P^f0*G<&-mjdm6BfE(73S=Lc zy`|==VQoXiBIOId;Vy~B)L{s21g}Vx6Z@NDepfPp6jEkge7Z}sXv=WWvr4G0tBfbno9C(_ z$iK4$o9jbA&~==3|GXHk8nlvw`+a3~zi9-`7-b z2Gbq?H8Qm~khwW?&tP0cbbxjj_iuu25f9BZ(s82o zerU6auoALSLp&~{RkgVn_(Vi9|K_tGqEQM*S+C#|ZzB`bwOTAmRNiACG}THI;ZYw+ z2d^#K%q=MJ-#DyfEuSr-P#P$E_JRcXLDB?&j|H{}%|<%g1ZW!kZ=23CVbD*56!p#R z0XgrOcjZIg=@DdUY3bp6%JH(~B54e>f|rMCBglRc;ykC4dnC+b{aja8(b+J?EW;qy zBo(#Du*~?d6^R(m=ffU#bZ37);a#VmTwe&U}&m7 zljd~%ixKnvAPf3C)P*!B!KgQlBuJpGl(%5=nWjr0*9CJiJUo2)PCpTR{nN+!aqqhG zYF3qpghSsZwQ?o>4Cz@yGqw8mV%I;G<#|ol zhVRqHYbnLv#$zVZP}ZZWRojne;NEEO?tL!WyhW3oW_LYbU-9BM-VpM+^eBeQTE|oH zw^uUPejlB!P{r@hg?viYo3+GxqhD&rmgwXok$;b@G$NCU+7G@81CLX(4}J@dH1r{Gu4n|&+gu54*x0Yc5q z)c#^HWSsQQddl|;A{6X%LFJ4&{4MapmFm0Ka$VBGXnuR2?t07hXPnQAnU9#okn;g~ z0?ngGkD$;-^IlwD`n^~ij%PSeGT*;{!)wbgTpKZ+x9`6(fb@>?#+MMT>AO2kN&tPL zpp-@^4-gDi$vGG}t5c>FbpN96l0JMW|5G`sA8Ae)cz(FSrdZlZ>r=cMoR^npW^0sa z#mt)c6RyeYV*0Z0?I(}+wzhtZ-dSTd1bUqg#!% z_D}a$4w#-&%EnSEJPLpM`J-)0)aCL=nLPt@U_(dA7;6f-Rv*M>5_wR zOVpdFM?jSG&)DOR2mQc;L=v zWG@e>m=xw&Ul!VC;;!K-rxOIFr?9&u%_NtZaepRxA`umNtwT=gzfqWC^EMj|!zDQZIpo41jA#f37JA>`nkv;J|xhdsqGwql zx>Vzxipg^LMv=F?4rIy3E$(?g8Re6U!kwQ`RHSPp^tVN?-}3mhg|jFVgP*?7(Wp@1-os^yNNYEfB4RZWAjjI@--iTSMFi~kk{uFpMLtw> z$1{BXe8Rw{b5Rn-h`DLgONF9Ci4k8UkI5>Z^|l71NJx}23(%{UMWc%u8{eplG4`4MFJ=gNm37M=y9fuf0gUk?^*pIK!yo zqj5VKEx-ENb_>jHCqIf`UHA53#ud0r*RVFB!#2}gUABLP`Yzbd8D;4t@O`KAd~X_g zu_1FywG5e~D&1lQz3tXNa;MGC&1LXAo`X2T?xIG1#wiPJ`-gQ7mIVGIo>0R3nBQw& z%4Js8o?L(yH6c!RLhOaFuWx=g)*wC6BnlMINJz9a4h#(pmLN%{7&%X^RY5CS#@g1( zirHB8t<1&Q+0skU-LsYRTD@x)rIafr_xR7o#=W;2v&~OqK609NP$t-tv5kY?3K9KP z4MnvK0{R#v$QrGljur~;p&=a-RP`6@pr84+_)d`akKbBlpa{ZXxhm=I7!}bB3Qzk_ zKG`n62#<(ZIUAeRj%VLBKCCcqcEyqiiwHM*KqaK@U*$U7&-?wcS7>l z*w2?gDVhp6*Q@1-_1~Lg{>$aK{g#{$w=~L0ZH#Z1iVoDji{jhbL~?oNvBwzn>RA5m>qoE1}_9N(r8I$gP6TE9^V8M%keRwg$wy9yM{Sc4y8*{Vq#*T z<>)Y$E7@Q-MQAES6yo_UNtM;Z#pTn-C~__dn|fHme!`=IpnSo}DpPT8FJ5M5Z0;>~ zIR3ryqV}?}$?o!mtKX792<9Z}Q1OpE#^=h!`G2H3KZptWftK~N_}d1;49jL*v5Tn? z|9!c4Tn|IxOWupoT|;N!7=!ec?Ebn$gU!L#lY`L5HP7QBwqq3k>ejN7e}(oSb5z_i z{`eHFrgz~bW@mHuIp-L5CDmDvk{^*-INu{hhgCSY^mWL^GxAiqm^<1Q?z|X3KzZZV zG6u*fM8qpFB4gfbX=(B82I{a!aRZ?gg9xYNC?+K4C+f})6K<4v!!&9*hB*I@VuFHQ z^*Z4@&6{Sm^C(f?R^Fo0olTn)Tfe0KYDIqM-r7#CH#Wb%7W}&Um0F}d*^h*4OTg0I zCIlYa2P#J^EtbN4RRzzi2aNC63@eFWpZ{)pe6O{8S#;C_)8ZEf!%#Q!$tKx@HrF{0 zJ~ug=?$sT(S#aTmWo zi|ohhpFiSeU1;giw13LzNmzexHqhZG@GaQcrE6+%Am;thprQ$GTmNdv0HQH#o6M0Q3z?^x-l*pZ_2+%Y$VXC8vu(EeE7zg<&pS(5p=9?VE8mj3 z;swASV$@ip^kv_t>1$_brBNWHbUlk#My*qfXsY#p(e1aQk*2|WS4V+r!?fjrVY7Bm z8myeJh=bpwnzdxnV%PBop(jc_Vf5LY{~WVo=C|+*C8NG0n$^l!{l8nIoi{FVP5i!I ziD1;OxY+>Z5V>1gjIDvfVc(2b8x?!#+xxLG($+G z6wal4-rn91Exv|7;{fBv_LF2`hv%CG9O(po08rkiC$nlSPWN#<4)+@7+}y{LCoAO(Akg0CuFd zK6Nj$XXj);@vpO(i0iy=?mhte@Fk8DN*9ss)?RT7H5t?}p}!Sd1|32QBjthySLJ={ z*MB6$j{7QGwsl_;*Yfb8g@uQ4J|)Xq!Ia?i04n^~w|t0oM(0#ZDx2_Ep$qHRUluIN z1shM*TN++&pN^o0PEG}V&zmu`XDE_FzbQ&s1w10-RG^ULwVV{@a|=97qxwVy(61`z z6ROTH}0rD390>uVB6$5I!mm0PNq)#xaYq;1SX$Kji3AT7veE~Q+ z*&h+}x?bzQeJc*6edy5by~eqf7atcUHu`HGU(;2-;06RKO=~>EukEA+I0IsOB&)x9 zEhS+KoOHuNAF#Dg=v;LboX;^U^1Hcf4LyeKrspg42tNpJFiyxN;;R3vV&dc8>|c zjb$`-7SC!DW%bKfi(h$R8gwVp9USK%!S)>fq|LsoYsO!0?4gU;CV|*26}j7!-4B57 z3Qj=?!Ifk}#yw-OElE#{EQ3AfRC|HVV1<4V-p0U_<^R6V9=l|mU-HRUuBHyf;tW9J zbQbC;TlnMLZHjYP%G2jiCVw&iFHH~bnGlh2SyQ-7Gu$e>i{5g)j`++Y`%Km=tyU%3 zT>UOWR?#X3IV?9oKsiT|R1c;Ej9CdJQ}jw*7>xjp<;lex6Nk0Y^|j^4E5^b;r|38W zG{V8mQO~`Nh$4%uuq}S&47XEx&OOOOBJC5;S0$Ul5~EZUynFebh%#8|)gHdHkn3Bj zs@aUm{k^{Zd5!IDL82%qw*(|65uBBCw3(nbyGi||sBH`i8xBGp)6_4azB&kY8IA>P-C;ym>7yJheq7i20OtN%; ztv@i@3k-J5P`n!2S^4lzhaQ3ZBv+;X9-c&j1kvREE{v*4WpMrp+>`lD1!el*HEL1c zdtBsIKLtc7^l@;({&8Q#?0ep8svTM*d@`&E%GP+TRqxWYeqv#h*Nx_1KDYK!d;#|T zru*&)&FPzLQRFc4SCuD&F6Zp-lKbkzjI@mWh^i+)p5_<(3puR}c~Jaw8-*+gTuL~p zx=g`quP*FQKLphIf(X&Me&4l#rkzGqP^KO>Kz}4{dC!57yocS>)RrJ|$Q=t6rsj+; zBIKcMi>0bEnjwjmGfDB!FWGTB;y{j#3sKjVJlm>^Qf<7zFh*AchuF=wsQ$cCZ2#qY zAy{s)F^WXTqj&NY0|Auwf9}YWx=QHO8u=uNvw+!I8|d zQ%VpnjgWGfYI+U)q>f;?91(gCt0q6fqvoZPw^Dnhy zp~graUn=ln_Fd6vADgy;uKf1j>Fhs~H&QVE14TW$<-}q}h5*)J*RgtuY!(1$ z5x@OKs%)0*!0p@uu`9sEI&S~Rvf+F(xK6<0kFPaHid8%3^<3r4f9@KHMPI(;SO9d^ zR{%f++#cko+O5kuGWhJceRRZ}%PZLl2x$R0_v$5-&l>#tXfzf67(NV$*6sX<4$Mz} z%zdDz0QU;g|9>Gbb0}Yp=r59(pG>!J5=#1<3Li1}4a9#xilZ$@xh>Af^S^ZB=7Abfv5WiFpLIrc}JPNV%*(V zG5u+6qF5620wgu7dWXFi0B+hAeotdEn4@d$i~C;>Da(hB0$5LDxb=@Sqkz*d3$D_H zLq>-yRe_vhi5&uG76ta=h(d`e-^Zp2AQ6SBaLbSBh_8#Ohq$C!Zf#jYj1EHOB8ylp0U^ zt_vI}rrlf_2!{OlhM&#<89%DN^nIHz%VVYC2K3bb@W+}!gocNq5yT-u1{T&f#<*v= zNm7Q_VAx;RaKWC9Cn+K_J`bDp4p5(bUoA|p(Eomum_X(FwVe7jy=B8>huiBJMCD%F zI&s2lo)i9<$)Vl$HDCk(XHL2CV1|=yK1by%DV2{!5{a_|)LzY-+v@$$*XH7Zb%e4b z>{<@ZA^^!lCU<&$98zqF`pk{R;r|uOk~Gw$b;vls@5z7Paef*S+%BMmnOhj={q}~m z#>tfGs4T!n&&o zP>#HP%}KsNn4Qgk%@DQ#c`iY_r@-Ez2RN^bi=Wx=V&YHX8cDM1E!NVWWoU31@b`@6 zLL|owbusX4+&-#*nV3G*tU((c@%3lQc1AW;rW=XML+T=dCT>J}-T$zp^i~>gC~8DxJQ2WjOI2{NxFO90d!3iyM2l-K0-k>B5hV zJz8d;)BM~s8B+B$U7rSLGX^CUL#dk0$h^~HMi%+I#EQ03Iz*vZhlb?nRqy8xMkb=8 zseX779{&u@${+Znj)!I8`I*44y98DGA)*3<3 zbKD?my91eC;IsmnUPXtkFvd6ldcP}Mv3jbX=Hifda5hexiyK5s-ab=Z$-YjD$Kj@N zzG0!`TazLFi?|eK+o;@8sM;{HkKfG-m4}a7;b-j08U1PvPzM825B~eT34p=eP?Gwe z3jnmD!O6Uend$&O6=0x{^fc#f?r0ekaa~Exh=YN9lh$zf%hG3hRRhLY;1aqC>Xdov z1S3d;KX4jGe$b3E znEY-P4x6#BSpX5}ECV1VhSgK*4rGP;1pah(S-|Q4&-LQr5kfK%j7ABq-M1GU!F@YY z?-}{TAfX>-=ll|CnWT98j3Dp2aD7&5pSpuZ?XweS*Q{Vjpaf9mtns9Dns8jUA5P&Jvn#4#xJH zr&SF0AzNGkea0A5{5`W@hkCSr+M~W_qQP$PSI;+wX^@3mK>5JxtW^Z?$IFc78k>(; z9Ye<~6d#B!YCyvKrK>bN<()Kj8ies29LvktY&w>@_;S)uCa!l@`1_JkH7}Op!9YG! zcBM3Hkyu*w6mQ}G9fKISFXw}qNAV^_o3}Sqs`v#-%rn`IB;)*Ef?Q!})6S;9x?xkD z_F!p@&=R+VHt7HFz_`8qUj(eIc$e&PUdrE^0;&wnN!WE~=ti#32?7}TqmKjs{gJV7 zGOQC%*Q{#|&-*dnbB5ljSj{)NSC(0+Wrp&6`7PuB@!(unKmq>2wM?_Fgg4#& zSzCC3(g1F$oE($G8IBmuNn+W9Pvtq4T5#BTSRJU-{A+zLJpRnLw~2@be48`xh1oeg z1w2+qJm4DGtHuN0UhkLDAJO@G7$tH>1p3K;b|3o^B`>$h2QFiVYRu14)&ea=^4Z~t zTfXHFP~N_!7HtW7C}=<30x;s&r!PTyABf5uv`EnF>grsO85utf3%`9ZSXl=r zpDnqZ>>4NaXlZKx8p()Ayo*n{zP)`3n3YE>&^-@tAfn58{VNRsB##)bLPJBDl#*f3 z8@GXEn^*SyJQ5f*Fdp+7{Nv<)b7X*Cm0K^a|}9!NL8KJ-dRNRZs9GVPqNX1f7` z`})^Vr=_(3-|Et?E0yA8rU!+<3jZ>jT_UNanw*R~0&1_XW_p%FjDsyOq%~KNS zT-)oX^RK{>kd01r>4}MuhY!C4`L=+7K<+QlIt4usBJ%&>{N)K*RL-!R1Pvcmd6H6_+9XNgu^4d5llCJ;;lbKgIF={qld4 z0np$l;xOxtD~bs{OXVd9Vp;QiHXrW zj`sJXA|vCo1FkP$W6n3Zvl>##Yk2a?+er3EO#An?>SKZBLMg#}$;g zkAOw$R-~7gbHGo5_!iA0(G@hn2swA^XFtB8>Av$G@I3wf{SW!asDda9+!0)-OA6joa5ia&MN1TQRuw_p#31k?ZAK>HneF68f zd;<`qkO(%ObqJ&1O5cM}y-K4rt9mIQP{FmVVpCCS^4>QGPweR6p#6*Z2|^e1pJn}F zJQ|$UHR7iaY4JPz3oH{@4%}xBPy*(0U*)V-O0$vh#v4Z0i;8n zmC6V7je^{68z#WgHl#qsKMOD{Zy!CC@WHu%x_@|GvWy`iY4d8TT*q1@P~Z zEVX=DFEmc!B|QM@RNW1|OYj5w*ih#4I_R>!-dnt5TnKyz7!~Z5r9S}fo6nWRNas<6 z%>WF@mY!CB_0AG-yiEWU$x^*N4|x28UJC*+38k~NB@dVSu{k5$T#Oe_GG28=-BCk{TPp*Xd~HCh6wO#mzT5X8a? z7J-;#zvWK!IJf;A3>PLNBu^(QdUY${l?PKJnFOe``no!4-e`i%{2f`_r+$XC1Z9c8 zeuL+vqnzqP@+zB_>pq@2)>6hMgee}t^(qX*Zh%4b_VmcKQ~@;v?N`9B_2(oABrv;j zIvoQO28IF})X8X*;z>ea$B`O90y2hg8(MUZ_@BK>zmT-91fKD%dVL}AM#W8rg4brO z!G0R(+)-P%E|GTzAd94m5~RK~k_6Nuxuj~Kfe3ICCm<%+FhXOm5J!q>QeFWn2Z%tV z<-iM9drQ)kN5{uS@t!*~kByr4Zhi<8?6F4k$I_r{$`DCPz*yPY`7w!z#2^$U@(Ik5 zwC(rqY_xx5l#oZi7cV7G*N$*$ts+T^vRWuv9ayq6;#?7X8$=j7z1KQcO6 z-0=Zz61bZ@Z~fTlXks>LVC7j)t-q>)Jpp`^MGTd&u1^7>|LWm#FXC1E5!AD|dDqgF zHgGA7Oj%iZ(oJ%Zq^_jpUysNRJYogEiWy4k>}@)4LDpo4zc1Jd!USbyWzkSz_XYvT zXJSCtlZftC9O?hSIVU`>}DYiEszr@j~ z;rRjFaATrat5Zu8Y*5BVMmAjFn|x$$>D>V>TqwNO-CbqP?t3+zE?{*`+v`k7xe;YQ z|3UQ1Yt5lkb`yk9rYu1hdLAC)hp&M(jz1^z-kp7B{;U){NT(9hy8u1~b_ruYKR+p{ zkkixzslk!~;Jf+_XL=8T*1JoIo8f&3TK)HE!SODDtmVd!FWrQ>QmZN|vWv=6CxCbg zpGM3N$lyWHqact4xV6pe-oJ&Kn*A+SJ+LyTf4$vcw1IZHO1^$#;h8y9=i|RC$+8z# zHdWMx%zrBtm!q|dZBc`p2A_KM51XxHz>TnLV5?q-9GG>$N&!X zo2R6HTqL-U2eeCphi~=zqT260GDDHZ-gydJvCHt%PcP3A2zNX-?<^sYG0^@@3ViOv zhu+mP`uOYrruAVJ`E2$fY|}al!1Z4ctufB z5fDSz0mTm((s2NX&iNj$a|7aba&nTKjjLRK7-{I(gPc!0Gt<}_OC8C+^O8TzIYlE` zlj)Z+xwWg!#dW->#(ZA3>?Hazz)XyZSA{FsuW zXJuuTL}Jk5ZVT=K{_Hl41>_fdS5h`BFYn~Y$b%~4wVqGHVW8)mTAY3e;sl`1M+gFP zRl@8R>_j3Hng0Tssk}f}Mn)#L%W|z-6AYg&MNNs?H-(e}*w1P~t%WyA4sAux`{p}* zZ}x4v$64l1|Lj)D=51yAJx1@|&exiq_?rr!dNGV7uRPxQxl+&T@O=-23jrFH(Rc?Z;ujUh3AD?EkJw^aRjjr&zYVcfPIpRRu&icKrlx@!T%vW0AxBlrsOrYBgeEs_Mol;&fbve+$EsA2DFmz8$OxQjH zNXDmyFdeLvIY8oU5PzSUv9hpWghV%XW+w)gT4tV6eIBcvtS}zf!SvxnL=SqOS4ex!HVpj#OR;c~+|0SN0@tD6Xy@fPv)7`3iI zWwnt)e^TIgy{}=mwEJLeSER~rfW7CRthQdSVB_(%t&jE;A^Htf+acvE{1G=DQ@(HV zTT9h)J#2>OL-DHKk_5aSMwSVH;UlZD0ZRBJCu1PLwy$cJEe2?=Cx|DDovUTys6|ac zAOm>om`6{;J7$gnv=I>&hJ}gg4mA53`LaOJy$!;B<;Q#vk#WGR3WrP!!<_(5FGnjIW03B{o68KX=&w@RW!{|SMu5@3-YuAWg z8i%aAyIZPY7HAg<#4ib(F&Z`aS7Ym6F$_b}j*X2Cf}Yzu#X`nW`3poJg`8S6 zG&Dx)kcWDCfIbI%mDvWcgfy{NF^36cO^K(kK_<8S^hXot<~k*^5Nr&d7^-9HKASvt zo4(F(^1mqBM?89-8SvwwIf;8>Yusi9@d2mf(a5>S%BR;qDRqAeJ!(C7SfDW{OIuIR z{EU$@X#rL`r#T9M=}Gfo7ck&N@g-<%D9j*ROV$S%S`6XA<3LM^U6F$63dXW%rYjK zNv0$rV;M3gA?iI>d++!8zR&ag1MmKP_GkaF_g>xibzj$Yp678K=W)`0{R(vk<$3uW z>S?%=s=#9-g+oe4=F7m7R4-PXp|M%H!}&98%sPxZY~H&B6t)aW6&{jFq(S@vAOB(Xkmn$OM# zIH0^Q)Rsh{t-lpzS~6a?mIo7zjvQru`5JERZ0pq0Qoe3%XBx2}`At!8slE)0pF_3}t z)Rhg;>mSR*&8_o9CS4Jl^OVCo%D`J<9QQo4lrFd9WtSVz5?)f+as;75VdvW1wzg(_ zay|4CtzTafyQuWFThM!!oj^|%{cUk+Ng=B4s;-od9kw`j9$P5ls&y20UwNrj!o zfD_30P*}SYqZI)S`s48%ycGf15K3LTqOC7asY`|N3J^GgGs-8CM#zK9p66S!SWhtM zHeL4`*VY?uDKUqkzM&y44Gl%@j$&*-H9>Jkkb!i>ITo3;luq?x_cImd4yes5>!Kue zJ3~@iIggx~=o*7U`nY}N=2zkT*kAP#uCB6dee05ZBqZ5Z)BUM3!)yxi*|~AL$N51) zbnJ&PmN3eLQ9eJ%-Ql6$U!+$?$^p)nFz>?X;VM$NJ38{DUabd!M&6x`%r*tgTe9WD zO$_|rbr{rL^*_jie$!j^fOyr#Df5Q!_=msj`}`8jQ&72JO2V-W-zih_S2!!*7jR=K z-se4c?wp+`KGk)e>Z{VL9g0ntR%4Wvdo^{RR^X@KTVYfF)&@zkIWd}qhA?(viZZ;l zN+WkD_xk-f(HJp#vfVCB=RywPQ}}9xnmp8b8z4j%TiV`E^yF9uJYz83m!fFNqQ;JR z^L$A`7j6&D9<1yw@2(h1jTc7NSUh=FYaDwXUKUs>9EsA2PnJNsr&QBspuo-mxF*_aPuQEkTU%seN z<~(`A7jaSo{VtT1%`GkZ_#Dj6L``(+5WO<5PiH(4xXAs0A_A(-4;qQ#Io=RvQqJlz z?SicEo~8*+EYZ795McyTJGjornIy}&k%0F1S|YQwqV`FieMS4xm&c+-oSQnq25W0Yq(3236S&Tfh2nO?D=oj6r0?JH*f-gp zKZ`JJ>5bI>N=6^>py2A9@=Jr46 zX}4-t1~VU!6YF1bowB}t`*CV&YI-`-?$R}DO!`cJf2?Akv1v9ka%tkjhs^0@->n(G zy-R1^Co8hNa_)m0N4^F4Q*_SGqsTxg97dkJ?}yw;rEjdEgQ;)ydx zVaRSLZfmM0>StP69K%c!_fpTZ$S4Qd@)7V?J-SES&7H`h+aUXpVZM`jI3sWp#lbY!e7R_~D$)Ma1Mm1|e)D`byWrSw*u{WbiBIxxfTtO!a zYJb%y)MA?j`mUX}zN`;t+U2^2uJldtc$E8w#(uz+d~(IysWl2m0n%t6mbgxItddsQ zZO;T6WvGSz23e73sftpMRJpfDE-*5h1-#&|D)GpPJ3_*GI@3J#VEvL&7v%eG3T2av z0Z)|CtuY1(1yMEu5Bm5QxZKd;JI)Qb7l+cGo>3N(fCX2h|B{**P7+T8q+*!M)?(9< z&0ZPrFrinnTK&z|lyA`5jKTu;4IH2q;f6@>CzOXIQ4@dha;f#a3noZWn>qVJw;b5w zkbqIrKzfyvtu2RbuY@@+|IrP4}rqaoByLQ{_45^)^N>lqaonkS5rUD-@uasNzZ8 z;F`V4VROTv=9X)=rd|VNrM?dB7hZI+mC0i3qV#TzHP8C5pO6fP>B-Z8Ep4a@BQt(D zhH{_Q5p`KGzVK`b!u(}Y6wT;r`dKnYtkqK=zGs25Mj|wp$J35q41(@qY91YB8>bT; zYwJ9xt6LMLsaaVc0bwp7V~LhO)mht6G=!5Wjiwha4m*)o&ZcG^?V5yEKLqr%tE7=m zV(`+sF}7Y~aBIg=lX^DP)#00ri4$0(JmoUpU;v#<>vueBQe};s@O+=9KrMBc*ux6~ z95jqS6?aZKbfLA!2P9X6nJ@Grn?}Jm)Mc>SPh;FIRT5r=-u$NZ5 zBAvIP>yP)EPC}?j^Q4p}Y{!D&Dk*7zA+DCuB_zx#6jGFbg(MF~vhy+yaQP+$*yrr1 z$&v69#J}XSm*#N@*ZJr*=aGN6+amSejQ+jriOgpr7k@;Y6%dKRq6ZS@_&geIh8^d! zuj%ve*~Cdd=}J>rR!vuLelXTYBl7B!bt&Lx94za-M56fD`R!0fN`iSs`)cJ-pQ4ub zpr5#VLW>JFO3`_vLiyL22|I8+a5N)8Q#EBhe*86~$_ehvjy4X3iZ}+Ndz#$#DP@rK zEp8wul;qD*5u(RNc+w&i8}5A8Vb>e2^5s%2w_Q%QUIGwIFUH9wvp?2gjp58^l2H22 zNKRI6%A$~ikB;Kca7)3zMqEg?kp{i!N_|!{5^qGghAo7#fGa{wtNk-19ccL^ANSZh zrrCV+Mr&cK`Hzs^LqwADENpu7(N^x1X~%X?@RK^^pSd=>dBNh`oej$?!O_Z>aL(?* zJdGE7Y{P2$=^X>v7?d#(+PGTXNaEt-E#UfI9W5X{cVP$UqENT49UoFs(r>F98=B?T zO#toVx%Lrf2&ndUqv>zaCo}rF0%{A}E$6DQyPe&xAx_DotgNt&V34XqRYMwJz>h<| zCvo|*JO^(gBvBI=FHlf~G6RNq&1HgDNl9sqCyaxGql&nfW4a6GV55RZS!fnOTdmA| zj482}1J{}P&yePd+H^*YSqT$7f0r#m%7gU>u-0_8fdnk6Jvy4O(!tU3&U78|8ah!$ z!K8wmi(mQyDDypjEs`%Jqk9FBH z_1Nt+|G+A-JgbGH*6HmhC0_e+~dDeDEA?=jQCU$E*@Ob=sJ{l@M+ z?KvRXK_=k!Njw#qKR1rJ`z}$duVj;l91IU>i5od*(wY;^QE#p&f!(&GX*-N>$YBXk@_xGN7`lLCdgkD_Wz4B(lT-@XfZ@6B`+@Xl&(Rit&+QOWYuPQEeucF0Y8 ziCf=U8=@PW-|chM{+jjsDbD%HIjRBqs;7ZSL8@UgnD~9j*}k|N;rW|NsZXOBXs?pb z_PPcveNWz$Wr{nFGK+3D{*-P-U1`LePhv|~$-qhSqhGpqM$kU(?y}KmM0C>9+EM1m z{a#G1&^+daxB4G{r75#*uiX9i9xb$q0r~sgXVUr~+^lSE-X6rbHJWKPxMg0(r!%e0 ztc)i1h)MRP`BnT{ zUO*uIZrU&#J_R(kM)s*)!+=PK=;fSv?UjR-a~of$y`OK&3o*q=BJ{4lv4jQa06`a5Xz zNH4=|=}F$DzG)TKjHva4*6Oa{F+1atRVy?t)4GcMq2~TB#?S3qMHittQoof&a8nucYH=k4A&`(x>*nv*PTj zHrNwiiE=hnT%i9>#``wCdW#;p8u@nY+rUQ)3`54P3x!Nl^AaHEZO%!8@Yxn>u5La-? zG>t5kJnK6!jh+?t-!{o0fXtSk9aTU|O018{@e zzQ#;HU#jRun;Nh*yz1gxrwOqOH}wnny`r&4SI!a8my<|U%r&!wN09uq*4Be}MXLx= zHh+T9(Y3RoK#AY%%!-*J8QX3@3^$#Oh9DnjQ2>~nB)o~ypOs$~n8XhOmu$w>nW_#( zn5<6B{`&+o$~RCy>#jwwrY$fj`s23+7!cE?zmyrgg~Cm;uPwoh*K@tLl}|4eR%9L5 zyOT!OohALBcXNbASDopk_^H__*u~y0$JNdm`#`9T9n2huQ&=2402q@HIG{fBP$eG&jINn$B>wk*`B9_K!XTnm^Pj zU&GWZ8~JEG_@tu2CpRp`c1e-gX$O&W<5J6Q|oo3H)@IM z(OO=b{XhC;VT*cV4+1bCrBEr=gZ`EON@&Cd<#&iO9mBd;C3T!79w@Mxy)HVy+G2o9 zH#>|dQ~5vs4?gsk46rM*hJoKwx+Kh!kC20_!ex1?)2rno&;B8^{$KES15w**$-32ceMP54Q8x=KDnhv3oPch% zL#~x4Jx7`xOLHbZRJg4K!E#$B(11mG08u6gkI_^bi+o|;Wb5eIX#F}ol9XOXTH2=m z*m<&0QAx?T!bBwG_X)spKv$LX(Q|SZfF9^zZTu?~3HqwXz=nUSzisU5ifk9NLjA)T zN|=_}qrw?ZVjq&*Jrqxvq7KZlz|DTKT0vS{xfJr5w&m*Y3$r+e-sE=wp6-d)n9!$K zOTT~x8Q-lya0qh+F+@gN+bKZpAeVR%*Al)?fM6E2i&5-8lU>I7;zj#$+}JCxwG|IvT(&d5J5Z=XeFZP~jZa)8O6nt(VPzJPD5ZT$;8uX;f zTzDYm2m;4da8up-{OT33R8uZaPLFbPgOB#?DG4c{A3X?Kd`Ct`fYZcFRfob3d_kFgz)gMm>AVtHkS-74(>jFI~L`=vabOFh7vILjb7 zhapWlTMdwk&2VDho9s-cGd8|pEf&d_P1uLll0Pvo-_a@ZHaA$mizf%o^ z=q^$GkPGM$Sv$n9U0wQGSJ5k_sj!9O`MRmTGbmUReE&MIN)RCUPJF!QbHTsd5GOlt$cgaDd{##kvZsNG zA^3o+4b??Ok_C_?L{}BO0HL5>z(RG^LRjrl|FVvSuI*Yui`SYSpyGuqGoX@l!&3rp zXs{vq?Cs&FFFzf4zHsVI)jEO`?uBF0dhYe~oDhpMonb5ted#9sCM@<>cr)ybRjj6 zmZLlG)wW+hAnX{1s(f&n>)Yz;A*_MT5lA14Eb##s%%6cTOXk<^u@KJt z2X+oGUmCMo6Ck*8YXJCGLMMB-XMsxm&P}k5^#Hc(KJ<%JPh*gzxc$IGtM(e*G~VFWQX$PlB>v&5}{_)`BPY;OJoy_a-= zpQJ%xe~e8o%LXx?6a;k_OuE-x#{+#-{-nQNnfmgLX)9yk%8%M1IsIxa+w04_#tvzW zS^hS);;*qen?Ocqci@AumNc1+xAqV1EWSLlrFtaPT3}et`rq{+(<6jbRXwxZWw-&4 zuBeFThIP@sn^*VB363QNNNMOhSR--X+j)NFiudCv#_PgkdEG3|FDE8eo0ligCF-|h z-Nhj8M3DjLEk~-pfSXM4iIfpYYJ$vIq&>NeV0{D+kXjLb{{FNBre^C$t{-cPb^^~5 z5cDrw^9>MZBZ+oWJlR=;L2aU^uaEl_-~tUDono(p?azr)nZi~8c`_K?Wixpq?o5?& z)q6c+1#Sus;R>A`sbs2m@7~FQ>3d&f>+8awbN9*FVc#Rtej%gDm=0j`eERs2&zuOh zo;Y^vd7Gp~4V_WGvU%g?Qp)qrkRpdt$U;!eg8hog$iY4{V)+c6d>V9aY>Z)cwn7Be zode);yZ{cZZ-YGQW4OgT(JOW`ul4br3YVar58;2(~5dJRXoo8iI5U0otB%aSzJ@Ot=|sv2_4klCZE8bB%Ybl7)+;fqbPT zBeFPNzKnJ$_`AP`F!-34ADf@CTy$p6zgY0)qUhIx2tMMUyzYJ+!uChGLsZxI17!y= z;_K(ee}jca=>xZN1Bp76XM~vk(3) zKy=vXynTF%rHI%gIE~rY;HDBiy1WA-)lRD7Z198>-v!rka9QP@NCJW>ydmW=O_H?J zNFIQa)(l*xyg#+{?)y52$rY_VFx&k0jp*59iQ7?z@=wNCKrXofMy$t&hic=dU?Hfr zwbZ=_7kKqGk9qlNFk%IWS3}!|ViH_O``m7t0UU(*b0YTNyANabCjFmQq?XT63m$we z*%2;%U51a=Pq&lXKr#brFD(2>|84lfHBf{=2{_8?NhN6 ztdr;E0Z*)_4)@$E0McxaKo6#1SA7dy82qh}Ol>VKE#i?74a?dZVS*x%{RZS%(bUNLd1c+p0r5~-{RFJ<-=c)y z5k--io}T{b5}%yhD*z#1`hc`rIIVGXJVz%_yPC8_P<2eFbjE_m^3;tXY>YyUdjaDF1+tTyB+`EwJ~5i(bq?03?qW)jsfY1usU95 zC{Q8kI(1nZ34uKKa$!78ATG;x9vPMGuL z7cR?3j7tS1Nml+ozP)Qf)U-4KW*O(w5_Z5cmSh{udxz6On6g7<&vu?rZhSr{heV@y zc=&myIS6agv}D;kK3IjsKQMgMSLgCyc~I7e>HWPwCe_F{_xA6+`v%>?~4@d2qZeh%%IDguT#{woX9Yn^m-5)`itlgl24_B==h z(;+7_o~+jV96WkqOT?G=5%N`I-1jwfrOv6d$=hDe3T%GHr(fKsVX_aI4rFT8S_%Hx zOh!KzE}gUk0(DT-)Q%~FRpk*je(lV^2F-8@J#H!RM&M7v@e`4jloa|Vd5dW1JjjUC zT15JV`JXI5g|%0HDxab*GoT0>MNwjOctk(Dmdi*UZeOaTO_+)waoFF%8j43HMWFW5 z=FY0{29INnKe9Bhvj5)|>A+0LC(4oj79B^Bt2(By8IDUER>fP2rl>7?R$N2NYCXFk zI|w(Q4PCnAh8&%8{z^hAQ>*Rl_+Ht_?X-WZQ+@rAQK0$>2?=lC-Y6;IT{DhX10|KE zrKP-7_E;)@#`oRbk09BUmk(8ZbBtxiIXP)%Jq>t$kuowekQ`^4wUJ+x)q1YTC?syz zM?v`=IM(F;wt5cyQg%+euUlIQV{y*ed7y^}zp!_mowkr~lURlFr;*1eCL}b}*LROb zMn=Y-{i)a_M`y3Q9z4|72VihaV&XIRaxP}>1k!z>c;cCEg$08g>F<3bH|%I=Xd?8& z9Fm7OKauw?ES7*(9G4EaZBOPHcwlQ}mH`HdRYXDx)Ps518{qimDvyJXIO&aduTBnM zWhIng;Oc4R34E09fVvb$E~e)dZ}bp(5qC81ZIH`ya&@Qlz$LyGl19~kE04;vJwoqW zLFF4cJqFDspxF#P1^sux{%Tkfc->6;jMiEHcljBb7|h9U`!7GbB3s8_}3P-WaT<#g4o6Bv+ zov6H-`6VNIF6gJlF8h5WEUygm&-ZqQ8OXJQr|r_uX7%p@4=OLwxIGtg@>xsOAolLQ zhDCvW*~8x$J>zxG>nP3CvIex>sHvB)G9If<{VDl# zbu6?&@>b3YBicJEkX5gK)N#^V?PPky+H3!= z?}d!tE|r?cwkqOKz=G?lm~I;uB0qsQ6R)l0K;cZTr1mqxOHd z;G+FgQ-iOt&Nd8oOsw0W_Cl1EV}B<0`H#b;c|-Tdf7su&SyF4`o#!^RwRAEI`fGmLBPO^05PbS(WOj9)j9{Cu6@a_Gn{l12& zcVe{`wl;09y<3Ko2{@yItiKR=ojVPS**Qy3vJ!a^|B8m7558g#4j4InnN(cGP7a7*mRMt z`6|b2X_0ZUB`FZbzzExH#HRgdIW!aSQD(ppo}$TbaMI2K`RFmqGpQMSsxs&}<`+I;gX#AJ~nfscAX^vQB$Yftc0# zwJSqzxcR>PLuVvuZB5NY@)C^aS$#+bv72R$^ojI62XF+%!T=vuyXmcRKOS#z_G$CC=qNDs$0~~BaGr~l=E{jbe=-&3XTfbdp?z|k~wj|UF zA_uK-E9YfAVQx@s38|arswU7r;JqPGCW*byocYj<7cQiED}zkayxt{!;GTJ%6J-(k zjG_OcA}rJ)l<(=RAE4-+$h;%{@1OrZ?rH*_YVD0M8S~V8Ig4X(@IFQL-i+=E)%0bF zn`ZEO*>_&0W-V{Dn@r{*Y5Z4i3Yu-s^Pm-bxcCGAoj$+^=l)4pGcsycq1s0eLQ?I} zlp$m>U8>J>*Bt72lv@JKH?aa-$knyN>@*c1r`zBK4u}DaSpio+u)XgBP%Auvh!jc{ zU8_l$bY^f7n+S4l^Sb8-HzCjKQGg=(58u}=t!Iav^7=Lj)y}TXc4KJt?RZrlA(=T< z*kU_e-5bPjxd+((x!j$vq9N4lV8Y3kyyn$zNy>zvT2>9JnfWu~8p*AM(vU5y>Z_{oUR5 zQ45$e3MgD%vbe1hpzv+6TieZX6cAAX*L9%l-LU;LL_@>FTae)47&0G%QY9nJ;KXee z1jYF5Z?h$?2A{l~T7eA*m8ps!RF_pGF-5b`$fcZv?Y#mC2JC=Bap=&v3ImxS(2h*P z!AZC%*ADu2j&T@fM!gm@8&(gPq!Js3uiJp=gwKbZjI454y*&F7@`nPDt`10L{%F0E zbPwUb6!#mXu!?T+2qU(f&)BM71wo#ZJ~ZL=ulT{jz(6wHd2&xm!v?3(MX3H_F2m@k zX@Fdfk`roc#RzmBOOlmC9MtRE1#R@jz@0Fu)Ntw9nVG5|koi~z{h*D6=DSnSsJK8& zT_v{Pgv4<;hqA>HMC;e}KwFUf8_Fz$Kvn?=ad00xy}c=t#(!a#_;Etk*zLD8X0_P+ za_l-?d_qF8HnfydY43|W3|+{Yab8%R;6k*vWOe z{Bb_}tD|Gl{s2B<1;HFRj|_c(^Rxeb#J}YFU*!0wiMXU>hGZMSVKDLR6-@Ghg|Ei; zL24GX{g}K-bh28ISQQA%yJ>Mc&qxr*P)eW* zuBEj3Zs#g8;B-XPKogUA&Ev~9c)>i{*%Kh<)xa+b_$CtI=a=-I?$z?`O6d5(#+SdU z0Bpw7+>1#_NT@4?B{m@=Cl~&@gBuNM9b{cchdc>`s2!2fpTi|`v!b)doqC9Xy=8UA zntjNhGKJGnAHoU{-jT@SplK|AV?CK zBK89;w#D0+qlKND$hHfEmyl}EP6GnWD&aVb7FHCPBgn$|J*+ANOB@z$A^`q71iAk= z5P4Tj0orue9QrSd9>K-G3T-L`jEsz9eaDJN*ACz>+qh9hb+PNx*X&cy9xK`}t#)ha zUJuw;)6r20hsqXu(K0}H-7uUb7Tu6=L1Yp7)9Ogo-dhQo5frDKIY>9Q%$I_`t~;OG zuWwFO-n_z`4T#5Ma}Z&JL+ASS$^mTX)uTo4iA%`1GTy)IAIvo?X=njDWo>MnfN66B z(k0M7rpc+<@(||aZ9%)uDV%~5%0SrU9E^QQ%qfLf0_V8thJb(o$!CzNM>4|`0_IJ% z+kJw;O1vlG{bJR%;maOj+c(z6BDvpT$0+hert;i~n{^h~x3#sE?j;y8{2406&&PT z9BKnigK-|vea>h~u5t=D2FXgGz^P7Z_$sNc1oXlN=@yw7#Nj5W^JtxS5WK6M>%#D+ zm`8G)JGklo`tvucZMDM_T*-QtTdF#ow`p*?OMd9THoDa?biErPb^ne_J6@(JXgTZB zkU%RXWoBktU;xd=ZtUuo!oorrc;O47R$jm8bHXd%ZA%rEvlsw|BYHlNo&s#;?1{@p z>k|vD#@W!ft)bdmkOO^UG4o%(WMpTT?Nq)ar593GQ5pOCRPEV~r^7-@^`hOpu<1$` z5gLg&24`M;8y}q2>&aHG^j7zc?}MsvsF;WDi8pRzZAE|-wRu>PX{ zsC^l&GRcb*huU}+UfFZbII!u~`i0aI2}|c-e}e9ds7kHwe^Zzm7cH3WlSfj+yNk1h z(}MBr{YRAY>3yo<X*b1g)jWSetTjtj%Hbr#Qdrv$C!T^QNhHqvBeS+@^uV*093gV48e@=;u zqjwP{n{oYPY*~kPZabRB(g`W5H2u%LZq$p*pJ8nKGd)4SDxXb!`7*cLp@V_1C2;D|E!diqU&%h~_-^(Cxa z#V37&*4}a7iora=ZMc2Gy);l?Zt#S}=gGq#NxfEClsA1QHS`NuE=BrlsX&$VYdo8x zwTgn);G(K?8uOMk=eaiuEVS3lkBiMJkVT#^l#$Jk?#Q=PJoJ8L@}>G(!z7s*lPy#7 zx7=(r)5NWyz5lt=AfoNA{O*se{5~9;bOqkqDCUIZDv~QUV}S%%eD0um%ML~J1?LllOpcZT+t&H z9_KuNX(d1nkDPdc{R~a?HLWTyIvTyRacPsT8-C*t_@IqaJf`#*5yv!~ai(-We&DIz zbpx_VjAFWRVRRGC8^>;!C)y*UAC1`WV^U`Ipi)|q%f-gY|0*c{Xc*NES-FoYmsTy2 zJ)PkLeg(=DM=yVx{CWF;LwWiZG(K%U<`D_MJYO6h+Fd$n)qmLpDYI?3qfpx;HrK~l z;JGrQ|K3`VzrqKpw}Z~$_(U?P)W5`6es~Ee&#Rz_;kUvbHcykZ-`lXhP^RlQMqWmj zDHwitN?#M^pPexkp%X+BTpBzT7`gXCcNp{dbm{t7qS33YTopmw+r}-uFb7#n!URoH zZjqdJK%ZV_8;rV^TYQJSjwHb|PHu0C5{~o#IymY5n7v_4E<^9#^3UG9E^+>sYfBjS z{o+atk^H};F^vExXq}k2V4OD`_o{X_P3Lp z8fWeJWjAbg3_nPQssMTZ$g}04D1cU2U(c31S2;s6!t)HBGKQU;4=BJ*{TZ=Wuw=gu? zu#Jv3!zwwg#z{gz&*x*hhA87kwM81*Wa1>$-uk7I7YVedLMoCf0WA}dt=j>8e#PBj z@je<7hd{7$0kJHo5uU7PhC#lvZ$jrCqdx0@*;5oWa|W*`4f}ah^x`XN9Y;B?k6G-D zCioBdP&TD~*1LgN&(0}Oq_bG)M3^aHpTZ~>i8fe?qsh-f76tw?p%6qkjGlI3CZr=w z4K$0`5iZWoM^JADT4I3KCxhhbV~ssnl=G{5ZTAfymxa<+f zL@`FLTl%n1vNs!vh-w|_-g`O|p@V_^wok8uJbi5~J=gNn;NWc-s0xVZ^?SwPwMQAH z5YaRTu>%Xn9{NJM%psq@yu9r4g%moFY1QkY_5iBo`Mi)diet*y(tqW1h~Z@g@xO^u zosr=#iihf%5t4P%p8ST8cCEcmxBf!%k9C_-UWd`RQf_!aZvnkh$zxUdx*1uF9&PPv zm~K_ceKYV_JkU@wsRQW2AQuvE&qwC+BiMQs5BC=~iHm^(48tx@6+XqogF5r$|V$4fP1{;4}yPyu9FSBIUc4qj(5Z zH&BmSSHY1xbB^*Dx^SxRAX|$eLCPT75VZ`T#uvr3AS{z&fAORjZT=FeUqAQ1*C1|6vkr$s!MM`73?fw-Gn1TgmDx(&D4>fzZr@iMeqTDqc z3Bwr7Ei9b)FDjvA!&u?@s=?T$p3Y?s2CXdj=7RRaz0*RD)zAe zK_Uf7?N>g$3rq%DgRp;!h#)BNL%weq1P|r{W8!5v-#VhGsi~(YVDf>YG`byD3HFAM zuP>IF2bLU8Nz9@w9AicQrC%_57tEFv@57q9gYgb1u+z-mK@GpZy0E(H2Lla(uQR)O zQx5)fQRxrt_C@y8h-RBNXK@5ax4{BJh$9dvRiZVp#?Qb`)Qm%zcnzfS(d@w$gHK5K zthg8!y%}yA8lu1=rwL|qELRTVk-l_le1dz&1uT5HN#aX?&Jr$--y#f1i&n9PYcOAbLM8> zunqp=(*nZ6iAGps8{8z&n-vs?yvFpQF>iCE^|`!Z&a2`sY(cvJ>w`7AeNuT089pZ& zAbH?Sp=e_A2#wZ+U$OV3qpb}fxw8z6vZf=UGQeFAV`4nKy-yF95-G_hj3=eIUt{2f zde>o2uCq7bI40l)lAtx0tHY{8K!+V8cVH766>7#K?eP- zUgtpC<4qa~BH*B6FS-H`9UkVqSPV}E9$OnAqI!e1SK_O|LjyQt zoWH}BbU6}huJvXe$}A^uXqO&yB0)5Jt_*kzt$>z*Gz)2JNCnyBF(_i+!%$RjmF#yI z(9jfWi<_^)`G-AToCFQoFz6Pj!iQh7j0dnIdpJq~no1%xcL zCzU*i;~B4=i;Ko%8k33c?nt9v&_ZcbM`$f9f2*&l!Mq1tL!)3ckLNW8N@6O)1ZHh6 zz?%euC`13x!|RM-Wct;I?;wvLAru(9hRIVUN!GDb<_suA@PDC?PfVmARn|X*>q2=R z2w=N(I~1^ZYtk?h;5A&3&Z&54z=_8ANs_`Zb3oSfZ`ThI!7bpqgqyFD^3K2TaSq`}R zelUWQaGlaM>w`hmv5#qCeoX!K)i6uQ8-f5CqB$nCj-Y)%4YgcAnpd z8Em--CQJ3d79`4ILBEW(YvOQ1hlJzw6-IGNuzqM^VYohp#K!$+&e0Vm8e-uySXz>} z|IZ~zW-|)vsZ60yFsb!B{Bb0Io+UYj@U#K(20#2T0w7-vdKE`IVrkcEZE3ZaX&LNJ)nNB|+B7!YUpf}(`&BLXl zwxk8RtnN5kQR$~>ghwc*L$BU>{0pF+k)Cu#bG2-iaETE>#JnW~2-Vt++6j4^v07BPe(uk_Z9Lg=dnUKF|ebk*&N;6pnWRn z&+j10uMimFvSw=rMX37ycok)3ob%P&K%xs&H_0B;1(n+PjHj6 zGc!Lx04WrKppr~f)BsvjXd=Q+lO9Wb5We~O)x}7}2EGvpu8-NY9Z)BwyRWdj;cP5I zP>@zuCrl>skHqh9;=3;lf`fzW=&3%!3=hjY@1DvD$A{kUhVX}tXz;R2pXnJGN{era zT)FZBMug8XBgyZ*ClMY7xPfLi%*90J4aU!Os>U8&*Pj1nK7l{}!Q=0+3iN_z5sZ=1 zF<#W}zX4st^eieo_;mzSc+uS*Ws@4aeu^eomS~>5?1Z9_Kfh~I`p+2hvI+fGg>>?+`e#@oHclE)(2O>-a(v%VWl!B7DYgZvAt`?A!z);=r7-+8K>r{Psfqj;xkK{mq zsu46Zi(>777((-UgJMKsA(uDvAY5sDr!d6#eKB;R@4~LrTeOX9V$2w>;gvcxN0==!st9Xh$ zW0q*$cI^EL8~rbdHs(Qh=@GsySXz0^wfY0zH4FY&`>%PP1T=z?$e073azU?%?%UyE zcgTQ1_es+I5RDc^1i!v?!RLtb#?kih`jy@WM1L%AK( zrVUq>9IEt#vjsB!jJ(DYTn0Rt0lvTiE`I*FPAn?hx~G*T8hPy0w%fx52}e69?JOg! zrUCjhmoku6{sl3vTlI`#`L}Pbp!jO_D7~zGjAsoMgogumtP!URJ4oYbzvxk7mmgf9 zR1pX7ayn=rgsdPXH#eaV6sM`hXMf{+TjREZ0R%{} z*xg37G&Pk5K%{7}x^oZK8=NSYTfiC$bjNGO@K4A~HMm591cHwj{$n*;#R#LiTF}F+Sd}V;ZqCjEL=3cru1F!vkZuU1un#o1 zzkLgYyn`|rJgtO8$yob=c=gpfXKmgMT{yGJ}mE7(vE3E==V zUCF8mm>4XS+bQNLWaSXz+!5!Dp15(z#0wHm8oY=Ce8-_jVTRe(n=nV)VA`FPo?g}6 zP!B{n-6x*a)zzX+jXwP;m+Bdu4(Cr-$wL)^vP>3|C8#c| zU2omuYyisv3oRtkobulH@6P@pSk{Qng#O(0;zLgG0@W-zSLY17nJ7#89=CA1@~_S=FQ{KXU(vc;{KW zFx3z(t#hoCqDRUMAUI7U3d0TB^o0b?1YS>~y5v!SJ4{*v9WqFuL|)P_K%ra2@DNK& zi6cKKzdkEoum@RhxyN&?VGu*DQ~f2AiQZnUF{Hst7mnUSG|%tC7fb5zn%HjaGAJ}} zi8d9`-XXJ1`0E+u9a zJ2Zosb4`E=?;IG(nwfNRNio~S^@)pBJ#xH|q!iytvswF2mip+gXUl8nP#{n&!pKOz zg00&nDn#5sX!%i{`64M_Y;0^@EMt44>qm~%cLai8R45Q}8y6TDn*6^ztoM=z6zU9@ z6k#QwC7xKaUVBcw4Y*xWq>Uw12@xY#bb-*;Xi?*7DJDLP+AKXoY^YhG_v>mH2iYpM znCn#-L*6chkEh0gJpyRE{#gwcVhDFnA&9b<0`|k3BLM9#8v6TTrRx9Nnvn#!>T-;d zT%@FAPfawYQj+VV+y@=}Xqh#tG&ktL6ymqDkl!Ti(hnS1ijoqnagg?p3XkU>kQY7?LzUxJ+u{*UY=XS4 zHMbQ`sKNc@LAcEzZHaDT+UvaJ8DWt%R6>G*X~;EFh?k9Y7bDqOt_K*H zeN=9Tf++2Ll^%uVi`B%V;j7zeVhk_M;M0gfA@x`JlVnuo1in*#Y5JtadTyWF+jKiI z(CDIyta&VIA6J1-@61LOLu24ys=O#IG`(8Qro8|TwgFJAQ@Y=|bK_oc_M=B5+@)4D zC0cJRHEw9%c(br8u!p68Xb%-iozw?$@U|u=-RwD=txv3_Q2vgk?I;$S!{(>cKCEv%E$Ep>RF!w;VdfyxLn zc4Z?`dxoaPUjPTpu7GFhGLaw}NuU)B<0qkt@L_|p4xe~!#0XNKG9-0s zy-#$=#ybaW{W&JdhZOW5lYi3Q35Of1WC(USGB3MWO;8o8g#wqF)g;-fmfCVeI%WWxkMTHSiTaMClwZ-icHxSQs-Hq!Th9bE!6!btAMb)0RhRF z_i0JS!6ty4;RK`(kft0zAUQMk#wbF!lJ~TG9ZRh8t8%WY<7Z8o@m{>Cy0mJ)mvz97 zcnE@)Dm&&jEm>Q403}K`am?(LU&ul4SY3M550o%XR_g}QqIf3h<%gmIf$Ijd*lfu# z6{*S)%_`@+xhoM>R9`dm^jGh5wof~LAll1-Y5;cR$84YdOg?Chb9}7rRHAH?b*1l4 zmmV>_KVyuWX*smUMJu!j8B0W^SHG_2U5O%N7uf0(m(usUsBge{@SOSat}gthyt5g< zr@sI~0REf|2GRyRYcm>~m5|0F(9vC1L87qpk*h;k_R&WK5EfhZ9I55oVF9(2m`p zmTFq3J7?qv8jr}{8Tiw7Vw7Kw^{j$5?()~K;|AclVxd^)Df7zWRq%BXT3x<;nTJR9 z_=qVVs%J>G!8etS#rY6iNy6wfd?C(;=;DaHBL_tFzM4XQ2up{Aq$Hi1ZnG+H9tSV) zD%3S34=UZ~T8ZZ=WqCsfKI)YnSq4I(X;AO6NmE8wMj>=@*lo=MCz@x4L!)cU-tgQQ zgf~!VgYt;hg^1Xg?j;j=otUw=C8VJrU2XKrhUl6Uj9aEVSEPJG89_nTq$$Ut(kXyd zPD3gZ`s#tAjGB4e%m0VEw~nf+>mGlV5CjF0QaY6GZlndIyQRCk6(kQSC9MY}4&6wD z(k0y>DczlS9etkn{r>J9_m1(qV(vZX{LELo!)o%=U$f!FS#}r! z$}7S@WJDv8vK=$EHOh}4`T``Ya!h35ndR8#<)oL zls|^dEcrV8oQ|1s@3jegYgu)VBu*}{dI!ClKWzo5T>bef^5kIw41Bga@2tiBY$s#@ z-=L-+D+k3$wHLZ}-_ckOCztkZ+3Q|nmESwZKuv#N?Y+bX(|f`wJrgJhDDk661ZbLp zTDE)?itHwhUUYMyuz;QL=FSC-165=#m&Dbkq9#s0qTsKLa3kNJC*=Hr%i!7`=p?m# z=NDD765W#g<=4C$5KjTrviL83g}8{iaCpUx{!Rz0nN^dzqxyj6{umgU=s(< z6OsfE?Ee=!Y6F7qP51;*WZNnM<&?%dSp|l=j&4luyXoRj405VqARbVCQQOkgUsIu~ z3YF-zf4q!UUO3!F*wZo=5~1tU0>yB`YlpB`T;YNtkB% z`|KEQBsYV`D=j6>f0yTTjJxti{Nd?Exq#=}J5 z7*+&pgLV!s9*B?dX@zvyoM32L{yr#hd~rrF_HuF6s4cN2Qa)qNPc2OsxF0~W<0T*l z0;~RRz&297Rf#I&Dru(f#*C=Pp!Th_E6YY7&XHJqx+mR2Swp4a+0p>{5G??ysq_U- z&9#1n{aT7NcpRuPz0GL#4V_PS)~S;LRs}{6p6gmSpR}H2%?>)3(`iOyzj3m$jID-3 zqLs^SPcuLxt54V3IGueDeC2`;^ml4Nvl~5-YPgAAJKt)XnBR*~|HALgB=!|@v&|z` zr<3-^HgYO8js*4R;_b3e))6A^4^RGTu={Odb9;gLH}6`M^;s=W)hx1< zQm>v8b9s5DB2XX~!picV4ZY$61uvfnFQLi9Zh+j;;K$lf`+I}wReb7{5%VSY;k=sm8Sf_LS>!vT;# z;%d%|E9W6s!WjtlluzjbkZ^r|ybc-GAwmW8l=_}=&+@PZV0d5>iLn36tMO@Zt;TUa zpa^G0BCI7(G0l__V&(%|Vtxe5aP3{XpX@+S9H(ZAmry5pz!z~g{y2)nLm|0oY#FoQ z{7B=rXeXr?Rw+7iOJqzWFgWX16&bgv&+ObxmRdS#lxvYd0HRJ*Ntl+c-4ogi^JoVbw!$k0bq!ZzZW)%OScqpGLSh+ zm%H^eNnKn6A+WA>jl zJbu)EU7423#kp8%#318;g*qPyh?}3E=^nVuljM8M6gkW}&a~E-f<9HrY>^SnhMRq; z0ec1?W)J$Z$I(D1KC``RFzRP+8jZ%@J!yM>`2?^Qfbq_(RY@|R|EfXBx=LKXu_Ph# z07n^$29B_91I9LLL<_y-km`FaYSODF0O#JJ%aqv2lvn-rB;5#?$aELK609+M8TSGc z#xW!m>x|vYw5EY&cY>~g1KI9=ty1CKG6G3UBLdv?{>vnHf{vnZ?m8tdbIl|*<~T4@ zczSNQvJ{xx2k1XIh(U|txy$NKzK(INMGq#3YlxTcYTQZel=QAHrLeKRM=gw`jifnP zsaV}2k=uU+JZ7-KF@`j{(^7XV(LsyN&)Gd+8T# zPVA9bC|rSiR}Gk$6{jgx6Z6(Pjlu;x-Cbed93GOJjT6^yV|%AHoh^aJbXRIvVq?jgiokaMM(kMXvo#=y<#qNcoc6u}mtH87UUw zwL>=|h(0Qr$)k6Rsb{aNltW`0b1$Xfp6Kl6&q|0``e* zSrILp2q7jhlFy18t1U;!k^MhpA25bC$upy9jjEYsN>r)dBNDv&h0Jt{J+Zgw_->2X z#$jL7@r^tdlTTK~;l`yI?bJ3xrH}*UUI6qZ0-E6I)=nki+2E{ql()nM$IxcA&W^BA z3{MQ=FUQ02@5>Xr0k4c^P z-VJrtE$M~kU|Mu40P9fb4OH!t>ViFT24W$GI?a#!8{V(c%Z4B{!74q6_(Sd^H#7`sPBj4#Le;3f zphW#8WCoo;h{jP>Aik;W;^>@t`MOMFgOMCEZrVr%v2w(zp&WVL<1CP&XuAZF!PIAY zx-mcUn^Hc5Jt{kmhuCWy=NHO@&%;$VyhoCx{6XcD>4{+-ZS(BB7JksiWRLE5Qjap2 zhbLWnj5N#h3c9fH#`L#6kba4PJ3xa#)2k$T)n^(O<1*9Gr}5vP!^23IB08=ob|ifygu^`X-s$4eYvh%RgDES6aK1&EH= z3AMCG{f028JM|zS!D}djr-tv%8+&_UFM#Egafj~u0ADDD#pQ-e=DDO})=$S8=4K@x zZ{4QN@Uu46gEv)CxO;M?FxTNzC7eqc+-OjjRUEvrd77S({fz5KH~MKdvNSN}?z?_0 znZI{*Pi`3^)Bc&PZoE+5TXcvs9-*g=XH&@wMee~!jMQow7qy^n7qpn7Q)_hFD@25n z1@`zRSW`wE)q;`D?|(QA}U z$4G3Ir}aXSQ!ub8;jMo^oMwKPezTIPrEvS;^qu@-1?FA6|N1nmd~KRD&if&STgkAl zLc;jiO1^@*`4>Rd3+se($c+>mm0Rc~j%cZBg{ty@qOg#eczAbVpBv#d$qlBWINn#w zI=@uVOKQ#x+Hc#20(w+>*XvdZekl}ngLaqG$c>!LfW{RPm?~X9{$Ed#!24=F0Hy(! zR(#IJr7b82PbwKsUKxUmwJDa8v^U>wIvY^1RNFJ=FK zcA-_=PpPV>8W#$bLzOB!jYpfgyUxeO%c^6CkLt3$ZNGpj@Jitd9Ub?MUg^tfO{~0w zNKf2-xr3E8$^VI1$kJj(?fYOoN z#!Tfy?J&h#JvqO^Jp=|mCp9#1v*8t*PPisu*rbV4-)(Zf~T4V4`+s}V41k)YQcy{M;;@Q9l@-v8T< zlw$qnyaXnhvge^GQpL|cPaq}k#~q{@+WL`*GrN>QrUx?bumIDpzS$5(ydjwfE!+{-@zPzn(RkF@8)D+Em4> zVw1El!|#pt0yAYoD@jQHbss8ETJ=fK&G)B=Tgymu&a1-%-|&(hriBYkqA6nslO#KG z?08jhioL6g2&yP{SE{ok-VIN~aNCwN!n+^;~Xuy<+V>symzvVe{W&% zF}j;CJ-=J>E~`rtmGd?@y!<9Buqo;8GTU5nkF;Tf}oy4J+71dxc$_Ht> zU#xF?pP38oBxrwmxNdVko~pr_vYsrxKj4!Pi*6@{BE>X?+c-=2 zn}2DTI_$IJwxjjBz{C5RyOZ@i3}!)G{Uio{0X*0_7!@h6dxDlydly-Bw<_17y(##i-IyZE+ehSoMGdIC+s zGR-m}B$~mG8cx)|k6`Sxz+!MLsup>9*%iZoZ6_GKFtKmbmR1RB5p3Qx67Sy_zmg~s ziqKi+wr=f_-auA6s$dM1SY5daVg9+bG7-a{Qe3Zv-eH0G)qfsuex$Oyo1rm zc3lj2)vC-ajodgDOQhJgWlfzIMclI$&VCMQ^W?^)c_NW0zq)cD*F3)tp z*?wDrXUCt%wje!r7JcH3(|Z1g+{kKBBZD@l)~S$fR7kkzj-`?Iu6%ZI*3W^5KU(Ee z47Z)O_my;h4ty(MUd%q%-v;w-a+Fc}`TZbwn^W_i-Al}khs&8@-d6GN+_rZf^0={| zK$bpNF0?Oprq4dm5tJk%=2|pay4z^VV${ObmLh~LJ(WVFxhLvPm_6D5v_ei|T15t1ixQKMgtURZ9i zwu&mwuX~|+&z?q$wmawj?EHE(Ro`=Z?3>2|RX&VnZ=4y1a3wN?Q{lquHbf^aIfF(a zuRGTmxQ)}gt+WIEWp_i>1sN>aPnAsL^>zsi|+jp_6ga%16mJF0%-lu{a1`Z zPQR}OFi2}YTvwW;*N7t~zBzEz7?km7&)FFE-!dcUL*~)iQBh;4WBMg!dme*jK=~vU z>HR(7^m2JS47YxDy;L78EnP2FYIGzx z7?jHN`TPpw?Vec*8};#5)1le&n+1hup@%tPWp!f47`ih;E<+e& zNbHBYSZ{Flri_&0Yp3SyTigwLsD7or`Gn(pc_DT0=@gEm1+F|g8miP#p#*jqi`fzx zStASA2ZD0Pkdhx#y&x+*;6ihlFeh@8~uv9%EY&<&E@D*y8;#7Wjh-?Uz3ukBe z?cXswG(8I)Sbp^aaMbLL3n+A61YKv{ex{Q_T6vC3l4_*Fm71==$t%7o>_)vqn^Npg z1>XqN88(kb&fa~XG_P46iZI8Ul&t%7Pu}C+V)x+Bw-u)ChpT&VlhWwr)LyjQc!5mDZV!Fgvn zG#r}J62@iQn_IEVSE_r+KrctY?T5mz*Ep72751<{BNZ%4;pUCm&r|D=Ne_5BDsZ0! zApRK9<+>l)lGZ{(1~tJvM;>SUlk(gA_-h>QVk9}$x* zD)qr(ZvTM;`$_y#Wv!(qPG~?#eKxP#;gh%7Ci!RYmM4R_6?4kR@E`$?TUdB-JNhc^=E1(Z@!*GJ_o&c{iAre+2WyPZ#)G6dTAWKT zX@@IN9u`ny-G5dZUMPo%-E)ET;jICDBV~D@`H>dQj3JzT+YD+{lDtdCoxHif+*USu zJTm;y%KhE7-5h`SikPY~FPabjBLq0AK z(CjNzt$D0Ctv-cZibA?9 zZ#QC;?J}O<>e3P>@L3J1l)^*V)qZUu9PgDfrd?5xL~G)?|F2SgJKSEKaDU+!(SB)< zyQ7VUz?yO%%ArPkFYm?oP|Lg)*EGE6bja`SugubERvt@J+`}YQJLCL}k^O-x_zkR5 z*x)#8K(b+I03X@uQ$qPKZUW?U|ErA5m-b{wAEge0+>Nrup4QKlxwBG;Qxzu^bMekR zPjW-ACdYcdrcR3*m|SK7_A=Y%=LE!?J_H=j{8h$1!~D5a6i_*G-!3cpP_}iAQW+hw zQBl906$L{jj@VMEzUksj{ML z%$XJ}{h=`(pLLP*7M&7D`Laqs;X1wVb?jbZ{t@ej2L@JX-Rq%_)=pCVh_Q_ORqC>w zNEZLOu@+bIduPPQ5_jZ+raVnbSv821cvi+sTG3LENJiSAhkeR7_6w2MX71ZExSng* zq_c16gZKN;qO=2~vR!shb{D?CCD>1}pE6W>7cOJ_5#mg%`#n*KAufVNYZwKAFM7gvAE#DLbsCQGE?^Alm9`_uqWS}JDh zId)RTdX1#p$A?a2PsEV-U9M}>Tg9!x5}Kg&3y5QCVfP-GP<$W?b%@jqN(bN8?Y(DiF%NH7TAiUYKM0up~U@ajc2AUxhwla zZ@%+LDUEVm0viu?i?+!#|F6Rc^L-e2EX6KqA%wy-ANMWS31fcRaN6@7O99+kvwr1{hwd>FYV#%rdC69j zdcn6}?=F5l1RNCt{I_pasa5GVs5s@cSffl)A+U#&Gzh$lRvFbMGZ7MFZPH`SG9xE_ zK+1Fb5iW7y5F67r!^+kW<*>2xV??Tsv+`qSXH{;PbCL(lGSWl8cle_r$%1xcN^pw4 z)e0&kz)h73S-9g3kxAZqOc~DM+ixGI@gOie$qhwOE~Mg0W#-?puE*1UN`aP7#%<{G zQzIutt+bApPJ9F6uRcx$D$mkgrX%^iB4#_KD@Y5r(!UoJQvc{>$*jP4#Uak3*WVQn z{FDrpl7r3F*xp%(NW7;QW~O5|YiE06Lu(lg%I_G1;II5t72Zs^3R%_dj-O6qAkZ6t z=1H)1ZE^Nap4fIkfxO9s+d{HatTyt>EbNsP-q$u!*)L;n-5SCrhG5F?tuE%f8Qd4CxYF{aq;s;_9?%|xkjS>YsDW0Gb7H)kgB8}=@)T7nhehlCQ_S$kA^yRazB1m z57bJp;!8k!#~T8hyl1iQ?2qrrTMy$0&#lWuw94`#sObIqKcgTl*q@QGJk)BVRLj^K z>f{QLH+`p5wjPb%S*Ny(A1R|v?WqYQ*XJ!#i!pRsql&E0roZW+Xn6-68JE6Q;?>^} z!^Z9*$lH#P1T|zN$LC)GS@dhyCNhUM_2iMKju*}5^^x0p>e7n_xK&C;s20&V1l+P zix zw~}cilc8~2?YuL+M?_X>3KR@<)JQJ_C|as=nD|Z*G!2zDsJSh)Np(d1K0ZnQNY_}{ zlPAn}Bgy&U-%W3_+yG|~%k#44>L<^PN^n9IyRfN+GPtAhI8^sz3F!DpVgtrV)jWyu z+QkflQ^&$B`PCU<8DZdo`o2K9yVevr5o)}$@UO`NcW!QopVIR;__AoBRHP7p;T0YT z>|5-#u_^4y_&Mn9BGS4c=HEzVC%3 z{!0&pft|ro?eXL&v>tmpP_qKT`;REQKZ4GKx(eu^YYYSlj>a#rXv&v za>CDS0)?hs<(3s4@3GJiT-2AZ62)2`jHEiuzCr)GN@=0e2$d>ge0t8>v^D<&>TxV< zPEh`s3HecP*R4Bcb8M!$+AH+=qg%&pakmkd*qhpx$)uV6qTrSUJ(R@dCmnLnp$~3$ z?sh-E!SN|^b;kM8V2b@HrO9IS$+lPLeEX~TL7_X%eN5`s{!vJA=sL;>A7@p=>ne8> z+BhR6?h!g~4#8}L>Ds7ym-E%;dJ}E;68(apzATsQ&Ura@Qwm0IRZ;LN+|L}Onx?u7rHm^zE+`9>)B(<$LlG%vBXq;d47>y6Un;;{%Fa}w zfBV2emLgtAdUU`?%;dRg;cJsDECp%LiMZCvJn=?*snJryz)75CX3HFX2LEwc zbNnar)jj+HE69p-b?(Z^@l~?n5=V9G&dT{$N96 z_9{_xRz$jezNd#l4JK*Th^YwiJIx(g;?~K}y4-{}&^D-n&zM9|7ln0c;^t{Qh^|}V z6_{rkscCIHAVRRYlSPBm-uLl5TyEq5Gvgeli5p3?$kC&&b!1eKiJcsK%f~IZuy)xp zWoG`AT4vsyX&p6xBDMEE9UgLW7a?MwCeF|Y(YZJA0XH%}oZ?K_?^=haNu3f9HG~6$ zoJKRyrh-~WQ;VWRKa59?CH)MjnWL-mjakD?si3wl^zyUyG5#ppV?aL+lWksa-?}n! z4~Qib+bJG;szfcdbsWHwOheyRlf9e&-j5?byH{zWz+QOl^d9^*Q6hRV!E;@ngl1W9 zy(|ez8`^9b)2lINI)?D^m=tF1CbxW}Dy)xVyKUSh9_oKwd<#wFs7qHcYV`fY~QvKo2jimVZ8WW1IJ>;T&iBvDmke;2@TY9a(H>Dmx(OJ`qklS2;Dt|R|X*hE3B5cC; z_DuAbHF$$nF}L`t%}D)SGL{@$m{<$ed&|{{{1^s|*3H4Kd!=O$6~BnyOM7k5|5VkS zYt=n=4leGID7af+Zv9d7%Da?+iJ`E<@;Ho1%>Km1?L?r;0ICqa=yn#F-=oTt(DhT zEYZXv`%pe#`yGEZj}bpcT6LIjN2j92hUXz+;96G?kIh(yVBkiPIt~A}s%+{;kRksW zbNiz4$YNztwcjjC?p)EK{k!lod});?ngqowM9nTl3>mzai_etm_m!%sKC&S=SkRCW zg`S!d^hFfV@>o4A#?n#`7I-!?dVP&&MXCI1^~YlGmP5bK?k4l=`&Xj9@>d9IF9HZ4 z<4_!qa73vWa~Ycms`w0=1f-7Qum?*zJo*(28lqH6PioiQB$y}0NmZYTt5>xj+I(Uw z#ZExeQX9&~V)eSdr$ZeA)_Qr9Aqf;GS7D+Qpw2REhq|sj{!OO8kyhy6j9`!yi5J44 zJA6CNA~(T4I3G7N<6WSl>0)Kkx*8(o0@ufEc)h)td&y0xLf}%?0Ij~lC)LrjlA8E{ z=th|PoX|gFeyOw6qRy{&|13+N9J!zW*Z~cKk=AIecj!5X8J=TVM^d}*)>lg_79726 z?7H-xiKz*Hi*sbodi=G{@_FS5G0``ZhBNm~-1{7QcMVH#2i%X^(h#5&gZAp4Fm0A#N6G4I`r?SjYZ_`>|&Im7Rwq)nCPsoOL7R4#O))r~P)nks2OiaS6t0 z*Nt5v_Za&Zk1;>hyZ=fPyfNR~6}HxBPUa6`ips=IYa*ivbbG$X<#oHue)N5D^ty{p_BolUoN4p1@Md);cV5HtGi3pJKS(V;4gWE__1DMw$EE>nLMq3W%6 zffe=WeD{r*d_?lp1si+f$?UYNVHH8D0Re7(aphTf!Cqxm7W+(4LQ&4BjZKx?FhjLA zBW1r-YLEqEL1MnvMIGPpai*x!WBH{IgRB{+960w8u)baQt^3($Th3&VcsNbAeex3` zM>GpTe80k^9VIC&@i+~8-gvaZJ*6f;g*KnyXN}4@Go~<(15dKsOH!GDo5e|SXW80v zQzV`0b7*F_dbM_>egBO)635+V$h>PBOxritzD6smENsSTsYa4?zH;wZa3jk2-c)pR zDip(x*8z3W@04CFfwSMLb|Xvc1pTLGdF5)0p^34v$)kt{@(|`D<7T^=vZ_4-cPq#H z>c2PHk*6Cxc63KeTu`f{d)ILF#@tsSFoItn>?a9}Ht$hr@=9>%bqe@9yd)W zk8{3Fxl8FU5U_C5Ji@Hs(Cf^Hjoo$Xxou8HWygR1 zf&Jc5%2D`C_(T0A)-`FogOAkk!(LJM2EUYcN3dw~Omecl?HR`Ez2^BC5SSE(UD8CS z;&9!-dnUQ~Yr;0|D1M@kL~bI=A0u*4(6ea%OuMJ9DYf3(dUm7H+{t2kgQRTzRYA1S zM17Qsn)Uv*uUn7f;Kq@|kNm>WxZiHM>FoyB%ajt}+h!WfRXwcE zHGTEFEzK%blD+hEATMxOW;TiBudaDgE*DeZ%i(k}lVit4VcxGv zMOdM6i$|@h!$z>=AKi3_`P}oy-Ml|NA%Hm0o+Q+~-+7m1nLFd%`L$TA@dU2RCcuyR zH~(I@FOS$@H!F9W+ zh;{x`z~Ljh@y6<(9C8zBXSjlA$GyYw{P_Rxbo>9PjsD5H?)_1 z{o`&`5Loxth}6#eMwnF=_;)55lZ~$rJ5cb3mJ!f8FIR6$dCf=bMt13=5bb{ zQ&|f`grHs@C20TDN>{q16{_}YeXhQjVL2qeV@{2gE*5rJzMWe>6{BZm8a@8*G$;(H z>-o$hG8kn3G*fNMt2-^>p$fL&b`w(mKwpoImNZ>d=~o2Vg!5kU7gK0-Ou7AN@oM{) zB+cb5P|8H=xPMDiDQSTc*j2VeSA8>5Q0c@chuK6;^Y!x5wSVTTOXBIlwfpeC3U`uI zD=`?o4E@Gw$Dok=kGh`uHw5V9>Ce&rQSkq%&1woPMPjFKha<@rj}b-QxF*8FNDMSSX2x%}o_NAL z09Ef;XM9@5rfh$m*hri6-#kE}UKEv(T9MaSCHvF}nW3mOPhG7@j{>5MBQd3{rKP2> zKMx`|t91c~f!+DWtLqErichFM$Lq0LzW@biZ>~O0XItVbKu4CE(<_AHv!~71cNxH4Ula5 z-0<=7LrRRT0c!(z1CYH3PRNG|z&)KZ9S}9H&d+rlJj%?X)1Wl?BlLw?HO&!ux?Jki zmP`B>dVl+j9iZIvQ+0qVtxlEI%R6DeYmcQLVduF3a|lB`0-jNyRl=SCH~Obj)wYD9 zz{NN46P&6$ninhM4BU99=iaM=cns`Su7FqY^cKJsrMpl_eSU)2I2X+TfdY6xg;gpd zN~-A-1q}wOGn`giRq_d0Q{fj@&G)T}q*VWO3Y&_ENb8J!bL5OR@TiU^6}|v;ncd zB4R+7HU2EM06#O;wg(C_GT~DsNdV9eV%EyyAwL!NJQNpwRV|upHX;KiuCD5z@mPc- zcDgy%YlXy_vAeuXNe-OP&UpaVfd$TIHR-Vcv8cr2_6N})Lo)bWtqxbZ&&>f8=I{iJ z!rmu$piW>YSam}|JP1Ylj2!uNIv3cEI+%Y>da>{cTM1l?5?^K2)YKI50G}7}4`5g{ zvwWfLdO`}E+gC}oJSzdP@p=Is184_c2ylgFV#2tqw41vGJ}#3V&grUzd@nW2X+9=I z16FNI&FmY*8%`erFvG2+|F+=K12KS^byNT`doqf60B$98ACSGk*)@O-31BP$oq!UL zK`KPF=)Be^LIix&xciTl+M%5Q1O}!Q!yt$%&_T6R>jTbV)T#tb5K762XCP<>@Uo-4 z0&Jtg18lH3tI_|NpO#-QCBPuDrpGu}!D|QL2~r^+O^F9$b!v}x(bYhBF@q+kCI>nB zeNrqCy0!4(;%hVxz$G|udjO#$Ujt++M)NW-&A%0Q!B=l>;DuTUTzTzszV23!!zhVb z!gzp>r(S~x>+QowkHkGdB(hr&C3qv5-5kI;4?vW){E0|9Jiv14?ELiU8TUwP3K*hM z{%}&y5YWYgThGqU?(FQ$xF7?T+SScJl}?s!9K+7bf86YG0PWlVur`<(jSAKlJQ}zY zECL*KbYGsCnYpH?AQL=uZ*=u3D1q<|;uYXcY7>owlIjh%Ry^2!-hfz1>cTY~fcXXh z8i2#4@QLL<>0mlPwWG;RY=e3wST?|9iE+?EWoGt8kcM&eYaUCq&m_;j84;0{m3{e> z4gwD$_EiCN=ioo<5pX0LRiLGH-JU!E3&+zhg@tc|FbTQd_&Ne`5S;)kt5OgMgQkN3 zE=)r%T481Ys33%*z)P8q^mkwKvKhfKHCQ**41k#*O?WvBxUmB-dWAHeq3_>~LHIBL zdF8g7{V9oxfsp|M07XYDczM;G>VQadAV7>knNbiPS*Cy|z-oL1U94Z{A}tCKD3yTj z;-gnjBgDe;ggie#|L_2Wmp-qxo8$9j1$RyLCJtK*M|#7TPW&g`dEnUpRYLM?L9a+&jVCm;aq0#c`VGmY!>t> zJ~RBYAxS8?>b>j8|B}S#chgv*iE}w?{9eIA#A|5ph4Me=!|ZNvkGq0q^!X2k30XVA z^O)7hMe4)U5o#1XuLrpQ$QzZ(xkz|X3o(cKA-nP@N-&v|jB>ZB;=tQ7X&@(_WiBpU z2Pyy?#(1&KtwztWUCrjeFhACZGe%GMC(fJ8xx{a|eUI_C^hSW8;LfD=Dl_R>diI%K zVtM}U2vj@Km?iJOSN z{5`Ltxtt%jRro4_D zAnxkPwaoQiS(+SA_Xf`iv>~G#se6JGom+qNZKb@4}o}# zeLdj1zViis*4P=L2lr>ox+YIYm-z|oi7j9MuiKVw)qP?bB<8{w)F8Kt+lm`W%U1|f z)*hbt)z{hK#%Unk@(+1Dt=a=3{1v^aLL4H~3xeCen@)eYc==R&)b^YKNaw40O$7B; zyYH3f3LeXiR95(G-U?G+7>r)6$*7T+w9ICgHy_^J8i0;!bl1Nbox2czD>4>CP_xTo z3AC=lcT#65K(O4w0Y;~UHLI2L+!`=6xvAJBpXI#(|65W}H+{n-VM1OF@Ep+?KxNY# z+H@VV%L%MCr)l+F^0v1g5*{~ID654s$V{YlLz!~zscbtygg*FHZ!U$-j)mg_AjeHb z%4!hfW0(G9<71}Wj-qLWM+3rFD+_fRB;d8ggp20s^4R<%=azMa`u&u9u3O^}y?ratailM(tR$;||UhK2I&no}A9=Pufe1K7PNx zvg0}8j>{a$6!~8 znE0{81#2=8LpOa*{+Z0y7M|Nxtf|gv?ND&x3MsJi!RMTlBAB2;FS94L80t9cRQC}7 zCPQ_lozLQHON7>N@a7V{RQ9sI{4GOQTIXp=q_%etEdxQir_{gcUhFQbYwQ!yI!|p{LgM4Py{N7U)6;jPv+ydiiFW>?pSP;H_)DM&>Xi>7JRluN) ztS>N{#jH+T`&Ynb3`*4+KYf7bYOs;U3M@tcJVmG$ZM}3>r+OoIUUu~~n~$Bo;_Jz1 zcEQoA1_O3%44NBbZhyUdl3K7rFHR)_u!+rh^B<|X5!l4m4pBh}%I&S?vWdPLko1^nX=&-{ua={QD;MF+dcZ#cTU+J( z&_wW)lHvsbI<`E}1hw^Dy)Alea2D+2U$arJ1?EdOd0tKJN3A*yS=|xx{VI8f>GE)q zBu_&P2w^}Z1bi$HK<~6YuXS7|;Ih{d z%Y2?vRxp4$SdVW5ckF|+vx&vGVBpy{w()sg^@jGCE;C-Htjf##O#pLYD9xtY>hIqn zS0oO{fR-`64?LSGeE?+U(6KcD*(qduqGSO?=x8ZEZ_dj@O&v(%rA&P?nI(n!q|hgg z)mUw2|z4?%8dqN zK4(K(1hHJ1--zuGQ*Lf;(dz)|r`G?@Z$m~9Fgj-iu%ABF|I~4Czu@V|)Ks0BPBA5% zuW^4Qov|272DAnr5dHJO5dcRLX=&g>Oj1mIJkG-~2&5oL>@!U`4E>L|q9ztqx(?9h zb#6Q1(E!mt4wZlarf4NAqZSA6w`=@l5C~G)8buUbyyU+ZZ*Omhi{*A7!Tz7g?_Qi@ z0Mq24rF}>Wf~atUAbmbIv$Y3+T4H_S0A}d%)4wfrijgq*BsmXmK!IHXh**+{q1+Bd z-I%LC11wK!(wpmRs|!t#-v#Gyeq{!$Q~6xrs!!nq5I1HApeoSN(cWHka`4v0{`3i_RD1XEpSnvml1>dtdAnI9uZ;i7{xROW!RLWD}(QRxEnCkni{QNq0 z89=mu5ZD@F3C7v{lRtwL26qJSEwTr+8M=MI@BsnbBz^(N<^BNxoB>9|w0-xCRBHh< z#|;$V0IJeF!SJi2gwFw0&SOAS1oHOs_ynN+0T*&9NlCaDK6p;B%NaVQ*N9;D1%YK* zguJ}HjkiFH07#R{y%&hf%|H9_R|(T-!oA}DNL8?m!^1;>)iiRWwgCbr@bnk&8XQcr zQ!WA$|0Q@jwdwEbiirX8s9tm+ltxD3Z`F$cZ3^%st}ZWu^gY|zNlinO2c$c~F90qE z1gmSn1Y8FJ4>EZiMQ!WA<0c3PqF$`4rLC>K^*k3026`t7h@EtU`pNCz6_o}iYHjp5 z@b{iO8su`j33fK5_;<-J&IY1VJx0bN4qiG@OoGax;(u3XvD`!dv-yl=oF_rkZd<>x zy~Z5Q!sbK%ERr}9W3IRff+=+srM44IYAQM3Hw7HR-QUhPvDX|u2Ev-qUttS2u+d#1 zd@me}+FowPv1z16mRVR>20;SBJ02JzXgTXKWemG7^0sxjzEh>MB=^V zd^cDJou>whSi|5_m+e{*h>_ID#pzY^b^avY={~2`>@`H`C}a>rm)P<38BBJ>g}7|+ zQqZ^IM(Et<(|ipLOuk_2o%Alm?Shn#Al@M@C&AoaaDQhsGBV|fc)o_>R&>+m-j1;0 z7&GA+^@e_kWy<&vdZ01N;Ox+MU%RXvpD0DOt-!%c%=DU0;ad|As|Ru+89eN!BkxP7 zi%08?l#5{sUeTm1<`W+hP^yXLM;e7jIP`k;@f=;&8$##fCb;a+V&~l{dlE*Wz7tsJ z&~Z{3;TXMF&D~LbU4+f7#krljjRh}O4=>keSjF(fz3gOAUk?m78iA{fMDZmx`zTC@ z23=hZ>?5kK`=UT~l_M9dxqTL!HbinySFcliP9EIk@P4Va+4*v`P$GSsclNB2o>I;K zSUNL|GO^vmj<4(`uW<2t-R?vDx8%aEAX%l9#(*rJ>R5So2r6>zv&N@|qKuaU~~B=8E=}b$;B&D~BJX zMUW5aA2^@srII@PnzrryDwJ}Wt6bPXp`r9pcKC7-LX80Fu$RBHTDrvB;i*Z3LE7YU zLOKTneJDE%71AqjuFv1e=G7^Oc-DN`ASm}zZt*BzHe@BwdxHO~G}HK}{PwO;(zW!M z)?)t9+#G(<3jv<>x{do4?#o;V*g~}UxUk|;!+Beax?meG<@27PVCwpL{6@&e9pW`B zDmI#_or$xHlc}LC{FA+r6&f2W3mFR;{1X=kFE`tNlUe^s)?sBMW7gEtCgbHLBSYh6 zVIw1B(fe;Uwtun-2%s^mdODbrF^kyQ*}I@ItGF7u{5gJOX=jbbtZZuRLZ-vY&cVdS z2@oJGWMmxdyi9*Sg3qk%JWSmGrgO58>7g-;+B=z;I+5wXs|N~X7B_WvA!9bPv@xY* zH>6}U`}^x;Z|?#=85!Cd+1pdHnHZXz+JOWU3wv8rknUk?0}f0KUEpUJxmwzozz;2* zz>%n$ints&5|>j^Q&d!zcmqDmD2TFxuN<80tw43*rx?M@adt2@wluReHgvJHw*$u( zF19vo4kl)tJlx|8MmY8w)q+9ya#>bO{?P z>wmh68%*;)S6OYH1y{|>bO+g_q%Gp01* zrZnVsrsOnor{v*fp)_KpG&Q0$;$@;VWu@e0r8MIdx1!`RAy@yOcaw$d|58syFz(Qp z6%C!h=p%zq31u{9F?%}~aOh0N#>)9OMcLHZ-qp$26rRNWH|fu0fgkhyJ(e>yu{0F5 z_xL;Rxxn1x=4I3SpQZmf6Fy(zGfvFj#@$b2NP|$v+`DH#tg7%E-r`V9#BFEzZo}yH-JHPzSX=rwIJwcrIlzN0m zBUBtCS6e#1mZQpRF1dPlo9tWYiCrZYt*}zo#x``jwOJW~p2JY$RLpOr>pEr^uVy+Y zb#rw~E_|~gQc5?-e0S@}O1dc9O+;gr$th z7cJR2m50p%gR1MvuWZfb!Wb*#oJ+X;9?!g2J*p9WbYrN&9Z~tA5dRu6lNF0^TXABmv@TRBpV&c3P~$RU%qL=OxApQ{c`R-&VbO;F z-N(7zATNT}V&Y8nBo(Aio3bTDykz;}G1Qxq&-Zk*o-!%f&J`x{=kFw_esCL@`S|6H zyz4SiLTJVR!QETN#j$Pc-of1^B*7bZcXxM(;1b+|ySux)YjAgHBsd|sySoGkFUj7? zT4$ZJ?Y$rF@7yoYP0y;DV{~;>&%d5A<~_ouBbz6rli!p>fHAxACpxHFIMpa|)YsMi zy;iy|_;M5b1T;=a?cw)whC74H+mGTkpyV_$j_VbLYew`6sjq|YGhlbhCjuW@U={hW zBv75!?sV7E=pRD?BKon$Qfqvj_~HiWUGZzpK4m}=NPc9nIv4>M!SsGEB)JG?fF39m zcuWrtn_aGirRGPG^7TUyw6IJVF}BR_avh+$vY*`O($#$rf)6Cb5{DDS0CB#yI%E%# zBBdmfo#Ht~sp&R?2c(Bk{bNWdTGzDs_Cg1N?kvQ&Lg``0tm1aUbj}?VyLv*Xkj|kV z{_h4F$O4%xvNs)RvMHMUk)=T%Db+N!o{wx^uiqsv2k;lR@I%Avm2MN~d(%aMrrHmH zli&mA<_5Hn1U!q{2&I|{l0bLh9FK$Apu=GaZqT6e$1xc!C|g&*bZ>ASAfIq{Yv%aJ zl6Au^IoL9L#RF-`9pjA2USOM?!#X>U-@q$5WM2(Q_BdOd+fUznr3joah-$%WDNCd9 zlHYyNV#;f}f$Dc+&El$&m4OAZCSeN6o9iK}c&ob`RP!j{bB7+&w-p$TYVeA|iCxG;B>Is^&V)bti;YJ#^Ae$@>)6 zepaWbn*1Qu%|wQp)top15UNlfE!#}k5HqS(HA0w?Zl5^}J=1jbQLHf-7Z$u*m8J>Y z=*MD43$Fc7z5LZSx&D@*!>`cbOf)_}rd=7^k>5<&)!As6jl{j$0`UuA$l0jOMiCGL zDIyNVLbLlg3!SLxxl{i5xiJPe$iyU`*k=&r;*Be28BOR=NDNOYitMLWP_Pt z*nN36cN*_X4kgKjd;@Ti`M9Y3=LJG^J6|14zcVlN?GdzXC6kna+m7uF6q|&P5IYwS z;7I;PPmE%ZIVCt4UJi!ss1c}Xi&n6q5hZ_wQC>$biKb~`s$#K!x1OpDML|9%kfTe$ z8(r5Pp6&HXP@ab~wJHlE@4*|ICLBQ`Q0EoTs)Ye=8+~IKBQI`$;LK>3|72 z7C(8>c9M4jZ`f|*Whsck$$9EGd&pr%l8~;H=iLD{Oo$Swd=1NG90D8*dR` z=i#hN><^G_Ff+K3g|whsU*9=5W^`NlQ;Dc#X)wZnVM+V*21d8(@%U@BjP<5k7M+$W5RxsD>sqwPewh@{1m>*i}fg6 zz1psO0CQ83>g!PkReVGPuh-cTy-+6bfRG>L@laIAw+$;YVgeWYogT^BT=1~y$hV$Xk!fyC zst~8F6WyOsw!yLAppW{t*K*_ zJwsC+_4xxW-As?#QaZRxXbTS)4>qOtA@muQ@ZsQF&CtZ84gysjEVa;4?xix{+jn~} zfA`n3AlDcRM5xXwm|Mzgr>I-yvy+^>ST@H84Z#IxzKkSx`?5HzZ(#(J++*uhFG7%L zm;aqC)z;Y=j8s{!TzYs`hN{-bA88oGG`{-m(~1fUX@T{KNvM7DvBLZ{B^MM!XroOV zxUy?GAV+8E4OOZ8(4$L2Ol;GsD|Gn7q)t)oTwr>DHg7F8h?I*foDseVh+ZgE_FVTF zHmUQKm7(cqOwlG#U^keVK!+>4g-jAZetDs4h>EzG9837zO#A{PWbA@LzltkPn*{Az z*}xtZLN#4W3dAjTQhaDl!`?d#xe~hAr}%V6^T-{0NwK&K>`XwN=)D<%nMV=x0QWFq zjhAQ$ND0dy8&uE-R%g2qnkK*g#`R>(sl#FVpPG&JLbBJiJJY3PGk5F)hrY9@1!vP z5dI8I?7!2-NdH^2{cq3GUo=0%f2L*`8JPY^%8x8DGO+)Vw*Pms^p|sq{)asLCGP&l zkN&xqX87+~n&B^6n&IEp(m%KSb@cx$TKboIrWK)QWPHJ3f0N%Y&;F#b|Dvp4p8iQn z{|xr;QkvoKQu^lyQ~{si=P9W0Cn^0idB5WQC8b|5%HNdyzm(ELkxK(_I&KxuEOd(( z)Re(}Url``<3j|2e2WhS2;z%0z)Fk>L2`MrISd$4HGFyx=Qi_pZi*?be53R9dYxA1 zyZYlp)JE@S(lfeFP$ym|wwfu$>@)d7R?rBNnFpJSQm00@gt93?*^WKSQ~lEgZBXa4 z+~Z26%3Er4`8PwY4!}-cn?eWW+1OggG)hf3PHdg51c!>0Po*BPcei*tUcBym-8-E~ zH0IQ>iY2~`d7;nW56|pteJ(Flki6D9tJGG+6wh`r3@5!?#%h|(sy~N8f~#X%&u$9~ zN~>d5In=W4a*Q0LUb>5Yb;z)OX|T%^T06X>)<#g{GcNt5JWKC9a@?LeQ@rO~g!V-D zyfm*FyR1=cywR1W%Y^h+rozbR3Lf=D$VUD3_@Mcy=I-{DmMb-FbEAruiioUrXC@5I z;l`Vic79iFnQ@T2qpg*DD)l$qeyxs$O>JendAFFyE-u_~TeXVry9FlO*IL?&H~owZ zntoSp<(VT!BN8X?S=Y&L$si!XOz7enKxZ~L`Sl-$ApF(O5ve9OAq@Gyg^kSO@nch>#Y51n|ozB&=FvsW}~EeVcE=hRDeS-OAAnEgFp zgHt%`r2EU_;W)l+a2f^pBhmC?StzeBSjBBfS zF}(D{d7qn|pRT*qOAs0h4?1RbN?Iu!>X@f<^>-;he^gZ}G1LjQYaukhV!D~ri77x& zd|5z8;l8RjYl0)U6PU?+2aWgq=KVUhW#W2K_h^mmUZ{cf9jtq*0o0jkx`XQ5Q010@ z%|yy07;b3~aWbh?xKq8%n60`UfTJg;FHicYGOh|9LIcI3?L z!HBs7jLA15@kz0LaW3%#rmNL5P_l^!FTXP%3?!G52p~wh4yyGgX6n2Pqt2bo!K!UV z(?(Po*nkWp`}`f;zzoAc6FgIp!yvQ>i)vB05^P6JeLOnC2k->Kp?Zd{3A>q$UrEj- zfRc#Frwt7 zyhGqt{d(ci7jbG)Zkz@E-`oMvXBn3i`cRBN3{vUk9qCaerwt1u3o-O(UQHB~5oFyN zM`Nmf*r*Oa)P?o+&4s2drz6V&mEcvzz>fd#X6Y@I!) z=TT_pDKV6kGmYkbS&aM?SzfTC_vM79pd~)ep-7YXlM2Q z`wtf}N&pbJNVn>UPu$$dg*WU%@%~D!l0(913ciuA`^37+rPYFFA`&STPwB1%gbc{& zUuP-d>eC#NKZ8rur+i8KbKys<{xr4~yM?mcbd zLiF{EUCMI~M}!dxCOTs8-Y;$=O@`!APQD{>GnJ4urj%pAwqK9f2YqLOZYwFK4<%#a zAJIhwTgoAk20fePXP7;@_W_uv%0Mh9t)b2Diq#%D4C`A#Z;o#_K}*cMhhkDdHgrsE zjL1Q8q^6`qm;(~f9SFQmua*50zBewCet>UaSPo{%ssaV78Vv}ptN#abTS zQYmm&5n@aCgO)zpa=>(`rO_g#zZs~oj*ijtXZNTk1W<}Edj2QFx|=xa)%+i(V#p*&tX`EPn(`%}={&3RT)hwh^18BhZd6e4#HQ{129{4O zpn3wW3%HUc;1&qBS|PYr91I(#X(eX9`QEYTiGt^zba(JL6uxX9g*vjEGb2$bw5#Gc z5j87?$86@NWGTIbu->?fc2XjD3J$9#Z0C_0o`67t0XCF5rdTEn_DKsbQB6 zB`TC6pMd4J31A5jq4tKIu3J0dQ1Xb{ZMuil@%wqq4;$U}`2 zhC!oO+dhp!Qr{)^2ssa$ggEVX3k%i{3gRSFt<6D(0b&yzVXMw=xO#e8T*V;kBctx5 z!it1?5Hfe8k84(x_F*YS4sLBKNlq$KtC(96|sv9Ed%gvtCA^6qBMC=QYUZRxhJcU)1FozuE>py;_ zU{=m$RZ$@O^~)B7LOsuiQC0Fuf_LPiLg3tt4Bc0pmOyU_x~H*V7%R*Xr^LclW~T<$ z(CI7A5nA40wx_WRnB)yrk_9tR5{W`)YiE<;0M+=Df$+~)?P0H@2be!N(buG7>2cI! z$-Dd3j|ws^a*FB;opVHBnZA~w5{Zva>mRg=JR0;`k+0Dv4Al`rxwSR;WIGH>Cahl~ z;{dd;R?LWZ>?cYEPi(9gl|{mHL!QaY7h?9HfOP_3J2_Vt_ffk!$7cE8U9i<*22uJN z2Z3g7xrHeu(xh7VnXa)$?rhG+5xw|k6Pp35$A8Zkkkn61)zsWy~SD2+(>z+&^b#@WCJFPX77{;Xdj zkPWj7qLO?H;QPP#u#nB7@s|qp;6A067UB=G?|fXwZsg`u3X8oquGvYL+Z^{>J~58u4V)K^}ByF;A^Ea-duqA*5{S z+CS>n9HG$SNkt&MJC^7>?Umu=>F7jiPBN-U)9Bdoq4pCFD;8_0OAN;CQAvT#S_M;? zzHhuuZ&M&+k$6cHI1f+SE3@&6ea1B64jDi{P%Km zg~)p`7ZnJL^^gdmmzuI}@qInZf$Et{K{=30mjcq>X*9ulGVPfD_ycCpdL?UUV8 z*)XGR)-bT|)=ESsvV7cl3(1uN9-op6-O!#`23OMdPJv7XHId&8QpYYlp@2;57nDtn zAl>xT86B)opmOva+4LSnFfubho)R~N%i}L}k~BcEwz~ebtc?nn2K)V_dRmKlO#nF2 zp?4?N5`BRR^@mU>H{9;Y+5mE8q&m2Qo^=fFwQOJ)asK)=BsLZIsFtr8f>i&=`m-9N zIQ0L(vwq61A6kr&k)7^0&tm+=vwqyp{nvg9CWb%Q3d_rV=@-|)A8dt%p5^})0`(WR z!uSj4{d-wr{9#>TqWevnULOBubNEd3^#9my0-$FC7%{l&0N9ydyaCF_0K*p}2?KzE z4q(6xFfb4Y7%~1Z4CpZd^b7#>Fa80xKWlTw{|qNGvi@O$VSJh4Z$r$>e()LTe>-RX zAt(dr837FF0PHLPdbXFJ>Hszd0IPuwz>x7}mMj2cHfI3aO9;jQBRv2e`;S+Re%>wr zb*KF&efWh3{*9B5j^Xzl8Q6YL?Da z;XegmjQ<^cG5!U7G5*`&>*tog-s%4<;OoEQu0LV0e;0iH z4E9F|FCLPg-*x2vkKca>VSmGEFVFw#DfyYqU-AC}VT}Ja2otYbYC`F_t(su> zUev08)&1(`(%u^z6w8wj(GMF`*4Ve(IXa1b>r_;eHup+ifjhR~BoTqOY94h+-?IFh zn)`E7)$?c1dw|>X)iv*YSomo$Fma3X20X}gU;Er^Fz>6EHHp<-lZ5B5XzUYL zlnV}5?E9yhtyD6~>;aa`F4W>w8EK^_ZRKhljiakthKBIE1IT>9K2Tzod7sJ!eNo7&YsYK!m2GOIXR z`=OWnX7X^^>#@y_y)mlL{_z4n7iViDJ-Z6OEM7z#9k%(d`_c*(M^(N(a%RTzA~I81 zwtchhQ3m6%M*o}Cb;2K`VP327n}oGr-i`rJM{6#JIW)Jj5;hm%0cGX2{VVrwy9Rg0 z^DY4y)EDE!=Lv>VrS>^6f1cu3|L2+;=H1DL&MM%v2PmIURVEZ~2lk3rqJ{~xk+$bp z3xC_;cb9w5;&&_Jloko?kMU3H&_-T^+Me8EE_EcdaEqQ5mN9q>iKV!mqX`(Q)L9FO zkHv=b8#J%$f^#j&ql}0Ht?Hc7kjukEsED!oAj$Rd^d=I{ZN%Haw%C1))EL)Mz_;ojzluw97U3fJjy!Gy4tWzd zE+#DWeL{lc(TDU2B^KEp(aOiV7qF*X%v158EP2~t*Da~E?*65h36h+6$=66&<yZ$9Kz0pxU7)o>&tp@g>2y?^SHCU z1K6z?&isk3YUqA%`f%O+y>dQ(1rg2zX6g(C|$du^||QEY`nq@>R758Gbs|P6wO_p;2#HWW7NoR>@K((LoB8?!zaM21 zZxpWZ#8i%BXj61U81Zq+1fdhA*J=#4_n=(ERD7g0B@Y_r zhOH=1cEWak=<;0Upawg(aVMq3D`sT@#P{!!OpoN1Twx!WA!McXXgR=KQ+ilbRo|?` zqm7tHk}ZQ(7d;vxkV^9t$hjjw!V_BsZWi;SL}V(H;n(UOha;fr;dS(!xFDm)Pe?$d zgdnfur(|X8b$3A`LuP`5W5T%4f&``IFqWO~$LYep)+nLLwwpBAA@@vb&f^$WO0rur zx-`7Z=4gn?{HC1H{(Y^n_p6#gWw~IX?BtM=axaZImW;bMtOl`#Xf z87w(jYa{|9s?-STkiAk6R14nfU7n}`g0@<)5?b*}4oh-wNz(25Nzzu{ms2!52UwrR zz&pI_FX6j8d|*M-NkOvD4l4GFV!{4674(Gc z5FyhQ1ooaMZ$<^%bIl*`m0&5emCJ&DP>fzzvsZxc3S=c9Qo{&=TW&jX8+&d|%e&8^M2g7N;vl}| zwn#9Z`|m(+ZI$CN5Kp-`2&4g@qhZ^Em?D&V*SVGmMw88#y9FC-W>we{9e683ZWP8^ zj+wJ;hHE~?e|yT@EEhJU*IXiLD500B?S^->P~3Q0h}eGb(kr)cKmgz_j@u1IgOFri z7!GeB9$EL=L^?YmwNOI02B^-27WG+?fmo$m;U5W;qtr1c^R&HLy1} z^*v!03b0b{Eh&&}e|L=g(HrPjR2QB+&t9=;Da@PVe4#`W=P3{unGu-RyOg_WW6;|v zO3b*_mj_%V*n%FYT7~uHw6YOV64YKbmKp!(;6>XjRs0Z&CN>pE>^~`3* zjX8rL>Q;>pS|w1N2=*M7!~MAZxVG3Zs~gNoJYoCYlJxmYkcgQ9M#iC+pL7s02VYh^ zz^P259ay)a`ZO}GW%3TCNoBkCF`-n6xBptBwo#9h$i|I_PZjLB2fG!i zdIm~vAV;f)EOT^R2<~0KpBnl&>PPA_o7N)iMs^Bzms(R$OJ|aG+?Y$)vl~J?B&<1c z@M&?3i+OxSVltFP&4tq(&!Y*scB z-CB}ksTADOqGtL$aIM(ok_0s};NUc%P1Xpoa}<(kqMC~woJV0_KX%bGxi=Tx;vys5 z{h2$g7y$P0@>C#Wuxw}H7Krw8nv7(u6@B&{c!>i4-P^uur--$b0kW5#;BA;a&5cAY zz*BaOsHk_Zivy0a-AWguxTx7w(@GgoiF@1HjNxUz#0AUFo1&hW6=-D~oo|piWyxb9 zi*}toosDoyeQ(X_O&&$gv7PD(2oRNbJW$)R(en_%Hefl+=pred4q<+RL8Y+EC{beG zg$_{Xb~00>nZ;LXA+*d2E zhD2@7H=5xK0xT?$*@g@x$;f~F>WQjL@2h|1etG|!p!W$c?`NN$YJmY=W=^+QU;>5R zZE7H&S_zQ-?jyl^q+1L1(zLWNJ_op{S+B=AvBJX)8;m#gFl#ecAL9^2bV~d1|ut#Vb!dv=K!# zU^Hi3E&Kxf3lVMgL(~#tC({G#JO;C&&Pzh>l|h@A*m6E&-lP+<@^oi*xWmf4nUn_A zko~&gJvc;}=&uSiKnL>HQ#PL7UvYG)u){kl;(m`*b;fEFaDSa2zw7683*!Wxu)2B< z%c-pgq&#vCz^Ot;u8QvJNVyzU;au{;%v=8ZYu=uYZ9ShM>hI;?PMrh9oC8QwRi@`N zFGyYF-+Lj`dQE*~QrnLJK{nFJhyC^~@(=)7UMUYf zv7f%+W?)jE7lCuqMmC#@#kEsjvoFn)pKW~L$bDa2$ZRq6z`UoT+vb$vT&Uw$(unaj zKNX;Ovwh~ph|vT4Kk&Yv>hg!=WMpBW|AY7arx<|g2OxYY@Ay+K3DZxt3;VaitCw05 zroWp={&g+M&n06j71ElWm=#1_`=!-wqNC5+sk3s2O7J9}#%*#u7JDYv36riYHo_LtgHwj1Yxg zzqEi=e!K!&d(nQs*E~19J?8DdU0+>ply0t&nt!HfS(PnX{V<$MVRZfk+-Y}SbzgS3 zeD++u;=QxH-M#U8rZhY+x*4bK*Lj}xyewJ|YQekvM4zyH!Yfv%^Zns!L?cntvRtX~ z$#dUx{^_if#q0k4xjE}XLrrN+p@Kf|$=x9-fwF01y_Jq-5j$i3?Wo@Uc7v&fdi^QP z-ScY4bIbiq9JM=c5A3AE_?|#~0?qe_sL}Cb@W|e;j&~5xUj1hYrGYTP0uq^%2@1!1 zDi`o8A3D10>D~R_=`D5(Kd=J#8a(<~T?<<4zaosR)la$mu_|1A(o&>sNKiE*o>S3= z`4ZFqB(u`ZiE>)+_QmvVVE65ChPe$*D@m#yO5VHoyQGhvS5}MnA|`oUoWRp{__Ffd zuhpWF1~}>Ra|_bD7!HU%wY3kp?X|ER?^^AV#(>Amg_jZ>N#&nv9#+(iFh0^an&72J zEw)PUCVZq(H!!;O_za3$7zBdA3gD)0C_Wmace~0hZowY!{S<|tb;uHH1}Ox{q&_9;$uX@ z&XstrmxA?SAvSM}*>j&oLV5pP2;b?N?O9O*M90~v=CZdCWF~kXW|%^ z_GV4sU&52<Zy)`SnJ2L|ofNR&GA2)T=FhR~ikJ5QPLh8EpO zWn+G48YGLCy_^8`dYhHg9=NWsETtl;*V|JrPgm$um zNR$RTl1xjW1w37AMsSOdE~$6q5?g7X6=8FWKwugmwprzprNhtiJ5VDhU1HsI{T_ot zK~z}-t`&j8k2zt2^R58DZn0Sc6^^6ZKz1BcB_(X0FhDgOg!;>u10@r?(sQXgKC}5v zF;uL`EhM1PJ-a(MGvZ8Uel@Bm6qp=H4&2OCrn-TAmxZ*AI`M2ey|0z6AhX|B)G#Bm za+t=cJec(*u1)0NQxLGZFGYOGSe4%u+Re>VKMh@G>xBz{a`MTV(34%T5sU)KpD=i! z1KFnIuZCVD#a)ID5wnHhrh!lqIxJCWQzSm5!{P-eG!_1kXtH@4UM=2tIgFx$Qm~m=n{~R ziO4nL!apL9%8dfqbNUW{j4up+_RFj|9n*>wYKyjKGAlKBaq7A8GG8{S*m9+9Dzgk4 zvt`bw$S&ka0WJ+v#rVf1ePlW8eduZCG2EiGSempRpD|skceOpe7`PW`z|FV%vg{Ou zVc2GxPu0p3iDKANa3PbU>DdLWN)p3g>EV|c-U_eg;tokCY1Ynum!b4uvikWIF5f6j};~LgF+#wBLxgQJg%g- z?9CcK={8Xp8U!>MF)?z#;%wYu8;g}LXqj`H0{oz(&4Y=h9kc;>zJlVxdw_|*fpHH4 z#aTHm@L96bNLvO4+iOGB@B?p>ZX!!uy>)z5C9t%)!(}s3dk(lVdiwzsdY*u zVg|&Ce;NZZr7oqX#(O2UnV^sgDQxxnn)nfii#6sjeBD0+TJAd)tcbW-o_8fid8Muc zL>Z-;2Y9tvsa<)=YcQ1}zMf`MJU=k04FRS&*KlfCxVI_Ay%r$`f_6lj7&xQ zvi#$pRU+4SJBs~;S( zx@ib;-qd) zO}Mlf~@lt!`}skLcLUCd8IxYn@0`W7;|Pl;XAq!HDTRn&vmfF2MY2 zPgrM$NzTYl<*`C4_HXr>pgaTQYazzkvLK2XpxQ(i^u9UqhrTt;wfd(|824r*z9b^- z$LikZ)H~bkifou+Rlwm*ilPTGxX(7%(KI+RV&#!dW9o#fJME8b9Iu0`BhA!v=XC%_ zNVs~9!`kIHCuBWVl%k6|D0<@{a-|n}&X-mKR|>3~1u--ae$uyszC|Fc_wum#w6u{I z=gw=}D!Hw_@$3_t%vO!mPnY zt9rMwd2{7wr`znOidB=Ka@i1qBmrmfUSn^c%__iK=;+%NiZSG4Dc$%gm?VpN!$pWw zm*`A#vMxJN0BKmP#_qt-&GFQo)=l4%qP0ITMQmy$9bFL9D1^EUyutMIPGTOgF`$RWezQcqGWPD_36qlRG0zpL z^nnWPr=w^@kV7?Lrc)^fl+n=Wy6{_xW(*1V-0UGEYUL91F?<5ZkBL(g063R;=i`7s0B@GQf$MLg<@qn zPe0mNIcZud^-Tn|eofFz2}XDl_n1_ZCt+?PYD)n%Q*T99|723PS2xqs9z67c`Y=vP3IpWmhqZe z9IFM_Pg>!>Ry)R0uei@~B90lCY7tJIazw(j_#BYx8|g(hM4ONLj9%jrGf7}5>eAJX zebml?5&=p_P)RyJ)|Ab3VEYY}&v7A~)p#zuU+umk(zBXA4iTo7{hM-Y3njLPY`uYO zT}i44e0Zn7^`gZbe)Bvp@p>%I6U0MZysg5jr~}>`7LYH}G4>-gP)eBrW2T3aJelC` z21@777M$@qQ!sBKstP{z(Fvo6A_*2tgeu@g=NsJ3aKg21C9Fy39JRw^s^Zv{+b4v{ zr`{FNfNE%;Yl|7OS?wjZ+c-2-l3>V9(#rAZ5p@UKv}R|nbH+Q0+i0TeapQ(=yhDfn z`ab#MYqlxs3 z&*-P6#}Ghg44`9parh_!4D|uV?ELBg;}>HOJ%El0z-GVzpkoFwy|{n=iv@}4zq@1p zd41JO^PRu)CFZ~IrI(0)4*A!7>F1WeIL!Y}zVtKLpC`|cckxHyf2ybYnXF&&{o+i_ z|2}83-uh)DVcyUL^?hYfg@YgTY5;3cFGi3qO}ctcy>DLdyXTc|qlTGByi%dsK_;$& z)4*tAsoE(8=8&w{_lu|_olcXi%#KIWhl6L&Z+2vMCZQ*?vyWWqUUC>Il!iCgi|gEO zyluGJhtHjOEwr94-^`z?o{bnDB%fAk=cBx;cprznO743a{cKsRb%+jhyttq1I*qJC3M=0h7a6UfqlM%e9DH~?~FqVDe$tKe|ST>AVIrHKo z>GXR3wz#hN;v#W|CY8uw&tsHl%XqrY3d%AEcRee(ekrNqeYHZqi-MezK-E>i;@+jK zXTE0C57wqn)XIV|Z_cd`qOF*Y&=eCIwW|Wnlc`C{?j5E9)Iw;>@j&3EKPx?(h@goR zJl#8q-$1@iJgKnU&2HshaHLt2(yl;bb6mroTH&`&9)rpVJA3)RAIMN1I!1hQ)ODZV zuE$YTXutoqtf?`Evn;nLO2^H|0Aj4z9HU5en~Jf<%PEZf&=8K5|^{F0$O z*{neF$4)MoRcx(ar>J3MP#Wn&y&R8u+J!lTQpW(})=@7;d2+rl;~iU89jnytmyZp& zpfa|*8hyOy=@@KPOHV;JD2uc_?2b$xgtR{N1gZ>A4)<%Fv z_)+kzSZP~$qWDlT@I+WbNQB%t-a|m-j1i>y;zSrHLWTDNp59yI^S)3xU6?Xj>XWxy zH()M=4}NRzBSg8d@GJNjjI10HJ~lDcS&%>;vspJwYc2ANvselWg>P)kAPyLDIFd-7 zkfI9C;2ooGHx7CuT2zfCDV5VvDC;R;spK)sT95Jaf)sd*2;xWqYd6G+pbu=-u)K;+4$$@#Z8N1~GJLSXeIWLimNdZxWnMd;jQ7?9y0 zk+o&p96j1HsS)R>Y+b{jVT&k$gi&7=sy|Sv@@VzIEA8ku>qiL59ndGY(&c6=nUNt1 zdT7(efs`@q=w{pC)MqyN`my4H9m$)Mo#0#1dEfgJLjcRr+5GRtvbd#Y*y%Jg4TSVZ z0G~gGG{k}jECNv-g^tm?Q>jJxY!6AU?vmg8plCgJ1Da}W?7z%t$k>spxLDJq zFEm`vL{!jzj_{yy*%|vJf|{z-Xp$c@ZRUtH@AS6jwE00H;UKm5z}p*0&9AM<%P8zK z^@TP~8orjLCGC1C0AmupRG1=74?th)4v{>9A zVO_qv?h{lsMzzepl8sJWKV(vg>R$=qk>?jn_U?-rX z$>}iVEVK5BwW({flUbGdFz}_3dG~!qF%;^8o|R)(pUoZ}ur;%=9-K=$WmOvwzgT%FDs-Mgc(b7a6RN&triL9|{_+H8N{mXB zq6KJ))uXg7@fO8JZy&Iy~Jo`NA{WG_pjjWwky`p<&9-#WK>8GD^OZ(-_w zvt@>9OToYkuDEqykY+IOLb_B3EKIxDl@Mx#P}bYz4OlF32rD&}kW>?ZXXZ>wCEt6R=Ed14kJ+X@%o-4`nIfQTZdMSaW^Q?vTECqIK(^e$1=+1I>9NAzE5LMd@ z%m`}aIte}kRxk5t9&RydoW5_H9B+)or2QJbUtvmxg-0 zggMGqhDPiV(uex!mnLhYR7stRROq1VMGpej_Js^%x%y~OlnpQ0Z{0G@dFvr%zhWOd zAlI2kZ5I^1UE*opA968>^~p9smAnG|Aw0oo!dHE}6VLSSQ8VgT@PB1Pxn~ zjWb^vMR+X{6@m%Gn47c7Y4}-WS&)X?t~0O83~j%6zc`FF*Qvr#QdmxB&=rvQ2ee=& zAe5$Rie-wx9Sh!)+m~EbdmcxEj5O68gC!Oo@E{&u54kk7xUBnZ3%{(5p`ISDR;2UV z_#-H3)gYR6tAF_FMz1e<`r7A)Rh5ZzspNZZyZlJy9+qs%J%R^aGM7ADiVMA4XJv5U z*Z6Q+Gew6|L6O;|jtmNPpmmsQ#RMYaig^7cw;3K-L6d+ybL>;*X=s;H%dn<)US@h- z&s(C)cw4vp9qcbRC<^SIrwm`X>Eg?lRgS`VWYG_@j@k>~N7q%^>!=AlXy7Zqj+R|9 zIj}2x$5k72@iEiyl*z97#Ms985O+QJ8og$F4z{Q9o@TM6vDsc>G=|)b`w{OPkND_+ zkgY$j>VI77GqAHV{+6xGf5=wWKgrg=c1dOaL$CgM7}HBl$N!*ing7tMe;)nccKU~2 z{qwMYwA24gwlXpQ?w^VO(&qG6IRrivGt2KOGqe9LpZJIB_5W{=O_u+x4vLZePt#)k zQ?pb$`rlJ$W@Grrg+BjFI`PmmG5)#0h~+=4gJODlBY)MnFukCM-;dc}3XGUo|4ALx z|C;pB{W(3%|0(=n`8(GMzub6%T50+m|YyP#d=Fh!YT|tCF7C*sV$>CS~ z;D+Lc=9{7r@h{_kyQQqiuUDB84cW}ee_tyS=Uh)1)VqF`w*L9-8xXj<$@?5pb&C5O z$y?{O$}K`Tq&WHb`YW&M6OshVu0TIthsgN3{S}X^&eJ_MvyOY)L-V(o~Ye&5>CH2b%nwV&0Det!1q9~1T& zr@m>L5HiPbfx#@3E88>rH3PH%^HEn!`CV^=O~DJj>_`^jSWwe#p}ICgu#br z`J$ZgOz!@5*z9V8t-|q`vIm-)oYa>Gv(dP%^E}Z|c>^kRIvIbyvtZnI1^f((bWyp( zI44UTvxZ8RCxkrSRU#OJX|=WY`*pY84>2@|g0cA$rafmxfrlS$BQrZcDE16K7Ah1A z>&ezZ_wnMaBGVv7Bqs18h_(2{odabu_b`M^MhLsO*zz#tE67;tn%&`v`j`t-Ipio2 zDrwuVb%B?w?kD%6YE0kSJ38DY&E zt+k`#G(t?e?WNwhSGCxsK6*6XB*7S_;yb18)pN0a zixKOO*%oX4f+K}%j?bny$ts&DdIbFq)L3@4i`5(S0 z8mlT9S+OkuMDiw|b_0@IBc%g|o$>=0FeR1@rqCp+Bk6E!)n_hP3$V&(m=xP>grkCH z>qZ1%mYOKf*jo70{T=-U~#)1FQV5Lh~l zaOA2)^h*6zU*l+^((N}SMW5?NaO@CuwV;!5G1jsf?U3*!N+*z{Npmt#0r{#TTWWI- z6OPio9L{u!vAK+cj8qT_XTqeoangY}k#fkO2jYLYK-zpI5EL7ZVPd7x0hcyZ3> z+3p>y2|pqzVMe_PEkqk)7vf`Rk)cFGT3Jq{L8TM+qnJ3K0q)TE;aD6I)ee$pRLbZ^ zvm2N!nJX;+cro>H`U74+(SR=X&8M3%m)G2TB?aLdo;#HH?HmXY6B-WoLm^HI%vX-= zox$aDyH&#&2^bdt=PIzeKuQ-=%CzJ;*U-H4N8&sW99OQyQK{d(zH?5h z_PDn}ic(p92x#*=R~)l?&uO0=+X=IS_H@!@?h@r%Y0K`Xe6PCsJ+BFhl8qFnnp! z`ZKYMv$7bkk&C9X;OMWh1~;^jUu&^#bMlJ!3$`f>(JDGH5M(iXfb~qt(h_9rA+;c( z&L+Ps*|xU@974ua3AU<$$n5W-e&5un(kZr4(Z%S0&$}9R!U#-C;v|wkGAJEiqc+4x z)HhITJWo9*>aVF&{v^i3kz9QQ7T4J#wjnfdrl8v0(+_)fQI?OaJZ))ZxaDZf=sNH* z!)Rk7`lt_4Q{OYp4Tv92rd3Cm`ssFUTcPIVy^YjnclAyUPv?sKFx$WQ3dUv;PnWvfq-Gy z^z(;h>Np1o#Z4@IypTrY?M1-zvD;64$* zSxCbmPP2E`b@CVfs6-jz{a1>ME$n4`#r9%dI{qi?LV7ASsMNqr!^rK(JKNv(c_#8u|JaJzrzY9nX~NEv7szN$YdJl0aXls=#p zvPC(#$SvUSpi%&zvx+%!m5H0g6Q;8R#5;(;9@%V;cCzL|N{=Z*K>uX1(uKmGOb|9J z-t{ILa->gQC8~#F;IcFw|MaeeXbpgwggR5xT{@U6VZkfFHG9En zLET}_DLV_%H>Lw-2l9@a;>8v?oINDGql+!?CAHEvfZyV}tpM`^rn+OPnlkgz+Kh%+3QHPu4F6m4ki+&XK#5{9%|y>@A%%-kF)87gbtML7D) zvgQG+N-PKdgn}lEaFs_LFgV5mNeifMTOVxjt8VS`s)U4fDV>sT(PAx==-eRzpGVFD z!{4-11c8ihotgo?x)1@T@zYClXQ z!l?fd37Lc9Ms~`0RvvU13S)UDMJ*8P4Wo6CL#; zW$B4{7^qnRh*J&Mpyd0!yOIe_A?rz{2j)>7?f$&8jkvNM&7LOiGaWMvkB8#9OYYL$ z1+wj|ZSJ3&X2mdGc{(}jAZh8N`DFVZ*zWwTe@XHy2;nn{1=Kz^s zJz@VWfAasGnA!f=h5zUMWMutiFUt5TN&l?M!pQc^c!H7j-vj>t5;FWd+fmk^0hwP0 zBL7+zXZsTae-pzDY!wW-NyNcIK`#1f zCj@|dAY7qbDbfn~kRToG_Ro~nZ01o!1jK8I%gx^jZ&8!RGWEFFeQA5zIUT<~BRJSO zJ%s?V}Fu z=_s$6h|Cp2Mn}WJCPy>VMy;cz zRl&`3!h~)sAgenRVvpBa0=OFyh7(EcS>oEXq|p*UkjeQ5@j)72&9-;gND)y?G&=== z^FD>EqF9Afn3vc0p+&aY@a3l%+*Y$ z`RRCJyYj&#_lU`niI_rcmFPn!cHuI{7$+O0?*$>?D`8b2c=;#57btn(dgH#eo$>Bg z1$w{bmk|Q%(HZ{|2yzS*9aiEBZVSnaCzuck5{`rZHp?GfXT^Dl=#=IjHxKA4N{Y=N z@J4btmp3B84?A9j0aHHv=zxxZGO|M&X@1$L)9C^WN<$r+?Z0T8r5Gu zYGf;RF|?9RG$u%>8mTE&d)_{Q6*3^;tU(54q1%}v3S#j!02NR;q)B2x3W{_EZf#$` znWxG^+u5-Kh=XG@Cz*zd@XU#Tzxf%0|yU-z8%!{4%OiqhKbta;&l*H7YJx zr>try^b!JUvk{_@D-iB`YvVs!gQ5Awk>j1M0(=NRiyo3suFtn7VdONRDRf}EFsWny z*nFau1@S6>1l_$HIHuEZ2`ikx9YET_7uX=tC;T0S=B&eby~M4)_NJzVmu z$^Q&#CF{oJK2}qLVtD8&p?ab&b*N>&W`To`QqD+OUP9&KEOHwdy$XFezdUYHICDh( z3~ex-izxUUc>u5bfa)&xc`aRKG{mLOW!AYazrMz~?vumH*YuBgE_zt;8o-YIst}Tr z8}3PH35Vw2`h6A zV0RPYL-o3aeCVT=5!mG*e9S9LT7ZZjhHE~WiA;{hUjqjqTV*`=s=m+NZoj#oM$u@u zA$@p#1iEjFJGa|RZ`}7kIvH3&Ev9$g_a|UoM!X|@hW55<^%}Siq<@As`WEr7s@AF% zeCCs18~Z}VVApP49@8*KFRXD3jr9UZkR2ETcNoNq39f#3;=4iqtwCwdj9m)R=1U0O zMbndq)GKG@6Hiwq+#?&gv!V18Y{qSD&2HTMc?3=VT107iWwbz?qBoQ(E@&f8cH<^O zUcxkiM!3P8$7>yQkv2hftK;jjEloi6_#xaQV{`m&?ot$qP!w-RvE#Ouk z5=UU}#AL3wKsSa^T!0Sy((-5lm>aY^ww4HB^ub8N*#g9iKKn6teM)3ko*jHw_x6f& zWrrcX$#4K8&M`JhG3!X6Shz0$VNc&3Ka`Njfb{zDz!jU#tPwafiw9H-s893(8|(5Uf7TsZV`8>5LcDMI#iEuIbkDv#v2<=u zXqz0vz@zqM(`fS8BNInY$nf*Ap)sDygx=f42n8)|&a5q!LtN)=GYw4}e+@J@jEQCd zHs_20?>8xy_UQv+(U4A12*`>f!;l(P%ExLH=yxmF3yje3zL3z9Gg9uHw+4ut(E2$+ zx-($Qnv;zwq4vhj!)>0@5tUG#&t|&mmVMSja|b+~EbA)DqDINqmBTGPrEd3M4$ZGyr`%LV5X| zj6r$ zIo(1#Z+nPVUL*H#_Pj&PMBD~`{LNXCqE{C&NTY5aI<+BZV&6Df5u3OTIAsMdk_=ac zcV>SD53VAR{eFiK3(7xq$LoSLrr1G&r4sM)Kp7nH1_B-mh?bf1*IKzXpk?)ESg*bU% zKx-k8sstQ)e9V=W8Jk2IV~1I}5-tYUs9A1TNUKTmeG?z<8cbP$bm^AU!v+48MhVy1ll0uZhy2u_-G_)K zl^B$x*>~|DTV13-w%F z_>@5$z;u}S9^_Yqb^443EPIk7!AvZXl0;ce`Rv>fBE~3UrEtjui%T9HZ_9^&fOkK( zbARmd7@1j^|Eh$t{Q@@j-++zzRWbOzUL@cbsr}1lKN0QM{`_Ah+5YZ0$HM%NMJ^T= zz(1G&{;>07)02KpswFm}S0*<2!|jh)-+&kZAT}}}X4fayXCh_)aIZC>@Pmv}wX&1`CyzIefVJ&8D+7oO%k_@42l z8p~b1ReF9{KBx$Y%q1DE6)WAoxSN02()R6mLHe%MK{LdpaLCM7;&OKWjWeM@2-#3I zW~Qf=v35S|Jllg700wVyP1 z;XOOv`Lo3NfdobgwfjB0xwifM_nXW2MUiVtpfjd-mkM`S&o znsmB#)Q9u;CvOZN&YU~Q1Bi8kK}@|x$~WBT;i=JB&haHDMa23i1`YZr?)T-NxVcz4eTe1m%Mz1ZZ%*B<#{f;GKet`8tg|6 z0*8lT&NZh7>8D3G0v+K<=Bs?*CT7TG%Fa_Y!drrWVul^pD~GQu9$Xm^W`JN|9afCA z=v>0@pB|oI$m1$jbi?e;F@mNW50Ifh(tD;oj6LjL-S0aoOG@~b8JQ6{8&f3Em};{c z<7iz2y@qOSt552#J8W*^jEIjyhN*kxug_paRRyPK)ICi{7`|KcSV#^NKoS1ARx;nb zb5wL8qfomyVQ3hq0D73~ruLuQYOMQQWVGH6oV$WCd_~D%fC zhl>UrV>u8XryaU|71o)7cJ!43fmY>rG9)Blz>GvFOhz&3)cX>Q;Rm-!qa=YfR1GPX zO!q~0$cT^nDYz}SibF4_kSVZh1F;NLuh2j{S8ePe1+>t2(IShV@ z{z3^3ni89efQ62Wsl7jc*PrQ05GDXPSG5dumvIs7unQ%!T8SxD-ksWqhmb?29Tm*5fakBE5(StYP02)6>9(Y6zL4(Q>Y6yxMUZJ+@4SW>veF49JU7XUZ}>22pW1rafh2XSoO`{_Iwt?o>n8-_hU%f?!0-o)dQPdh>no@7 zz;#M;awd+t@yf?52VV=%i#hL-?N(REWjd@V(lCx;xBhbJZ}uy$n;Dkew5!u6j0w44 z&ZeO7H{Jw{*}J=oMbzbvty`dyUMU{Ii0y%9l0+`@%|qzKB6wVIA{ z&7WAO?5c{W5ovbD2EDDHht4zZuH39l5u0mOa5QSjN*3esY!^BsVpsqwkSdrvZj3ls z$j`eJTy4r54Ggm*pAbS5WyS?S3Pf^_yVvrop^dKuJ6*YiU0KLIJyBJ)WUOUpl5{?h z@$x|Gqe>iT*rKUqRVLA|lDMrqdagSfsrQS5Oy30Sustys&=cXjoH1?gOn+-wY@Lq|igcRGZJ%TitW6^wn9xPqC!%H%e`S?v&f$fb=Ued8VaR z!CwPE;MXUO3rGMM*sLoTKWYjIA@602rFJAxrRI_`7c^D2*S|lfq34h-5EVIU0gv!u#yg&ge?J`#q;BvnK$qgG3dd3LRopCkGm8N6?QSOnmm(_&~5Vq z#CbK&e3TyM(pAK-X?J#eD~rigGeKo8ysT~@z{*KQ)qrDuT{9p}M;?_#5k7eO3YHNP zb`S)TCm?1Y<<1+6H;-9v#tf;}KOP1MzQ3>Z^fSpHcY~BK z<}8>H0SwXhhpUjg+-rpF&W19PhT{d*Igw4({@YimiSVxtw?B z@NQFMS^|ZM0(hV{^`0}McZg_df(BF-Hea7k_1NRSqJ(gS9r-SP%-)y~8emFwA5I&i z_R_;{+deRU010zEwBegVnd%0l&wyCs)`Sh=gBx^*+Xz45Pqn8GS0)s8{Vl9q?T z&XQVe>0T6a)0fb)%olYL&m6!uAI8ot2E0BU?1Rtx$T<`@k>PL=;k4`A9>%g--NR^W zF1dWz0#! zh@8kvoTA+}=~7hmgzChc1Lwx$;-V!T^X#flLdYbh^tOJjOb4#l#4?xeY}dGyHe(UI zd{3S3UUZPQ4_73>KG}+cgdYhQo|{PYL5gT z_Wfkg2vH}j1AsB4S@)@X^jpJOl@G)C9~|e;R8LQeyy+j-S_-6y~o>% z8lxHOB+fK{c20HB^N*&IblX(X6zw$N_R!q3-CrIl=eSB&>vLr2P(YUq_h1M zK>>fwn|-Yc`I~0=s#5$7g8n2m^?%*$uR!}Z&6r+2!+*+ozv-3if92Z$sP%sjZyA|b zf9Z3~zcO7JnSY&*{Y}IB|1K@QricD_q(vqG!(VfR8Gq|8^Q-Ij+yAJa|Bv44?Eg(E z^tA}#YoYqz=9uwUc>u=OA_{-zX#dlB{okp9z8bCn{i^=!hz0w9)j-+*P6K8Ck2TOA zSN^2^|IvuW|8?obAA|ifn!)~;Xa?htKb2Pp`X3*`-!o@_Oy1A&{)}$0|EJ2Rri9g3 zR+RRmS4+B1>=-mkXccPu?F;J4AfQ0_uSmzb42$MS2EI4D(H#VbldG;C@hYQ1%``Yn zr*nQn7-33%QGHuMUae1@&#&@m&_L2lzV>5B6rET`0^^zI)b2N3=j^d*#=V1it3maL zL@x62hnI#txAUC~x95ZL_`;W&7f&g#r=<2fg%{bY&IZ9mDl=HUha;<=3iRYUsr*q8*HvyV=2}MoR;ARJr9X#|(Umg0LyU1sZl@^}w;M>YChHIJGu?E2+J%ySMMD;o1P4bUCjrGWXF3X^h=5k0&3%J=50 z&|puTvgGyGn*^cDghQ{5y?0-da=2n->bOJ*KfgqYv>K!~Zux{X5NRJV0+drdRkqT5 z*=B?&eHG5Y+Ox;5tr4Z#j&9V>v544Y?Kj=ph}W2TurB~=yEz-VC{YY^u7}Oj#PU%+ zcRrdC;#|IwN5yPLEciEo@O7WqX#^p~8+@6;J~Di{fdlEN()Df1rv2XSgGQrMB;}5Q zsY-?fjqO$ur8DH+FiaNI1ZOV1d3#rlXMCRv&_7->*9%PvB3ZYQ8@UI^9(&*edc&S{(4Ev`kCKg>>#SC_jEKzP;8{sx z6@7+}LA=AUu1kS9>m~FXTKF)AE_E~lXf-A@CxocQp<_VZHU^Bzhd7s6>tSOUM@Qgh zW{3pQeLUD3?@>T8;yEW6>4x*d7AKn1QKGwm`GJ__MN1V$Mw^8|1JW)xgj3{1r!SwM zklb^2|6LLjRNW>C>FP3lb4bw zP|sTW3n*6m*fN*5uC~Ba!Ev^_je3A%n~W|RW~tvS2E18n369SFyjjp~ZeO4F7M|zR z_Djc?>{i{8vZTAM-gO$uukYG3L)wEZ#r0S-pzb$cQyhQS(HeU%=9CV5$nzRp4Y@ z25GXb??pCm;Utpuv632d_z>MOh+GZHE}=ZYhPv3{>|Qw_HVy*p^1AYZoU*s>i$6_C zEOQKE9U&wUQDA}otjr=qO?r&wC54>3+KS%-Y`TTW030cGaP)1jFq>)MEc3`yB&S3S zH*y^2t>s5TWfwChpH4T_3or~wcLgre!cxZzh~w{ML9DG=c~)6iZyLn%(n2Gb%PlP( zZ_famzS)nIOmgC_Xr~6p{c^huU>?T7hev1BW%)Ny*Id!)I3#|=&~k9$_6qy5c~0%! z0ZzkuphEjY-yj8L-Fb(?`+Z*zR7!MJmG*`*<;)N4CaJ2*^z#Q`&p<}ewfb$}t2zZS z)t1-2Ssqp=#@xTQ{DP7$T{aZHbK@@^d74(gLOXGf*6*;xu01Pdi99#k`9vxNRF})w zTZPaI8mM;z&D|tK1TvJNBoK)#?#K>fAUep|u*w;hx%>so?-t>+@XX{Z-y#t6$G;!^8ojBZ7=KuerG_gzZY4gf^LbBX2x&Xwu;}WF5OLeC4N3 zVOQQ;syA=v4P}2APy1SwEf^{9pI9x8N5qjNV#KRAS57-#c& z=G>m~xh*YIx}ah%x2I9*U zg8(|2FFHkNw$9=d8!x^)j>e#z}%u6Poh z$LG~qx1?FPT_6azF_|$1QOOJi8R#&(R<1r zNM_5s^qsai*r7JvYtg1s4S%^)`0Oe^-{RVB$Z}O`zfqBeTNBNptseA}wQrL|Y4gTV zj%+xQVnuy32L;CmY(+=dRBR^5;4?5z1ag+Z9y$UhNTT9-c-(T!dOIl_jH+M@s#)F3 z(kzV-xX5~Nkx*4&kx&f4BB`*b)_ER*5urK)AnyT0y(j=8K?YKKP?06$nIb3_vJE_3 zWFc#7f215&-nWr&kl-wls+dvbmGbK0`|fu5 zPc#P7LC(k53XaX-1T#{LclF!)9ed$Y^Moz4~#l1oeQKus-oMdIJM z6>0EflUybTR)nQ^dC8@1W1Z4K8`UbYHsF|8PQgN@C67tdr;%j8mb6(j__l1mc@Zw8 zI^&NNYzjbSvJS>XkXzWqAY~K5mfclkQbxtxnz6`Bh8;A4D&C(9Qs+`#ZpU&y{>Qw2Otb`xJy3JozRUuR6)%*ck+}id?cM zFc2Vh_7x@Z1A=N@f5A2TJ#6iOspCHgrTjpUAE6WmX4b!kQeF$@{e=zH85w>HrTpCy zWG4DwQIFr7F|+)tO86^A!u0C5^^b1)&szTsI{a-Hm|jzNe~ae427vzIP5(=?KiKsL ztNp71F|z-R4gH5IJ`??)1ota1n2G*R2L3ZIn2G+6d%pUP|J%Iazg+o~5&uV-_+OnE z{mX!U%;hij{x1{pv+sZMEz@g7${$1jx0%1Me7nMm^vbvA8l8*;t{_4_cS^5LSb^}@ zNMB`1r2MiF4qw?;yFAaKcFJ>Q_Ly2|sBDv?#WfliA!wZoV0Zu6leu+vwsrZiseMuP z;`SWo?6*;V7UOCB{x8zxw+fqZ{{-fs9>O}zZ%X_CH|Lh(tPbXfA~oARZL z0L~mReBktVI8OJQWQ{d+e&el+ntkl%{qJ1dq$Nn0Qjo*)T%IT$;>BU>z1#DGDKiE} zOwXT|o8Kw9<%@V17OHVDj!A$1jgO%X%mSzli*y&f;Lns7@9q*)t13(Lm? z&Fmt6H$bd_=P^|Kx!;4Rwrs6d`Eq7o{2<+!q}jJP=kwCLhNzY!Ck;B~r$%K85A|o-~ zcg9lQ5A_syOJZJ_G&L)B-ILy@$vE4n`-C!NAb?TV3a@}M{@|RiOXz3HkOBrvhn%=( zA9-PInUyy%1q3r5!j(BK0>kvJZGKsTr{Zh$ZNrt&Wo=DsYnT)9Q$0Rk@d+T(WWY9n zJ|inQlTwg&B!?vCNi6^#7RX|zx}E*T*Qtfn2J8(@YhUx_uJ?z#hl3G4Ruc1xw$E&4 zA<33l4!PfU2ZrEdzjpiLkDnw5QNFXbIPAO>%^>1*d9&I|Xx03vwlUcm-aulJJZ-Q)ni^Uz3Q-`cPz8kMIIw|`1F?#?TLaIiV}}93zceKU(ZD4p z+z?nt%y)8JF!)lq;T#*-eJw`yeW7z62{`iE6Byr@((}*oIo| zp1b~GU2WjQRDO(-JtP_!=Au1mB_!d5jVu9He6eAmd zgdbGO8k28aTGB|JG&nbWtz4eax%hayuM;iR#782^lZ11)SM#iK83 zkYGWR!XOrqi2@)i);a8IhSUFS?};dB6kk(}#u9?$Y-Tg1cLV+|BeEaWLalJn(@5*a z3iSplN-ixKFp{}=y3bzLHEUhIrCo-?|Xfc;& zM36m3I{GM=xh^A4HEB=8MqYs|y%9b@n zKF;|*Wzzt>ngjp4?ul52yj#fbP8Psne@}RFE8#~1+DS~NMmox(a z$2$N+56;-k=-Sr|MFK={MC2^yKE*B@THflr_kK6B8+@qKUS$ zN!8b^D?knSpsf|uFeEHYBu9$PID+QwIAyrcU>{1@o+yn&;zakX>ej_2p^(@l>X=QZ zcrL;_e!hUHKxkizoLII=y1{~m1>L@oC{#D$PtsQ2c;I=WYNrL zH>%EdTdLwl7ju{A0CoJ=B5J<1xnMi8(!S*^VR$e`DUek zk=eJI{%iU;3~rdU?%>04ay=bWkVLSXH5j`uN)!g=aHN#q8XmXw_3TR&%S**A&g3{NWP2b|ms`e5JVe9s6SpCj$Q?N+R}_w0 za~3Q%By4Ynbw+GCj4r(Peqwwm{G|YD8CJm^l&L|ea++B ztTE``yn&SGCs&EPVZ_{xJYO}t!!JN4`_c&;S}_$%fRkjN2cRC?mE$D89p0I%&xTjT z)jhQlPbRtY9Ewq<>_#NJV+eo4CFC_+qxnoTetTf$!aB9isvUmaaEo7e1;b*VHNSpo zp7}k|*mk8;(97(M(osw9nAO_xwRO&S42)J4EiYJcn3mApod~{y=rHAV-H^MyG(ziy z_irhllV%Y54ETL+2aHd0M>fK98MsnpDIi>wDIuZU_R=1t;_dlb)faF?N+eP;yXPw) z@`F^DT;+S?ZJR?H7Emb@U^mm!Aw|qv7ZK)+x~fNL$`}f%f}b8kVHJkq>e)>P7eQ5X zjj6lyGb$>m6BQ$zfGhB06c}lvHG~HW_wxmT)u$Tta;pZKCWB04$3q5TipQs3=%wV$ zmUBc^*%;zCqy{nb5MB?=tGSNGN|247F63T8Befe#nZU znY<0w(~LKbv4D6-OT|<&rc|IR64;fzfv#|Ezh6Y3_wjXa#qO@oPBKf#81nel%f&3k z=D(8DUpBXY?08>~!~Hc6nu*~T5;6WpPE0JnG|}IX=(YCvPb~Sp_3tiAzqkH{ME^wnghpMdm>eEwC&HN&g*?b|<6s^2oOF#lB$XJP$o5$*rQVyTLh)|$65 zm2osA)_pa9W_>L%|3~Ha*PL{=R|jb3*L?KfdrJS4+JCL#zf^RYUX8AQ@Y!$l`g+{@ z$6G(?^;H}H@%rD>>yImc&eQ)Wz5cDD`!8Ac$MF8>wEF8h{m{4nSg${Z{2SZ;n5Lg2 z`^mNpKTps8Ti2u2SDR;eugs3_ame0Mt7TrBP9s+JEJSc$u>GEF#6GPvgrF9IX}A3j zZLhHf{1;{n0riX!)MKOmM8S|8(a^ji8844}<;$zg!NTofuUM;-_3dH4ycG0N8Tn`K zYXUT)L4Wb~XHRE|HH7h?y~~#d0fqCOyKk4%FDMC5p6aNchBpb;Nxc*&rbZ6<7bSIiCST+lvpb_8T^fl2-fU*`sN$>MysC+jYS0E>zs@_}m^2Vomtk zUgD{=T+CitM@kQ}AHDm@DtO4ekomoyxm})bWaB+*r5Bf6ms*jv57}H&G4<|*Qy(Iv zBwUkvI8>ke^Mu*v=I!u=OyIxq3IH;X*f{F?cNViEd98Ytq4ug=>|C>Wh&!G4w~*W9 zGLdywND)H`<++0WMK7{o>x~Sag@-;*rI}LdtWyBI%Qv;Q?~$E7b?~_4$Ei28wqx|d zBSYo{Qe`&5MAh7!y`5ui)}bUunV!MW;?4tYc;Aw7!ImVyf5wdWZDPhx8tRWg;)poX zV2%pP9ciS(*6kV?|Gkt@(_THvVxWwc<4O^r7zAu z+T|1EH8qSCC=erl88_^2cva>FeM})L90|vR;^m(3X@q@PPDeb zDH_u(iGWlAp2sE{a#9^v&~t`MQu3}DACx~jb**ecvgvcuo9_O^*}X)#LJY*2GJ{fq zLrY$}jm{K#ZR9n*;Xv?^LPI^{Lu8mSP`*+9t`#+oG?9Sy*_@Lip$upe>nix;KC7vf z>;EshCoR$NTX(=l zp_<+&Am(Nu$F;{+a^5t-nf)E{@7iE`hI)nc(z`Uofq`7>Kz0y{3dJrE)$Ue}=o$&xRF5RRBypMy1?$R)X6X6i3)#eJ zZh?F{r}0Bl5V?Z@*>%Wsp|F#Lz^~`kwW}N>eXja^96icwuj*GEp4VcTyqOamyQ9SD zmagv{Pr;?=`_&M-^xm0>)IjV?+-jt^zs0%LD(_fE;Ax+oZ;k&$UrUOS5utT1GVj}6 zXx0whQ&UpD7)`O_ZmfuL>y!)O4NVdN0b6v$jNiVnfF^G~Qc3a>{js)XH(!e-{lO)S zVWLCY8Pwy8KUBBAHrWViK%D-{p*!n(*PQkVMkWM9Dx^mm2qhig2bR)M7qtj7%1^QN zFRvA_hvhwJf#FT}hPO;&`;fj~O8Xl5pdI$Y>a^}SUhe_HLW|{gcSFOb-lqchJrQjA z7}Ux5o4<;4TR`V#a?y5@jwJAab{9`lp`g4;?K+I;>%%&P93)3jLfB&nYPb;t5n0G> zt2x>jU(=8+#QZdW!cOR9^{K%+pcn2wzM-MIDszQ*CnPX&nwqqe3!RDMK&~I&Bj9xP z3RJ$ig1H46ChJ>inNu~MnqZH#i*@$!zK`H-MH?T(XA(pkn;<`0^saYMoL^~T*?+uA zK86VfrS^KeX1y+YAqmFkS)8-IN)l=CcA;RqZ^=>yq~_d{^sOcmSjE6`(0Un~o2mf> zqqR5~L7$lLV#Edwi%4xJt%AvMVEmL{tfIftU|-v9ufFDa15lq?RD$6aWxO?kmNH5P zcp5NaCqKT9Z`&XcThzo8zfNuZ$-J7qQ=zWW$eV(k@wb$TzHEA7dLJ-Li^2;0?bD+y zRfMJh$5fu8D)u`e_K7LmjXUj#9WNdLp_!n4o_Qm~L8cp490rlFM8*e zl?qw7S{RCDYNrf)6t>wvQN7zBdUQAJV4C%Uf{ZF-TFnrdn=(tpxNl6Lv&O})j~W0T zIPIF>=6GZ+mSO5hRCil^O_Nk zaldNV){m{~T2(cLCJRCPz=Z)6AsW`9xLT~8pK5G|B?DMq=4g!e z9~UlZA8fFvMv%>msDpZ4Q2NUfl+l9j6sSl275MN$Dd#X9w`oqk=Kz8DFT1A@f45L` zGyj5sRGJ)*A6ysT{e(8tvWb-jgo-cptg<_k z4beIkQb{wKzDk#LQ|#kN9nE0PV&AY%+ozDKD}I(tU631rZDv$Yv?lR2v6(<#=}sO zF9+tfu9t00o(Znsz~*GcA>RO?PRqAj8*5^x8Lp6cPtl=NO&|sJf&AofWf;QzI(&HW z{>_m@?BtJNnu7WT>1a@@%jmurU2oB5fvX?jxuB|=$f`;Z=U1S+p5P%SIQ_4`;Na*j zGg3ICSI39i8B$YZWMF{Y&D^f{`t%eftoD~r^3W@Ims8-QB zFDSY{>4>bBhb}HL;}Qm^>eIN8U+htTN{iZEqo0H4(=V1yflvApNNC^sr7N^x9=P)X zehGH6M)~C|l$4WDH25HkRQX7gAf^qR{=1|vBGt9CnFS~GiO6wT+yb6_BR8uE=h1U# zSwhVcri<2DjTf%G8jM!zhq1jdxPWvU<5hVs)}{A0#^G^a6#4PKih)x4{}^A#=D2F5 z<~SB3ustEJlHtEy-)(KMM2D+cYt4+K;;qDp_$SX03O|V4Rad|j4L`r6#oocXw4^rV zL;>=9vS#3^5%QoL7K5|R260(Q>`tFNIZf|-A;m}`jS^U+pnO^Ytjr+4uPph{B~8!^ zQs`}E)P4jBm44(jJ7KU9x)(uf*zt4N7`j6)OjP(~bEBX+p{FI%R2??0kyRTP$St-0 z9)?hU$R+zyI@{qsy*2T3FP(K(C3XrRdieZ{7_Dq5hnMG9Q;IwA3On4{QmSDfP~3k zz5ur0JO?bCf2J`0%@@G>r!U~IwEoi<@Ox`^P=cpliJyMI_Ag(67VBSW{mbL=SE-Zr zziXzf|3x!p{mYu^&oh6q+5c7Q{I{I>vqOL5%s1U$+0^O4h%unQFzXaN>C1 zR!%zjDTsVQp~rb^vI^k^D){HikL9JFzk=*9Q(fzIuu*9x!A2rQ%HYkP`(k2>r(D@w*6OK!+m@mO^V@f~ z)%UmN3;cJ7-;4Hqd_*}Ps_!2;9(EV@MmCy5P*6Qrc7f=mu&iSP&spAORv4yk1~aYq z{5;RDu6H9R`=_}AD7FzJ6y?^sg?o4F3)!dADv2`tuf|YjTAAyMbUMDhsQ5}jQ+mXV zaQB>@{k+&_*|jHtnodlnwx?kn&l>Ul`E>0RcJU77ig#ms;xJM-$s$-vCZY#Qk&v{Z zW-08%fj~_~QOw-=o3*slH_n)}V4H~+CjQg3_Ws$166xniH;zCaFTqRK$0efIqNbS% zm$*b8tyv9MQ1Pf2}7^m5yN*8X09uv+u zCpquBJ3 z7cO&K79*>YawHE-%_;fKkf2V=ZD>_5VUH8)R)S{p#oYDT9E-Zz_c~X%MfXLV!O(0JKbF{=tsMDRU}3mThH~IW)PyPG#1(w-LH0_@odezcu2>U+ejTv>nYn`pO0?|GRwm)cS+BO zbQ|vUa2f}{Y^3i^@oq|1Qp*5DsOm(ENcK-I?CViy#4#IvMi#TxgUY@_jZK zPS6?oPGo&#^(XhYVS&nhaFE0Krl!*o(01i%*&{FnZPoFA7ZWlmR_B~>eNlBBKR4V|HWBHC-HRLW;P}V~6L_P&#Lg*^ znbgD1Y5BR1kCKUj(&8}w^Ea^(gKR!exyES%%8jUNKRTy3`+WXpAu&c(>yM{Grk(W~ z8&@?&INitK_1t13o9@i35M9ku^}X8Ad1s66%Ni>b{EfS*Z<@=CM;6eoYUwcQUQ1C) z*^zu^Xed^oAWpyryJUMO#30-4q|8C4=>GZ($2_dw1Na1F!mA8IAx{(D&pElP9OhQg z=cps5kKfUqiz_Dh8sogSNOHPcDv+TYCi!FL` z4F<+oLd%q@z&557bk;KU8*kdMS9m=iL*CHNa+b#5t(sF3;*8p5dy(Cs!pWr& z)8n{xRq6NhQ4yd4FgmC)M~2XRkOU~I0>ber#Sm4hOzuAh??!+tf!ARqDy9&A!sC&; zaX0d32;GT(H5|_~}9@ct< zq^`J?&;T~W%C1O+MP@0&l6oogEjg+QKAA|@mXm$1(*RM>XJ*UyZA?Nk%3Y|r{q<0# z7->ZkK8GaHtJ98PH0M!o3}7wLyHLAm4cjvh(&Y_#6^6wcGEAtIF`fCtvmj$?2D=~{ z8jRE@2hli?Kbmh|S4=Q%@h$kFs+wU|YUH+~Qi`G%A}>|VaOmMqe0<$49(>Lmp-VH0 zN1lYbt)?UFggnQwH_0)tBt1~H8dxIBRq|?#iHaZB-{-ZaAFZyf`g!y8t7=ygrK-Au z-8TNT$`%#5^#{DNcvo`_(qWZU%86il1{nLq)rbhcP1=Jy42c2Yv1=Vt1y=IuWIQPW zK@J6!*LvN~z%d>~{Z2>>rKXfO(!uSw>9q1n?gz~aBf{nPFwU`51alm=eHl$(UT~T8 zgqCNts5^hS!bCPr!Z^Z%G7)kVLB#xc>zGgZ{+VS&ctZ?tG%a9XOnbzW&KXK5>G~6G zXef`tS#Wb5!HN_Iv<@}`vbsESKts1%D11)$M-E}n??~tJteT0syqh)l#a8UEDbLMc z-M^noA;Y@%QT#r!Ygtwv{Q3TPHQYRDI*9JpIib;>EoJmQe6Cf6dIknVAg!lhWyr@? zLk|EYJ{zT8YE?~DHEb)JZqxY$1Ruh?Ov_~mN(*Wt=>DROZsdhzr%Bai1M zv$0yG&W=i&iD*G8ZDxc*Enh@SaI4?exRw;CQd0E5a%w2*bEt&v;o@34yc^S;IWWNs zG?oFRZyBk)pRlFRT3D^v^kfuW#aGeQRNUTpIV7KLvoY}C=sk;ZJg|s#Vt|<8B;IhQ zvkTN#+pi5~JCIXYb4i;n3ZA_8{V?;+#^~jn8bE{*v$wB9x8=ZV)jZ;_mXz2`8}Iiw zHlIiiGkZ*L1Kza|4;d@pfcD@jwnCrMR)mSJFY(EaqcdwJY8E~)&MU+&vj>Nj{d1Vp4-r8?Wk-LBy`Gv}KZ4S~jrfL#=$MBnm=Qf`KKNu)NtGC0FX zokEce(yB_4n-zh_HULn(GADMb=NbMai=$?g>>`w*X`G&YP`ouPTljQ74XM=R?m#fT z(^P_fViUp2SkuFs*Ft;TBk@Yu2H$k3>63F=!NHq3h%Z>m_+Jus?CLJCl#@HLyjGu( z^%!cF{t4*)T+9Dh;Ir~@{!ugtRMYkk&}07{^qBuCjIsTRg@2{>FD(2M#{Qj*`+K5d zj-SHiZ$@x3|Do*uFIIDv6#=Zq%$z*G3#DwoaQH8d5(oDmnEba<;`}qe^Z$=V=^v9M zv$6h90xAO2Z*nr*-)Z)joXqxD1BBUrp7{%o|KA1spB?%e*t4vAYS>+JVcR#}#wmh}3FMX5+y!mr%2 zrdqnDG6MpACbl>F`q5o4`%N&ozMPogo%OYo?t3pS2=IMFf4XL9UKjX=*=GB^E^rjz zG?=j0ad76q@$G|TF2zvpt)8>o)Xa&ui{A5non`x7)pNo31s?^RC++8Fnup`thaS}9 zWE8!-nh`{7QquSH9o{70HBBVw9TLM@zw_chyWd@GwCHt2w3CQMAX1jlGl{qp-Co_6 z)+wrBsMRRKvYNj2Sazz^+fXddr{3M7+1%Jz_gT~7nlX_T_sWr1h#R4nLBM}{+&|ei zuqkVw+;oZ-5canvaaj;3p;npN9{7lVP;&qEe5B(0RS8MeaNYpw)Gg>UQa~go+u598 zUor9efwX;I+s&m_u^*WDkzNi)%_dsSm|nDpS?YvllFxiup3E>V(VR1X6Nmp8MfVxkAJU;KdEeJBhubq2X9`Z_GNP2Pd&m9$S{7swneIbx;pr!uBab zp6u(+y&cpeER3azCyd0bwJ5`5uC{AF>XwIrQv8mYhu5zg4`h!5`oGhC*^m+jv56hX zwD?MnL}!53&3WfN;lexST$hFFBFd)dO1UxE1(v4hE+?c4BRk@WrfB)(x8NKwy5Cur zXU=-;8|Kxy%#e}voA=1MfqwVhvkw7T zxI^wuT1_O#Ld|W^ho?leEKF#O-4}4&)q+(aSzaClfN`bKsaurwn{l{@YG}c1qJNaR zVJ1uxw=1@qqEf7C42^S#COL;$?mZ5!63oPL-1 ztS@p}Kme)9&M$Q4CZw4y%CcT+#R2ZAo!G?t#j;V>Bw)yYj z5!6#;guki$D#daJ4Q8ui3O2q=z}s9|sRs!4^x>i=VLjk5N3knEfI-?|Bx%`@s8B*Yac zF4Hg4vq?@1*HvJbMBNU$oKx>*12pAQL=m9W|b&AN0;WU&uoRRV-oN&q{Z?9 zd_<}e-UU&o2eNSCC=eRFEAg9C3A3BjN}^pM@(Z0*Bf^NKpU!y*uO{$SMcN+I7%?s7 zia7W61p0Fx&@U}%1xXwmA_`g2cBz**H_wOY_c?HAvSumL3v7SHq@0d^=)>z2t$ty2 ziJx}_7j5&d@#SfK;CH@$`eV<+25DEPm}=6gj)BFQ&lZgo&%FB``Vo>07;DTchX@PQ zCb=+uHj%3*vdYf1Z}2SpnuMhFv0w4da>7+8;wBp>KjFq%-_!e5Z4jFaHk83sZOSeS z;jbO6(YNXcbYBa8@RaoliTw<;?&lh_XASQvscBqkum+N@jfK{va$y9r^xj$zHPwFh z46qmLrm<_t3G>M-EBOHHPof?i=T(p<4;_o&-Qib?Qh>&_XRe!d}mefoB0Dtc4zWkK6cf5-`T7E)o{dqv0Vp&sX6?KtGR#(N2@# zu3v}OPudG_pd7!94zaBN9Pyk5kXi5655Y5eCJz|U@?skKlBV$1LB;VaWVYmJdo7jz zZpY~f1@VXa$IYZuOXFQ`B(=opqy$2kA<`^&rOFGJ_i1-5N4GrG*$ zC!fz*6Tc$tunsRK3N~sF4Q2Q?wM`0F$&>3fWZAwd2s)H%i7h&d2=UYNnS z@F9P8$!FMko=5O$!Ir4V6fJP0>u2>H#Tar>QiJ#eDhiAE*l(3zi$o70n4mAaNb3D(Y}`LSy; zCzQ*%*hJfs%iOJPacAbxZCCp`=e*!xxv&^o!%)!TN$0sZBk=OMWg2qbBfV0H4;0>S53K; zldym%gEs6$!v3z#kXyxJ25ar~J1ov1yZArh)t^h!pS;S+!TjUrKVGx3{o(*EkYM#^ zUM&zU{6i!r`=40*doy-6_CMh1H;oZgCg+#h`Bz&1!rK2}!vB!#IRD(4%Ltn~wzLdvWytY9ARcl>@cBgiyjxQ9Ag<89r?9f|^CtA74 z>)X$Hv2v6vF<;kPxpg*{4*H6j=os+%PS~Nr_e|Vz`dyb#++1m1akJF~xSk)F=FjCoQM#Y?d@T9DO?sI>1u-e;;tcJHmfT-o zo>V5vCeSn04W&=a^yn?rmbz+9QO$BvCdb~W0e=~hjyOOYAfy!J

3H0NX%FPvY-Bnf(aW$nWJp(P=}y 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 z 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

Nu@~(xn$rira>OqGP$M;r_NS3` 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

Hyq7q4cpa^J(pMd0_uVvbB8 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 literal 0 HcmV?d00001 diff --git a/docs/index.yaml b/docs/index.yaml new file mode 100644 index 0000000..57d6af4 --- /dev/null +++ b/docs/index.yaml @@ -0,0 +1,318 @@ +doctitle: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents' +citation-style: '../../../install/pandoc/csl/bbf.csl' +bbfWorkArea: '' +siteurl: 'index.html' +version: '' +refIndexTemplate: '\[i\]\[suf\]' +link-citations: true +bbfYear: 2020 +figureTemplate: '\[figureTitle\] \[i\]\[titleDelim\] \[t\]' +bbfType: 'Technical Report' +reference-section-title: References +cref: false +linkReferences: true +include-entry: '../../../install/pandoc/' +subfigGrid: false +bbfRevisionHistorySpec: + after: '

Comments or questions about this Broadband Forum Technical Report should be directed to info@broadband-forum.org.

' + optional: true + labels: + - number + - approval + - publication + - editors + - changes + headers: + - 'Issue Number!!!' + - 'Approval Date!!!!' + - 'Publication Date!' + - 'Issue Editor!!!!!' + - 'Changes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + before: '

Issue History

' +lolTitle: '

List of Listings

' +listingTemplate: '\[listingTitle\] \[i\]\[titleDelim\] \[t\]' +bbfNumber: 'TR-106' +bbfCertProductType: '<type of product>' +codeBlockCaptions: false +lang: 'en-US' +bbfPSLsSpec: + optional: true + before: '

Project Stream Leader(s)

' +uspRevisionHistorySpec: + after: '

Comments or questions about this Broadband Forum Technical Report should be directed to info@broadband-forum.org.

' + optional: true + labels: + - number + - changes + headers: + - 'Issue Number' + - 'Changes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + before: '

Issue History

' +chapDelim: '.' +date: 'Issue Date: November 2020' +bbfRevisionHistory: + - changes: Original + number: 'Issue 1' + editors: '

Jeff Bernstein, 2Wire
Christele Bouchat, Alcatel
Tim Spets, Westell

' + approval: 'September 2005' + - changes: 'Clarification of original document' + number: 'Issue 1 Amendment 1' + editors: '

Jeff Bernstein, 2Wire
John Blackford, 2Wire
Mike Digdon, SupportSoft
Heather Kirksey, Motive
William Lupton, 2Wire
Anton Okmianski, Cisco

' + approval: 'November 2006' + - changes: 'Addition of data model definition XML Schema and normative XML common object and component definitions' + number: 'Issue 1 Amendment 2' + editors: '

William Lupton, 2Wire
Håkan Westin, Tilgin

' + approval: 'November 2008' + - changes: 'Addition of device type XML Schema' + number: 'Issue 1 Amendment 3' + editors: '

William Lupton, 2Wire
Håkan Westin, Tilgin

' + approval: 'September 2009' + - changes: 'Moved data model definitions to TR-181 Issue 1' + number: 'Issue 1 Amendment 4' + editors: '

William Lupton, 2Wire
Paul Sigurdson, Broadband Forum

' + approval: 'February 2010' + - changes: '

Replaced definitions of named data types such as IPAddress with references to normative XML.
Minor changes to DM Schema (v1.3) and DT Schema (v1.1).

' + number: 'Issue 1 Amendment 5' + editors: 'Paul Sigurdson, Broadband Forum' + approval: 'November 2010' + - changes: '

Removed definition of proxying, now defined in TR-069.
Removed Common objects.
Alias Parameter Requirements added.

' + number: 'Issue 1 Amendment 6' + editors: '

Sarah Banks, Cisco
Andrea Colmegna, FASTWEB
Tim Spets, Motorola Mobility

' + approval: 'July 2011' + - number: 'Issue 1 Amendment 7' + editors: 'William Lupton, Cisco' + changes: '

Added descriptions of new features in DM Schema (v1.4 & v1.5) and DT Schema (v1.2 & v1.3).
Added Annex defining additional requirements for BBF standard data models.

' + publication: '7 October 2013' + approval: 'September 2013' + - number: 'Issue 1 Amendment 8' + editors: '

Jean-Didier Ott, Orange
William Lupton, Broadband Forum

' + changes: '

Added support of USP (mountable objects).
Removed references to obsolete data models.
Moved device requirements to TR-069.

' + publication: '10 May 2018' + approval: '16 March 2018' + - changes: '

Schema updates; document not updated.

' + number: 'Issue 1 Amendment 9' + - number: 'Issue 1 Amendment 10' + editors: '

William Lupton, Broadband Forum

' + changes: '

Converted document to markdown.
Various editorial improvements.

' + publication: '5 November 2020' + approval: '5 November 2020' +autoSectionLabels: true +uspAcknowledgmentsSpec: + optional: true + headers: + - 'Name!!!!!!!!!!!!!!!!!!' + - 'Company!!!!' + - 'Email!!!!!!!!!!' + before: '

Acknowledgments

The following individuals are being acknowledged for their efforts in the testing and development of this specification.

' +uspWADsSpec: + optional: true + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Work Area Directors

' +secHeaderTemplate: '\[i\]\[secHeaderDelim\]\[t\]' +uspPSLsSpec: + optional: true + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Project Stream Leaders

' +uspEditorsSpec: + optional: true + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Editors

' +bbfEditors: 'William Lupton, Broadband Forum' +references: + - issued: + year: 1997 + call-number: 'RFC 2119' + id: RFC2119 + title: 'Key words for use in RFCs to Indicate Requirement Levels' + URL: 'https://tools.ietf.org/html/rfc2119' + publisher: IETF + - issued: + year: 1999 + call-number: 'RFC 2648' + id: RFC2648 + title: 'A URN Namespace for IETF Documents' + URL: 'https://tools.ietf.org/html/rfc2648' + publisher: IETF + - issued: + year: 2005 + call-number: 'RFC 3986' + id: RFC3986 + title: 'Uniform Resource Identifier (URI): Generic Syntax' + URL: 'https://tools.ietf.org/html/rfc3986' + publisher: IETF + - issued: + year: 2018 + call-number: 'TR-069 Amendment 6' + id: 'TR-069' + title: 'CPE WAN Management Protocol' + URL: 'https://www.broadband-forum.org/technical/download/TR-069.pdf' + publisher: 'Broadband Forum' + - issued: + year: 2017 + call-number: 'TR-140 Amendment 3' + id: 'TR-140' + title: 'TR-069 Data Model for Storage Service Enabled Devices' + URL: 'https://www.broadband-forum.org/technical/download/TR-140.pdf' + publisher: 'Broadband Forum' + - issued: + year: 2015 + call-number: 'TR-143 Amendment 1 Corrigendum 1' + id: 'TR-143' + title: 'Enabling Network Throughput Performance Tests and Statistical Monitoring' + URL: 'https://www.broadband-forum.org/technical/download/TR-143.pdf' + publisher: 'Broadband Forum' + - issued: + year: 2018 + call-number: 'TR-181 Issue 2 Amendment 12' + id: 'TR-181i2' + title: 'Device Data Model for TR-069' + URL: 'https://www.broadband-forum.org/technical/download/TR-181_Issue-2.pdf' + publisher: 'Broadband Forum' + - issued: + year: 2018 + call-number: 'TR-369' + id: 'TR-369' + title: 'User Services Platform' + URL: 'https://www.broadband-forum.org/technical/download/TR-369.pdf' + - id: OUI + title: 'Organizationally Unique Identifiers (OUIs)' + URL: 'https://standards.ieee.org/faqs/OUI.html' + publisher: IEEE + - issued: + year: 2000 + publisher: W3C + id: SOAP + title: 'Simple Object Access Protocol (SOAP) 1.1' + URL: 'https://www.w3.org/TR/2000/NOTE-SOAP-20000508' + - issued: + year: 2008 + publisher: W3C + id: XML + title: 'Extensible Markup Language (XML) 1.0 (Fourth Edition)' + URL: 'https://www.w3.org/TR/REC-xml' + - issued: + year: 2004 + publisher: W3C + id: 'XML-Schema-Primer' + title: 'XML Schema Part 0: Primer Second Edition' + URL: 'https://www.w3.org/TR/xmlschema-0' + - issued: + year: 2004 + publisher: W3C + id: 'XML-Schema-Datatypes' + title: 'XML Schema Part 2: Datatypes Second Edition' + URL: 'https://www.w3.org/TR/xmlschema-2' +subfigLabels: 'alpha a' +eqnPrefixTemplate: '\[p\] \[i\]' +figLabels: arabic +ccsDelim: ', ' +permalinkicon-width: '0.8em' +titleDelim: ':' +figPrefix: + - Figure + - Figures +title-prefix: BBF +title: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents' +theme-color: '#157878' +tableTitle: Table +tblPrefix: + - Table + - Tables +rangeDelim: '-' +lofTitle: '

List of Figures

' +autoEqnLabels: false +tagline: 'How to use the data model schema' +bbfVersion: '1 Amendment 10' +eqLabels: arabic +tblPrefixTemplate: '\[p\] \[i\]' +tableTemplate: '\[tableTitle\] \[i\]\[titleDelim\] \[t\]' +tableEqns: false +figureTitle: Figure +permalinkicon-url: 'permalink.png' +subtitle: 'Issue: 1 Amendment 10 ' +permalinkicon: '' +lstPrefixTemplate: '\[p\] \[i\]' +refDelim: ', ' +bbfWADs: + - 'Jason Walls, QA Cafe' + - 'John Blackford, CommScope' +subfigureTemplate: '\[figureTitle\] \[i\]\[titleDelim\] \[t\]. \[ccs\]' +description: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents: How to use the data model schema' +buttons: + - label: CWMP + url: 'https://www.broadband-forum.org/technical/download/TR-069.pdf' + - label: 'CWMP Data Models' + url: 'https://cwmp-data-models.broadband-forum.org' + - label: USP + url: 'https://usp.technology' + - label: 'USP Data Models' + url: 'https://usp-data-models.broadband-forum.org' + - label: HTML + url: 'index.htm' + - label: PDF + url: 'index.pdf' +listingTitle: Listing +ccsTemplate: '\[i\]\[ccsLabelSep\]\[t\]' +nameInLink: true +tocTitle: '

Table of Contents

' +lotTitle: '

List of Tables

' +tblLabels: arabic +sectionsDepth: '-1' +secPrefixTemplate: '\[p\] \[i\]' +bbfStatus: '' +lstPrefix: + - 'lst.' + - 'lsts.' +lstLabels: arabic +secLabels: arabic +secHeaderDelim: ' ' +copydate: 2020 +reponame: '' +figPrefixTemplate: '\[p\] \[i\]' +shortname: 'TR-106' +secPrefix: + - Section + - Sections +toc-depth: 3 +ccsLabelSep: ' — ' +pairDelim: ' and ' +numberSections: true +subfigureChildTemplate: '\[i\]' +author: [] +build: '' +project: 'Data Model Template for CWMP Endpoints and USP Agents' +analyticstag: '' +bbfContrib: '' +bbfCertProgram: '<BBF.NNN>' +status: '' +ignore: true +listings: false +subfigureRefIndexTemplate: '\[i\]\[suf\] (\[s\])' +chapters: false +bbfWADsSpec: + title: '

Broadband User Services Work Area Director(s)

' +bbfProjectStream: '' +bbfTitle: 'Data Model Template for CWMP Endpoints and USP Agents' +bbfEditorsSpec: + optional: true + before: '

Editors

' +bbfIssue: Issue +crossrefYaml: 'pandoc-crossref.yaml' +eqnPrefix: + - 'eq.' + - 'eqns.' +lastDelim: ', ' +bbfMonth: November +chaptersDepth: 1 diff --git a/docs/index.yml b/docs/index.yml new file mode 100644 index 0000000..2172d9a --- /dev/null +++ b/docs/index.yml @@ -0,0 +1,317 @@ +figPrefixTemplate: '\[p\] \[i\]' +bbfStatus: '' +author: [] +linkReferences: true +lang: 'en-US' +buttons: + - url: 'https://www.broadband-forum.org/technical/download/TR-069.pdf' + label: CWMP + - url: 'https://cwmp-data-models.broadband-forum.org' + label: 'CWMP Data Models' + - url: 'https://usp.technology' + label: USP + - url: 'https://usp-data-models.broadband-forum.org' + label: 'USP Data Models' + - url: 'index.htm' + label: HTML + - url: 'index.pdf' + label: PDF +codeBlockCaptions: false +ccsDelim: ', ' +bbfTitle: 'Data Model Template for CWMP Endpoints and USP Agents' +lotTitle: '

List of Tables

' +tableTemplate: '\[tableTitle\] \[i\]\[titleDelim\] \[t\]' +bbfEditorsSpec: + optional: true + before: '

Editors

' +tableTitle: Table +secHeaderTemplate: '\[i\]\[secHeaderDelim\]\[t\]' +lolTitle: '

List of Listings

' +chapters: false +bbfVersion: '1 Amendment 10' +copydate: 2020 +build: '' +rangeDelim: '-' +bbfPSLsSpec: + optional: true + before: '

Project Stream Leader(s)

' +cref: false +autoSectionLabels: true +date: 'Issue Date: November 2020' +lofTitle: '

List of Figures

' +permalinkicon-url: 'permalink.png' +subfigureRefIndexTemplate: '\[i\]\[suf\] (\[s\])' +status: '' +uspRevisionHistorySpec: + headers: + - 'Issue Number' + - 'Changes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + before: '

Issue History

' + after: '

Comments or questions about this Broadband Forum Technical Report should be directed to info@broadband-forum.org.

' + labels: + - number + - changes + optional: true +bbfIssue: Issue +chapDelim: '.' +figPrefix: + - Figure + - Figures +lstPrefix: + - 'lst.' + - 'lsts.' +uspWADsSpec: + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Work Area Directors

' + optional: true +uspPSLsSpec: + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Project Stream Leaders

' + optional: true +eqLabels: arabic +figureTemplate: '\[figureTitle\] \[i\]\[titleDelim\] \[t\]' +uspEditorsSpec: + headers: + - 'Name!!!!!!!!' + - 'Company!!' + - 'Email!!!!!!!!!' + - 'Role!!!!!!!!!!!!!!!' + before: '

Editors

' + optional: true +tableEqns: false +doctitle: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents' +refIndexTemplate: '\[i\]\[suf\]' +listingTemplate: '\[listingTitle\] \[i\]\[titleDelim\] \[t\]' +eqnPrefix: + - 'eq.' + - 'eqns.' +tocTitle: '

Table of Contents

' +titleDelim: ':' +bbfRevisionHistorySpec: + headers: + - 'Issue Number!!!' + - 'Approval Date!!!!' + - 'Publication Date!' + - 'Issue Editor!!!!!' + - 'Changes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + before: '

Issue History

' + after: '

Comments or questions about this Broadband Forum Technical Report should be directed to info@broadband-forum.org.

' + labels: + - number + - approval + - publication + - editors + - changes + optional: true +sectionsDepth: '-1' +bbfWADs: + - 'Jason Walls, QA Cafe' + - 'John Blackford, CommScope' +nameInLink: true +siteurl: 'index.html' +lstPrefixTemplate: '\[p\] \[i\]' +title-prefix: BBF +ignore: true +title: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents' +bbfProjectStream: '' +tblPrefix: + - Table + - Tables +eqnPrefixTemplate: '\[p\] \[i\]' +tblPrefixTemplate: '\[p\] \[i\]' +bbfMonth: November +bbfWADsSpec: + title: '

Broadband User Services Work Area Director(s)

' +tblLabels: arabic +tagline: 'How to use the data model schema' +crossrefYaml: 'pandoc-crossref.yaml' +ccsTemplate: '\[i\]\[ccsLabelSep\]\[t\]' +bbfEditors: 'William Lupton, Broadband Forum' +subtitle: 'Issue: 1 Amendment 10 ' +listings: false +subfigureTemplate: '\[figureTitle\] \[i\]\[titleDelim\] \[t\]. \[ccs\]' +bbfCertProgram: '<BBF.NNN>' +bbfContrib: '' +subfigLabels: 'alpha a' +subfigureChildTemplate: '\[i\]' +references: + - id: RFC2119 + publisher: IETF + title: 'Key words for use in RFCs to Indicate Requirement Levels' + call-number: 'RFC 2119' + issued: + year: 1997 + URL: 'https://tools.ietf.org/html/rfc2119' + - id: RFC2648 + publisher: IETF + title: 'A URN Namespace for IETF Documents' + call-number: 'RFC 2648' + issued: + year: 1999 + URL: 'https://tools.ietf.org/html/rfc2648' + - id: RFC3986 + publisher: IETF + title: 'Uniform Resource Identifier (URI): Generic Syntax' + call-number: 'RFC 3986' + issued: + year: 2005 + URL: 'https://tools.ietf.org/html/rfc3986' + - id: 'TR-069' + publisher: 'Broadband Forum' + title: 'CPE WAN Management Protocol' + call-number: 'TR-069 Amendment 6' + issued: + year: 2018 + URL: 'https://www.broadband-forum.org/technical/download/TR-069.pdf' + - id: 'TR-140' + publisher: 'Broadband Forum' + title: 'TR-069 Data Model for Storage Service Enabled Devices' + call-number: 'TR-140 Amendment 3' + issued: + year: 2017 + URL: 'https://www.broadband-forum.org/technical/download/TR-140.pdf' + - id: 'TR-143' + publisher: 'Broadband Forum' + title: 'Enabling Network Throughput Performance Tests and Statistical Monitoring' + call-number: 'TR-143 Amendment 1 Corrigendum 1' + issued: + year: 2015 + URL: 'https://www.broadband-forum.org/technical/download/TR-143.pdf' + - id: 'TR-181i2' + publisher: 'Broadband Forum' + title: 'Device Data Model for TR-069' + call-number: 'TR-181 Issue 2 Amendment 12' + issued: + year: 2018 + URL: 'https://www.broadband-forum.org/technical/download/TR-181_Issue-2.pdf' + - id: 'TR-369' + title: 'User Services Platform' + call-number: 'TR-369' + issued: + year: 2018 + URL: 'https://www.broadband-forum.org/technical/download/TR-369.pdf' + - id: OUI + URL: 'https://standards.ieee.org/faqs/OUI.html' + publisher: IEEE + title: 'Organizationally Unique Identifiers (OUIs)' + - id: SOAP + publisher: W3C + title: 'Simple Object Access Protocol (SOAP) 1.1' + URL: 'https://www.w3.org/TR/2000/NOTE-SOAP-20000508' + issued: + year: 2000 + - id: XML + publisher: W3C + title: 'Extensible Markup Language (XML) 1.0 (Fourth Edition)' + URL: 'https://www.w3.org/TR/REC-xml' + issued: + year: 2008 + - id: 'XML-Schema-Primer' + publisher: W3C + title: 'XML Schema Part 0: Primer Second Edition' + URL: 'https://www.w3.org/TR/xmlschema-0' + issued: + year: 2004 + - id: 'XML-Schema-Datatypes' + publisher: W3C + title: 'XML Schema Part 2: Datatypes Second Edition' + URL: 'https://www.w3.org/TR/xmlschema-2' + issued: + year: 2004 +shortname: 'TR-106' +include-entry: '../../../install/pandoc/' +autoEqnLabels: false +bbfRevisionHistory: + - approval: 'September 2005' + editors: '

Jeff Bernstein, 2Wire
Christele Bouchat, Alcatel
Tim Spets, Westell

' + number: 'Issue 1' + changes: Original + - approval: 'November 2006' + editors: '

Jeff Bernstein, 2Wire
John Blackford, 2Wire
Mike Digdon, SupportSoft
Heather Kirksey, Motive
William Lupton, 2Wire
Anton Okmianski, Cisco

' + number: 'Issue 1 Amendment 1' + changes: 'Clarification of original document' + - approval: 'November 2008' + editors: '

William Lupton, 2Wire
Håkan Westin, Tilgin

' + number: 'Issue 1 Amendment 2' + changes: 'Addition of data model definition XML Schema and normative XML common object and component definitions' + - approval: 'September 2009' + editors: '

William Lupton, 2Wire
Håkan Westin, Tilgin

' + number: 'Issue 1 Amendment 3' + changes: 'Addition of device type XML Schema' + - approval: 'February 2010' + editors: '

William Lupton, 2Wire
Paul Sigurdson, Broadband Forum

' + number: 'Issue 1 Amendment 4' + changes: 'Moved data model definitions to TR-181 Issue 1' + - approval: 'November 2010' + editors: 'Paul Sigurdson, Broadband Forum' + number: 'Issue 1 Amendment 5' + changes: '

Replaced definitions of named data types such as IPAddress with references to normative XML.
Minor changes to DM Schema (v1.3) and DT Schema (v1.1).

' + - approval: 'July 2011' + editors: '

Sarah Banks, Cisco
Andrea Colmegna, FASTWEB
Tim Spets, Motorola Mobility

' + number: 'Issue 1 Amendment 6' + changes: '

Removed definition of proxying, now defined in TR-069.
Removed Common objects.
Alias Parameter Requirements added.

' + - number: 'Issue 1 Amendment 7' + publication: '7 October 2013' + changes: '

Added descriptions of new features in DM Schema (v1.4 & v1.5) and DT Schema (v1.2 & v1.3).
Added Annex defining additional requirements for BBF standard data models.

' + editors: 'William Lupton, Cisco' + approval: 'September 2013' + - number: 'Issue 1 Amendment 8' + publication: '10 May 2018' + changes: '

Added support of USP (mountable objects).
Removed references to obsolete data models.
Moved device requirements to TR-069.

' + editors: '

Jean-Didier Ott, Orange
William Lupton, Broadband Forum

' + approval: '16 March 2018' + - number: 'Issue 1 Amendment 9' + changes: '

Schema updates; document not updated.

' + - number: 'Issue 1 Amendment 10' + publication: '5 November 2020' + changes: '

Converted document to markdown.
Various editorial improvements.

' + editors: '

William Lupton, Broadband Forum

' + approval: '5 November 2020' +secPrefixTemplate: '\[p\] \[i\]' +bbfType: 'Technical Report' +secPrefix: + - Section + - Sections +bbfWorkArea: '' +lstLabels: arabic +secHeaderDelim: ' ' +reponame: '' +subfigGrid: false +theme-color: '#157878' +refDelim: ', ' +numberSections: true +description: 'TR-106 – Data Model Template for CWMP Endpoints and USP Agents: How to use the data model schema' +permalinkicon-width: '0.8em' +permalinkicon: '' +secLabels: arabic +project: 'Data Model Template for CWMP Endpoints and USP Agents' +bbfCertProductType: '<type of product>' +citation-style: '../../../install/pandoc/csl/bbf.csl' +version: '' +chaptersDepth: 1 +bbfYear: 2020 +lastDelim: ', ' +pairDelim: ' and ' +listingTitle: Listing +bbfNumber: 'TR-106' +link-citations: true +uspAcknowledgmentsSpec: + headers: + - 'Name!!!!!!!!!!!!!!!!!!' + - 'Company!!!!' + - 'Email!!!!!!!!!!' + before: '

Acknowledgments

The following individuals are being acknowledged for their efforts in the testing and development of this specification.

' + optional: true +analyticstag: '' +reference-section-title: References +figLabels: arabic +figureTitle: Figure +ccsLabelSep: ' — ' diff --git a/docs/pencil.png b/docs/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..aa00f5f28d1da6eff982403e21cea0a34a17ff27 GIT binary patch literal 2655 zcmY*bc|2768$QD<)+jAR8DmL{8Ag&ZW6Ki7NZk+`dkw~5rqIP;>ZTG|vQ%7`xh5$~ z_C2{5TKvab= zNrs$sr2v4mf+#@1gGY)&H&^007pjZ>X^anWH8k$LMND_{>9|KK9+tIpDZ?DZn>h#M4uELKmXKQJGE&??EV5V2o zYF9hVarc>faBzxlTSlB`{*kUE`Q0E%bF&v`4!|EaT>o9uT2EYUuU`Le;2m#w#G7w{ zb}ZAQ;0vI{=aN%!3BCAFr$SyV^T$gFg-(BFuCBb`)@7z)qn|hohvlAS))(^xNLMsr zsb_M2TfZT!7ZyloLtwB3QvK-I$3x{FFK1XBnoo$`MBtcH4o&kHj}w2*083BTX{Y#A z`Q<|e73|%`s{*Tn80^7Q(U5XXOy;CH!zl? zGUm4HI>kmm=*1m|%OY*JchzRd;;XB(X?AX6i~jl(3Fr=v9h!l=bgeVuj92wO!wis7Fz5Ge&g0i5Zh28O1otLT`b4ygXse!4~Vln zI)Dp~^Hf`LR#kn-6@XjId5U*2eO64l?kG%NhGlURzHFOz3?^x9s(g$*0MCm2kg3Nk zp|0e0GtyEA`8O)LePFpz>~eYeTlV6!n$hkCucHINo*b+OrEXPY2vg%YzH-mF_TNvn zvjsjiTNdW`*6;cy79GwpKB^xnk&@Ws@Pun4FLyB4xOwgI$i7n9_~}wq^qKt)hX>u9 zUl+CMGp5~`)T>S;c|~5?d?Sd;Y>=^tNo9uG`>ISla38PM8Rkl05PbXk*^gaa^rBk?Qine@=V{L1 zn}D+sS+BRVDkd{*3=2b3)2fQcD#%LijqSkKOWQOOf{Ao+Xr+b_!O3_U{2MM$5A$zS+n zR3^_af|}hFY@*fqdn|%_fzTr?^8PU%-S&Ko)|NW-P8koT#$K&4VwtMKGN*_P&EBpp zwb(`*=dLNov@NeuI6Y;{S8K3nZKn9yQ0fHl#~(RD(N@XGrefbPdHJf!oB>~zfkP`s zUev=3+{Dt}j_<>(>+p4a8Vo<4+O&h-k+E*(5iYw&ZZ_A9bq)=u(ZWBiLZVrOGwoA9 z7=m}H zlG61?{5c2TWXSOXb!kZJi5~XAiZ}>CT&^yECb^cnb&PHWRpVKHJVAf3-uCPKY+jt( z)M9$LjJ$0zd(Rj_Y;@I?PyQ8WVO_7Q-gXpKXj-~gWd-(ofs+Yy1kSzcs4A~KS*n-H zMpoOzH&3^;dZw7O^wpS$rjr0BNEI~(>$CzLi|4$F(C~9QcS%+(dcW*tQ&!hQ`%DII zGQxutTRffVkL;Pk{4auH z9*$VV98d4~MGJpkEopoR+PIef*YavaUYp#npKu1jGaobU+~PUn+qq9L4#j~>z6z6B z9wbh2@!VW5c`5L=>eQpbl^d0Da7On}86h6boYu9lt^}VeRk9&NaX(}$UmD*!u!qpd zu75u_zdk@NA1YrKT~p|13K*X>(cNoj=iymk;0gRzn*68_SNc~N|@QGOAp<=pO3n0-N+t#;~}ZC zItnaed{pG@4EPiu8~>lMJtxbeH@I!D62Nbv=|pz0v}LGH&DM78d=vIYDdf>kz95&;UkX`Po_P8?C0irehdal^ByO*uqYw5TM!TQ*wXW;D?zclRuc1Mqn*wC@2Tm$tIJYTsjuW8h4S$oQCbl+M`_Csx2fE9*&=yB zLK!^E>5tura_7W2glat1Wkfo3SN$7qWLq&X4DA5tE@((h)If-mzmTOz1`Q!hDA%r+ e6mav8{3Y6~qcQ27om8XfFU!`-!Lr1{GyXrusl3Gi literal 0 HcmV?d00001 diff --git a/docs/permalink.png b/docs/permalink.png new file mode 100644 index 0000000000000000000000000000000000000000..83b6ae2ff57df9b2ec26a67ec1a4b4b3f14e8696 GIT binary patch literal 3279 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 literal 0 HcmV?d00001 diff --git a/docs/toc.css b/docs/toc.css new file mode 100644 index 0000000..4c619b3 --- /dev/null +++ b/docs/toc.css @@ -0,0 +1,72 @@ +/* BBF CSS to be used in addition to baseline CSS */ + +/* experimental sidebar ToC placement */ + +:root { + --toc-width: 15rem; + --toc-padding-left-extra: 1rem; +} + +@media screen and (min-width: 924px) { + body { + padding-left: calc(var(--toc-width) + var(--toc-padding-left-extra)); + } + + #TOCFULL::before, #TOC::before { + content: "Table of Contents"; + font-weight: bold; + } + + #TOCFULL, #TOC { + position: fixed; + margin: 0 0; + top: 0px; + left: 0px; + width: var(--toc-width); + height: 100vh; + line-height: 1.4; + font-size: smaller; + overflow: auto; + overscroll-behavior: contain; + background-color: white; + border: 1px solid #73AD21; + } + + #TOCFULL ul, #TOC ul { + margin: 0.35em 0; + padding: 0 0 0 1em; + list-style-type: none; + } + + #TOCFULL ul ul, #TOC ul ul { + margin: 0.25em 0; + } + + #TOCFULL ul ul ul, #TOC ul ul ul { + margin: 0.15em 0; + } + + #TOCFULL li p:last-child, #TOC li p:last-child { + margin-bottom: 0; + } + + #TOCFULL { + z-index: 2; + } + + #TOC { + z-index: 1; + } +} + +@media screen and (max-width: 923px) { + #TOCFULL { + display: none; + } +} + +@media not screen { + #TOCFULL { + display: none; + } +} diff --git a/makefile b/makefile deleted file mode 100644 index a896efa..0000000 --- a/makefile +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2017, Broadband Forum -# -# Redistribution and use in source and binary forms, with or -# without modification, are permitted provided that the following -# conditions are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials -# provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The above license is used as a license under copyright only. -# Please reference the Forum IPR Policy for patent licensing terms -# . -# -# Any moral rights which are necessary to exercise under the above -# license grant are also deemed granted under this license. - -TOPDIR = . - -include $(TOPDIR)/defs.mk - -SUBDIRS = schemas support - -include $(TOPDIR)/rules.mk diff --git a/rules.mk b/rules.mk deleted file mode 100644 index 2e73667..0000000 --- a/rules.mk +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2017, Broadband Forum -# -# Redistribution and use in source and binary forms, with or -# without modification, are permitted provided that the following -# conditions are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials -# provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The above license is used as a license under copyright only. -# Please reference the Forum IPR Policy for patent licensing terms -# . -# -# Any moral rights which are necessary to exercise under the above -# license grant are also deemed granted under this license. - -include $(TOPDIR)/../../install/etc/rules.mk diff --git a/schemas/cwmp-datamodel-1.xsd b/schemas/cwmp-datamodel-1.xsd index cba7f20..086e490 100644 --- a/schemas/cwmp-datamodel-1.xsd +++ b/schemas/cwmp-datamodel-1.xsd @@ -1,26 +1,26 @@ Abbreviation item ID; SHOULD uniquely identify this item across all instance documents. - + Parameter active notify support. - + @@ -129,7 +131,7 @@ Type of argument parameter default. - + Default if argument parameter isn't supported. @@ -142,14 +144,14 @@ Bibliographic reference ID; SHOULD uniquely identify this reference across all instance documents. For BBF DM Instances, the bibliographic reference ID rules specified in A.2.4 MUST be used. For example, to reference TR-106 Issue 1 Amendment 2, the value of this attribute would be TR-106a2. - + Built-in type name. The type hierarchy is as for XML Schema, with "any" and "base64" mapping to the "anySimpleType" and "base64Binary" XML Schema types respectively. - + @@ -170,7 +172,7 @@ The type hierarchy is as for XML Schema, with "any" and "base64" mapping to the A command name SHOULD NOT start with an underscore or include any hyphens. In BBF standards, a command name MUST NOT start with an underscore or include any hyphens. - + @@ -181,7 +183,7 @@ The type hierarchy is as for XML Schema, with "any" and "base64" mapping to the A component which has a name beginning with an underscore is internal and cannot be imported by another DM Instance. In BBF standards, a component name MUST NOT include any hyphens. - + @@ -191,7 +193,7 @@ In BBF standards, a component name MUST NOT include any hyphens. - + @@ -199,7 +201,7 @@ In BBF standards, a data type name MUST NOT include any hyphens. Description action. - + @@ -212,7 +214,7 @@ In BBF standards, a data type name MUST NOT include any hyphens. - + @@ -221,13 +223,13 @@ In BBF standards, a data type name MUST NOT include any hyphens. Glossary item ID; SHOULD uniquely identify this item across all instance documents. - + Nested list escaping requirements. See section 3.2.3. - + MUST escape inner comma separators. @@ -251,7 +253,7 @@ In BBF standards, a data type name MUST NOT include any hyphens. - + @@ -263,7 +265,7 @@ In BBF standards, a data type name MUST NOT include any hyphens. - + @@ -277,7 +279,7 @@ In BBF standards, a model name MUST NOT include any hyphens. Indicates whether an object is mountable or a mount point. Mountable objects MUST be top-level children of the Root Object (other objects are not permitted to be mounted). - + @@ -289,7 +291,7 @@ In BBF standards, a model name MUST NOT include any hyphens. An object name component SHOULD NOT start with an underscore or include any hyphens. In BBF standards, an object name component MUST NOT start with an underscore or include any hyphens. - + @@ -298,7 +300,7 @@ In BBF standards, an object name component MUST NOT start with an underscore or Object path that cannot contain "{i}" placeholders and that therefore references a single object. The path MUST follow the requirements of A.2.3.4 (its scope will typically be specified via an attribute of type PathScope). - + @@ -306,7 +308,7 @@ In BBF standards, an object name component MUST NOT start with an underscore or Object path that can contain "{i}" placeholders and that can therefore references multiple objects. The path MUST follow the requirements of A.2.3.4 (its scope will typically be specified via an attribute of type PathScope). - + @@ -320,7 +322,7 @@ In BBF standards, an object name component MUST NOT start with an underscore or Opaque ID. - + @@ -328,7 +330,7 @@ In BBF standards, an object name component MUST NOT start with an underscore or Type of model parameter default. - + Default from standard, e.g. RFC. Also applies on object creation. @@ -352,7 +354,7 @@ In BBF standards, an object name component MUST NOT start with an underscore or A parameter name SHOULD NOT start with an underscore or include any hyphens. In BBF standards, a parameter name MUST NOT start with an underscore or include any hyphens. - + @@ -361,7 +363,7 @@ In BBF standards, a parameter name MUST NOT start with an underscore or include Parameter path that cannot contain "{i}" placeholders and that therefore references a single parameter. The path MUST follow the requirements of A.2.3.4 (its scope will typically be specified via an attribute of type PathScope). - + @@ -369,7 +371,7 @@ In BBF standards, a parameter name MUST NOT start with an underscore or include Object / parameter path name scope (A.2.3.4). - + @@ -381,7 +383,7 @@ In BBF standards, a parameter name MUST NOT start with an underscore or include A profile name SHOULD NOT start with an underscore or include any hyphens. In BBF standards, a profile name MUST NOT start with an underscore or include any hyphens. - + @@ -395,7 +397,7 @@ In BBF standards, a profile name MUST NOT start with an underscore or include an Object access (within profile). - + @@ -407,28 +409,28 @@ In BBF standards, a profile name MUST NOT start with an underscore or include an Read-write access. - + - + Parameter access options. - + - + Reference type (A.2.3.6). - + @@ -437,18 +439,29 @@ In BBF standards, a profile name MUST NOT start with an underscore or include an Item status (applies to most types of item). - + + + + Base string (can't have leading or trailing whitespace). + + + + + + + + (Reference) target type (used in path references). - + @@ -461,7 +474,7 @@ In BBF standards, a profile name MUST NOT start with an underscore or include an Relative parameter path name that cannot contain "{i}" placeholders and that therefore represents a valid uniqueKey parameter name. - + @@ -469,7 +482,7 @@ In BBF standards, a profile name MUST NOT start with an underscore or include an Units string. - + @@ -477,20 +490,44 @@ In BBF standards, a profile name MUST NOT start with an underscore or include an Universally Unique IDentifier (see RFC 4122). - + - Version (major.minor) in which this item was first defined. + Version (major.minor) or (major.minor.patch) in which this item was first defined. - + + + + + + + If true, the parameter MUST be present. + + + + + + + + + MUST be specified for a table in which the Controller can create entries and which has one or more uniqueKey elements that define functional keys. + + + + + MUST be specified for a table with a variable number of entries, i.e. for which maxEntries is greater than minEntries ("unbounded" is regarded as being greater than all values). + + + + @@ -668,7 +705,7 @@ The range facet MUST NOT be specified for non-numeric data types, i.e. data type Enumeration facets, taken together, define the valid values, e.g. "a" and "b" mean that the value has to be a or b. -The enumeration facet MUST NOT be specified for data types that are not derived from string. +The enumeration facet MUST NOT be specified for data types that are not derived from string. Derived types MAY add additional enumeration values. See A.2.5. @@ -681,7 +718,7 @@ The enumerationRef facet MUST NOT be specified for data types that are not deriv Pattern attributes, taken together, define valid patterns, e.g. "" and "[0-9A-Fa-f]{6}" means that the value has to be empty or a 6 digit hex string. -The pattern facet MUST NOT be specified for data types that are not derived from string. +The pattern facet MUST NOT be specified for data types that are not derived from string. Pattern syntax is the same as for XML Schema regular expressions. See https://www.w3.org/TR/xmlschema-2/#regexs. @@ -994,11 +1031,7 @@ If the object is a table (see maxEntries), the final part of the name MUST be "{ - - - If true, the parameter MUST be present in the command. - - + @@ -1010,8 +1043,8 @@ If the object is a table (see maxEntries), the final part of the name MUST be "{ - - + + @@ -1035,6 +1068,35 @@ If the object is a table (see maxEntries), the final part of the name MUST be "{ + + + Component Object definition and reference. + + + + + + + + + + + + + + + + + + + Component Parameter definition and reference. + + + + + + + Component reference. @@ -1130,12 +1192,12 @@ Specify "prefix" to prefix to the previous description, "append" to append to th - DescriptionTemplate: free text with a length up to 256 characters, which can be added in multiple descriptions and MAY contain a limited amount of mediawiki-like markup as + DescriptionTemplate: free text with a length up to 256 characters, which can be added in multiple descriptions and MAY contain a limited amount of mediawiki-like markup as specified in A.2.2 (same restrictions as tns:Description type - + @@ -1145,7 +1207,7 @@ specified in A.2.2 (same restrictions as tns:Description type - + @@ -1166,7 +1228,7 @@ specified in A.2.2 (same restrictions as tns:Description type Specifies the point in the naming hierarchy relative to which targetParam applies (A.2.3.4). - + Specifies the value that indicates that none of the values of the referenced parameter currently apply. @@ -1197,11 +1259,7 @@ specified in A.2.2 (same restrictions as tns:Description type - - - If true, the parameter MUST be present in the event. - - + @@ -1451,18 +1509,7 @@ MUST be present if and only if defining a new event. - - - - - MUST be specified for a table in which the Controller can create entries and which has one or more uniqueKey elements that define functional keys. - - - - - MUST be specified for a table with a variable number of entries, i.e. for which maxEntries is greater than minEntries ("unbounded" is regarded as being greater than all values). - - + @@ -1740,7 +1787,7 @@ MUST be present if and only if defining a new profile. - + diff --git a/schemas/cwmp-datamodel-report.xsd b/schemas/cwmp-datamodel-report.xsd index 302e34c..cb3c0c6 100644 --- a/schemas/cwmp-datamodel-report.xsd +++ b/schemas/cwmp-datamodel-report.xsd @@ -2,25 +2,25 @@ @@ -64,9 +66,11 @@ ]> - - + Object path that can contain "{i}" placeholders and that can therefore references multiple objects. diff --git a/schemas/cwmp-devicetype-1.xsd b/schemas/cwmp-devicetype-1.xsd index 586ea24..9ef805b 100644 --- a/schemas/cwmp-devicetype-1.xsd +++ b/schemas/cwmp-devicetype-1.xsd @@ -1,26 +1,26 @@ - + @@ -88,7 +91,7 @@ Parameter active notify support (based on dm:activeNotify). - + @@ -97,7 +100,7 @@ Nested list escaping support (based on dm:ListNesting). - + No information (for DM="permitted", Controller can't infer support). @@ -119,7 +122,7 @@ Object access (based on dm:ProfileObjectAccess). - + @@ -318,7 +321,7 @@ - + @@ -405,6 +408,8 @@ + + @@ -436,6 +441,103 @@ + + + Event support details. + + + + + + + + + + + + + + + + Event object details. + + + + + + + + + + + + + + Event parameter details. + + + + + + + + + + + + Command support details. + + + + + + + + + + + + + + Command argument details. + + + + + + + + + + + + + + + Command argument object details. + + + + + + + + + + + + + + Command argument parameter details. + + + + + + + + + Path name reference facet. diff --git a/schemas/makefile b/schemas/makefile deleted file mode 100644 index 1ff4977..0000000 --- a/schemas/makefile +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2017, Broadband Forum -# -# Redistribution and use in source and binary forms, with or -# without modification, are permitted provided that the following -# conditions are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials -# provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The above license is used as a license under copyright only. -# Please reference the Forum IPR Policy for patent licensing terms -# . -# -# Any moral rights which are necessary to exercise under the above -# license grant are also deemed granted under this license. - -TOPDIR = .. - -include $(TOPDIR)/defs.mk - -INSTALLCWMP += catalog.xml - -include $(TOPDIR)/rules.mk diff --git a/specification/CNAME b/specification/CNAME new file mode 100644 index 0000000..78c4665 --- /dev/null +++ b/specification/CNAME @@ -0,0 +1 @@ +data-model-template.broadband-forum.org diff --git a/specification/images/figure-1.png b/specification/images/figure-1.png new file mode 100644 index 0000000000000000000000000000000000000000..52598e0c641b97811d3b338980e25d0812b64cf7 GIT binary patch literal 163812 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

fVg8k9z16)Lymyk35^L$P^V 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

KmCq4DP2 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%0AlAF6V}_Xc`=97vG+ivi)KKJAqy!^@ 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%0D}-bK^#Lv1_~K8SilnyJV+~u097o51GTj{m1guu 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

p3gGb;SdvBjMg9LCmm| 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%0AqcG`LvD*uMS3$@Vbl{>g`ay2`H)^eX>zS0VBg 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%0D5anbTvW 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 literal 0 HcmV?d00001 diff --git a/specification/images/figure-2.png b/specification/images/figure-2.png new file mode 100644 index 0000000000000000000000000000000000000000..06e1213acc7daa1b8b68ea4dca4a40f8116135c7 GIT binary patch literal 159144 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�tC>VRg$GVDAv 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
    S$zOiCrH-0F3`n|Mf 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 Uxip9GpWXLR$M9ao9lNOi18r7D82|tP literal 0 HcmV?d00001 diff --git a/specification/images/figure-3.png b/specification/images/figure-3.png new file mode 100644 index 0000000000000000000000000000000000000000..57887ed183a45f091c80217b16cdde8af226cf80 GIT binary patch literal 94356 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 literal 0 HcmV?d00001 diff --git a/specification/images/figure-4.png b/specification/images/figure-4.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc0f5ade9fdebbb85918bc133d70f1098a1044c GIT binary patch literal 272434 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 literal 0 HcmV?d00001 diff --git a/specification/index.html b/specification/index.html deleted file mode 100644 index 1a64669..0000000 --- a/specification/index.html +++ /dev/null @@ -1,2750 +0,0 @@ - - - - - - - WT-106 Amendment 9 - - - - -

    -

    WT-106 - Data Model Template for CWMP Endpoints and USP Agents

    -

    Issue: 1 Amendment 8

    -

    Issue Date: TBD 2018

    -

    Notice

    -

    The Broadband Forum is a non-profit corporation organized to create guidelines for broadband network system development and deployment. This has been approved by members of the Forum. This is subject to change. This is copyrighted by the Broadband Forum, and all rights are reserved. Portions of this may be copyrighted by Broadband Forum members.

    -

    Intellectual Property

    -

    Recipients of this are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of this , or use of any software code normatively referenced in this , and to provide supporting documentation.

    -

    Terms of Use

    -

    1. License

    -

    Broadband Forum hereby grants you the right, without charge, on a perpetual, non-exclusive and worldwide basis, to utilize the for the purpose of developing, making, having made, using, marketing, importing, offering to sell or license, and selling or licensing, and to otherwise distribute, products complying with the , in all cases subject to the conditions set forth in this notice and any relevant patent and other intellectual property rights of third parties (which may include members of Broadband Forum). This license grant does not include the right to sublicense, modify or create derivative works based upon the Technical Report except to the extent this Technical Report includes text implementable in computer code, in which case your right under this License to create and modify derivative works is limited to modifying and creating derivative works of such code. For the avoidance of doubt, except as qualified by the preceding sentence, products implementing this Technical Report are not deemed to be derivative works of the Technical Report.

    -

    2. NO WARRANTIES

    -

    THIS Technical Report IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS Technical Report SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE BROADBAND FORUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS Technical Report.

    -

    3. THIRD PARTY RIGHTS Without limiting the generality of Section 2 above, BROADBAND FORUM ASSUMES NO RESPONSIBILITY TO COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY THIRD PARTY ASSERTIONS OF PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS THAT MIGHT NOW OR IN THE FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE Technical Report IN ITS CURRENT, OR IN ANY FUTURE FORM. IF ANY SUCH RIGHTS ARE DESCRIBED ON THE Technical Report, BROADBAND FORUM TAKES NO POSITION AS TO THE VALIDITY OR INVALIDITY OF SUCH ASSERTIONS, OR THAT ALL SUCH ASSERTIONS THAT HAVE OR MAY BE MADE ARE SO LISTED.

    -

    The text of this notice must be included in all copies of this Technical Report.

    -


    -

    -

    Revision History

    - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Issue NumberApproval DatePublication DateIssue EditorChanges
    Issue 1September 2005Jeff Bernstein, 2Wire Christele Bouchat, Alcatel Tim Spets, WestellOriginal
    Issue 1 Amendment 1November 2006Jeff Bernstein, 2Wire John Blackford, 2Wire Mike Digdon, SupportSoft Heather Kirksey, Motive William Lupton, 2Wire Anton Okmianski, CiscoClarification of original document
    Issue 1 Amendment 2November 2008William Lupton, 2Wire Håkan Westin, TilginAddition of data model definition XML Schema and normative XML common object and component definitions
    Issue 1 Amendment 3September 2009William Lupton, 2Wire Håkan Westin, TilginAddition of device type XML Schema
    Issue 1 Amendment 4February 2010William Lupton, 2Wire Paul Sigurdson, Broadband ForumMoved data model definitions to TR-181 Issue 1
    Issue 1 Amendment 5November 2010Paul Sigurdson, Broadband ForumReplaced definitions of named data types such as IPAddress with references to normative XML. Minor changes to DM Schema (v1.3) and DT Schema (v1.1).
    Issue 1 Amendment 6July 2011Sarah Banks, Cisco Andrea Colmegna, FASTWEB Tim Spets, Motorola MobilityRemoved definition of proxying, now defined in TR-069. Removed Common objects. Alias Parameter Requirements added.
    -

    Comments or questions about this Broadband Forum should be directed to .

    -

    Editors

    -

    William Lupton, Broadband Forum

    -

    Jean-Didier Ott, Orange

    -

    Broadband User Services Work Area Directors

    -

    Jason Walls, QA Cafe

    -

    John Blackford, Arris

    -

    Executive Summary

    -

    TR-106 specifies data model guidelines to be followed by all CWMP 2 Endpoints and USP 13 Agents. These guidelines include structural requirements for the data hierarchy, requirements for versioning of data models, and requirements for defining profiles.

    -

    In addition, TR-106 defines an XML Schema that as far as possible embodies these guidelines, and which is used for defining all CWMP and USP data models. This makes data model definitions rigorous, and helps to reduce the danger that different implementations will interpret data model definitions in different ways.

    -

    TR-106 also defines an XML Schema that allows a device to describe its supported CWMP data models. This description is both specific and detailed, allowing a Controller to know exactly what is supported by the device, including any vendor-specific objects and parameters. Use of this Schema enhances interoperability and significantly eases the integration of new devices with a Controller. USP uses a different mechanism (GetSupportedDM message) for the same purpose. That mechanism is specified in TR-369 13.

    -

    Important warning

    -

    The InternetGatewayDevice:1 (TR-098) and Device:1 (TR-181 Issue 1) Root Data Models are now DEPRECATED and any reference to elements specific to those models have been removed from this document.

    -

    The last revision of TR-106 to be used with those models is TR-106 Amendment 7.

    -

    TR-157 data models Components have been incorporated into Device:2.12. TR-157 is therefore also DEPRECATED.

    -

    1 Introduction

    -

    CWMP

    -

    TR-069 defines the generic requirements of the CPE WAN Manage­ment Protocol (CWMP) methods which can be applied to any CWMP Endpoint. It is intended to support a variety of different functionalities to manage a collection of CPE, including the following primary capabilities:

    -
      -
    • Auto-configuration and dynamic service provisioning

    • -
    • Software/firmware image management

    • -
    • Status and performance monitoring

    • -
    • Diagnostics

    • -
    -

    The ability to manage the home network remotely has a number of benefits including reducing the costs associated with activation and support of broadband services, improving time-to-market for new products and services, and improving the user experience.

    -

    The following figure places TR-069 in the end-to-end management architecture:

    -

    -

    Figure 1 - CWMP Positioning in the End-to-End Architecture

    -

    The ACS is a server that resides in the network and manages devices in the subscriber premises. It uses the methods, or RPCs, defined in TR-069 to get and set the state of the device, initiate diagnostic tests, download and upload files, and manage events. Some portions of this state are common across managed devices and some are relevant only to certain device types or services.

    -

    USP

    -

    The User Services Platform is made of a network of USP Controllers and USP Agents to allow applications to manipulate service elements (i.e. objects). It represents the evolution of CWMP into the following use cases:

    -
      -
    • Improvements on TR-069 based on deployment experience

    • -
    • Multi-tenant management of a given endpoint (that is, manipulation by multiple controllers)

    • -
    • Application to additional market spaces, including consumer electronics and the Internet of Things

    • -
    -

    An agent exposes service elements to one or more controllers, either directly or by proxy. An application could use a Controller to manage a provider controlled system, as in a CWMP ACS, or to act as a user portal in the cloud, on a gateway, or accessed through a smart phone. Agents and controllers can also be used in tandem to create a peer-to-peer network of smart applications, such as an automated smart home.

    -

    -

    Figure 2 - USP Architecture Overview

    -

    USP was designed in a modular manner, and can make use of the CWMP data model and data model schema in order to represent an evolution of CWMP into the world of consumer electronics, virtual services, and the Internet of Things. As such, this document describes how to use the data model schema in both the context of CWMP and USP.

    -

    Specification Structure

    -

    Figure 3 shows the overall specification structure for the CWMP 2 and USP 13 family of standards (as currently defined). Please note that this will gradually become out of date as new documents are published.

    -

    -

    Figure 3 - Specification Structure

    -

    TR-069 2 defines the generic requirements of the CWMP methods which can be applied to any CWMP Endpoint. TR-369 13 does the same for USP Agents. TR-106 (this document) specifies a baseline object structure to be supported by any CWMP Endpoint or USP Agent (referred to generically as an Agent). It specifies how to structure and define data models, which are collections of objects and parameters on which the generic methods act to configure, diagnose, and monitor the state of specific devices and services. The actual data models are defined in their own specifications.

    -

    For a particular type of device, it is expected that the baseline defined in a document such as TR-181i2 10 would be augmented with additional objects and parameters specific to the device type. The data model used in any Agent MUST follow the guidelines described in this document. These guidelines include the following aspects:

    -
      -
    • Structural requirements for the data hierarchy

    • -
    • Requirements for versioning of data models

    • -
    • Requirements for defining profiles

    • -
    -

    In addition, this document defines two XML Schemas:

    -
      -
    • An XML Schema that as far as possible embodies these guidelines, and which is used for defining all CWMP and USP data models. This makes data model definitions rigorous, and helps to reduce the danger that different implementations will interpret data model definitions in different ways.

    • -
    • An XML Schema that allows a device to describe its supported CWMP data models. This description is both specific and detailed, allowing an ACS to know exactly what is supported by the CPE, including any vendor-specific objects and parameters. Use of this Schema enhances interoperability and significantly eases the integration of new devices with an ACS.

      -

      Please note that USP uses a different mechanism (GetSupportedDM message) for the same purpose. It is specified in TR-369 13.

    • -
    -

    1.1 Terminology

    -

    The following terminology is used throughout this Technical Report.

    -

    ACS Auto-Configuration Server. This is a component in the broadband network responsible for CWMP auto-configuration of the CPE for advanced services.

    -

    Agent A generic term that refers (as appropriate) to either a CWMP Endpoint or to a USP Agent.

    -

    BBF The Broadband Forum.

    -

    Base Supported Data Model The Data Model that is supported by all CPE of a given make, model and firmware version. This refers to the Objects, Parameters, Commands and/or Events that have code support in the current firmware.

    -

    CPE Customer Premises Equipment; refers (as appropriate) to any CWMP-enabled 2 or USP-enabled 13 device and therefore covers both Internet Gateway devices and LAN-side end devices.

    -

    Command A named element allowing a USP Controller to execute an operation on a USP Agent. This concept does not apply to CWMP, which uses Objects and/or Parameters to simulate operations.

    -

    Component A named collection of Objects, Parameters, Commands, Events and/or Profiles that can be included anywhere within a Data Model.

    -

    Controller A generic term that refers (as appropriate) to either a CWMP ACS or a USP Controller.

    -

    Current Supported Data Model The Data Model that is currently supported by an individual CPE, i.e. the Base Supp­ort­ed Data Model plus any additional Objects, Parameters, Commands and/or Events supported by extra mod­ules that have been installed on the CPE. This refers to the Objects, Parameters, Commands and/or Events that have code support in the CPE.

    -

    CWMP CPE WAN Management Protocol. Defined in TR-069 2, CWMP is a communication protocol between an ACS and CWMP-enabled CPE that defines a mechanism for secure auto-configuration of a CPE and other CPE management functions in a common framework.

    -

    CWMP Endpoint A CWMP termination point used by a CWMP-enabled CPE for communication with the ACS.

    -

    Data Model A hierarchical set of Objects, Parameters, Commands and/or Events that define the managed Objects access­ible via a particular Agent.

    -

    Device Used here as a synonym for CPE.

    -

    DM Instance Data Model Schema instance document. This is an XML document that conforms to the DM Schema and to any additional rules specified in or referenced by the DM Schema.

    -

    DM Schema Data Model Schema. This is the XML Schema 9 that is used for defining data models for use with CWMP and USP.

    -

    DT Instance Device Type Schema instance document. This is an XML document that conforms to the DT Schema and to any additional rules specified in or referenced by the DT Schema. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).

    -

    DT Schema Device Type Schema. This is the XML Schema 9 that is used for describing a Device’s Supported Data Model. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section 2.1.2).

    -

    Event An indication that something of interest has happened that requires the Agent to notify the Controller.

    -

    Instantiated Data Model The Data Model that currently exists on an individual CPE. This refers to the Object instances, Para­met­ers, Commands and/or Events that currently exist within the data model. It can be thought of as the Current Supported Data Model with all the “{i}” placeholders expanded to be the actual Instance Numbers. For example, “Device.Services.ABCService.{i}.” in the Current Supported Data Model might correspond to “Device.Services.ABCService.1.” and “Device.­Services.­ABC­Serv­ice.­2.” in the Instantiated Data Model.

    -

    Instance Alias A writeable string that uniquely identifies an instance within a Multi-Instance Object

    -

    Instance Identifier A value that uniquely identifies an instance within a Multi-Instance Object. It is either an Instance Number or an Instance Alias.

    -

    Instance Number A read-only positive integer (>=1) that uniquely identifies an instance within a Multi-Instance Object.

    -

    Mountable Object An Object that is defined in a DM Instance as a direct child of the Root Object, but that can also exist as a child of a Mount Point in the Instantiated Data Model of a USP Agent. This concept does not apply to CWMP.

    -

    Mount Point An Object that is defined in a DM Instance as being able to have Mountable Objects as children in the Instantiated Data Model of a USP Agent. By extension, one of the instances of that object in the Instantiated Data Model. This concept does not apply to CWMP.

    -

    Multi-Instance Object An Object that can have multiple instances, all of which are located at the same level within the name hierarchy. Each instance is identified by an Instance Identifier.

    -

    Object An internal node in the name hierarchy, i.e., a node that can have Object, Parameter, Command and/or Event children. An Object name is a Path Name.

    -

    Parameter A name-value pair that represents part of a CPE or USP Agent’s configuration or status. A Parameter name is a Path Name.

    -

    Path Name A name that has a hierarchical structure similar to files in a directory, with each level separated by a “.” (dot). References an Object, Parameter, Command or Event.

    -

    Profile A named collection of requirements relating to a given Root Object, Service Object or Component.

    -

    RPC Remote Procedure Call.

    -

    Root Object The top-level Object of a CPE’s Data Model that contains all of the manageable Objects. The name of the Root Object is “Device.”.

    -

    Service Element A Service Element represents a piece of service functionality that is exposed by an Agent, usually represented by one or more Objects.

    -

    Service Object The top-most Object associated with a specific service within which all Objects, Parameters, Commands and Events associated with the service are contained.

    -

    Supported Data Model Refers to either Base Supported Data Model or Current Supported Data Model, depending on the context.

    -

    URI Uniform Resource Identifier.

    -

    URL Uniform Resource Locator.

    -

    USP Universal Service Platform. Defined in TR-369, USP is an evolution of CWMP that allows applications to manipulate Service Elements in a network of Controllers and Agents.

    -

    USP Agent A USP Agent is a USP Endpoint that exposes Service Elements to one or more USP Controllers.

    -

    USP Controller A USP Controller is a USP Endpoint that manipulates Service Elements through one or more USP Agents.

    -

    USP Endpoint A USP Endpoint is a termination point for a USP message.

    -

    1.2 Document Conventions

    -

    The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in 1.

    -

    2 Architecture

    -

    All elements described hereunder apply to both CWMP and USP, unless specifically mentioned otherwise.

    -

    2.1 Data Hierarchy

    -

    The data model for a Agent will follow a common set of structural requirements. The detailed structure depends on the nature of the Agent.

    -

    An Agent’s data model will always have a single Root Object, which will be called “Device.”.

    -

    The Root Object contains three types of sub-elements: the Objects defined in TR-181i2 10, Components defined in TR-181i2 or other specifications such as TR-143 8, and a single “Services” object that contains all Service Objects associated with specific services.

    -

    A single Agent might include more than one Service Object. For example, a device that serves both as a VoIP endpoint and a game device, might include both VoIP-specific and game-specific Service Objects.

    -

    A single Agent might also include more than one instance of the same type of Service Object. An example of when this might be appropriate is an Agent that provides an instance of the TR-140 12 StorageService for each of the device’s attached disks.

    -

    2.1.1 Data Hierarchy Requirements

    -

    A CWMP or USP data model MUST adhere to the following structural requirements:

    -
      -
    1. A root data model definition MUST contain exactly one Root Object, called “Device.”.

    2. -
    3. A Root Object definition MUST contain exactly one “Services.” object.

    4. -
    5. A service data model definition MUST define an object hierarchy that starts just under the “Device.Services.” object.

    6. -
    7. For each Multi-Instance Object defined, a data model MUST also define a corresponding parameter indicating the number of instances of the Multi-Instance Object. The name of this parameter MUST be the name of the object concatenated with “NumberOfEntries”. This parameter MUST appear in the same object as the Multi-Instance Object it is related to.

    8. -
    -

    Formally, the top level of the data hierarchy is defined as follows:

    -
    Element = "Device"
    -        | "Device." TR-181DeviceObject
    -        | "Device.Services." ServiceObject "NumberOfEntries"
    -        | "Device.Services." ServiceObject ".{i}"
    -
    -TR-181DeviceObject = // As defined in TR-181i2 10, e.g. "UserInterface" or "ManagementServer"
    -
    -ServiceObject = // As defined in other specs, e.g. TR-140 12
    -

    2.1.2 The Supported Data Model and the Instantiated Data Model

    -

    There is a distinction between an Agent’s Supported Data Model and its Instantiated Data Model.

    -
      -
    • The Supported Data Model is those Objects and/or Parameters that have code support in the Agent.

    • -
    • The Instantiated Data Model is those Object instances and/or Parameters that currently exist.

    • -
    -

    TR-181i2 10 defines a SupportedDataModel Object that allows an Agent to indicate its Supported Data Model to a Controller, which assists the Controller in managing that device.

    -

    The Supported­Data­Model object has the following properties:

    -
      -
    1. It contains a list of URLs, each of which allows the Controller to determine details of part of the Supported Data Model.

    2. -
    3. When the Supported Data Model changes, e.g. because software is loaded or unloaded, entries are added to or removed from this list of URLs.

    4. -
    -

    This object is not used with USP. TR-369 13 defines the GetSupportedDM message to provide this information.

    -

    2.2 Object Versioning

    -

    To allow the definition of a Service Object or Root Object to change over time, the definition of a Service Object or Root Object MUST have an explicitly specified version.

    -

    Version numbering of Service Objects and Root Objects is defined to use a major/minor version numbering convention. The object version is defined as a pair of integers, where one integer represents the major version, and the second integer represents the minor version. The version MUST be written with the two integers separated by a dot (Major.Minor).

    -

    The first version of a given object SHOULD be defined as version “1.0”.

    -

    For each subsequent version of the object, if the later version is compatible with the previous version, then the major version SHOULD remain unchanged, and the minor version SHOULD be incremented by one. For example, the next compatible version after “2.17” would be “2.18”. The requirements for a version to be considered compatible with an earlier version are described in Section 2.2.1.

    -

    For each subsequent version of the object, if the later version is not compatible with the previous version, then the major version MUST increment by one, and the minor version MAY reset back to zero. For example, the next incompatible version after “2.17” might be “3.0”.

    -

    2.2.1 Requirements for Compatible Versions

    -

    For one version of an object to be considered compatible with another version, the later version MUST be a strict superset of the earlier version. Using major/minor versioning, this requirement applies only between minor versions that share the same major version.

    -

    More specifically, this requires the following of the later version with respect to all earlier versions to which it is to be compatible:

    -
      -
    • The later version MAY add objects and parameters not previously in any earlier version, but MUST NOT remove objects or parameters already defined in earlier versions.

    • -
    • The later version MUST NOT modify the definition of any parameter or object already defined in an earlier version (unless the original definition was clearly in error and has to be modified as an erratum or clarified through a corrigendum process).

    • -
    • The later version MUST NOT require any of the objects or parameters that have been added since the earliest compatible version to be explicitly operated upon by the Controller to ensure proper operation of the device (except those functions specifically associated with functionality added in later versions). That is, the later version will accommodate a Controller that knows nothing of elements added in later versions.

    • -
    -

    The goal of the above definition of compatibility is intended to ensure bi-directional compatibility between a Controller and Agent. Specifically that:

    -
      -
    • If a Controller supports only an earlier version of an object as compared to the version supported by the Agent, the Controller can successfully manage that object in the Agent as if it were the earlier version.

    • -
    • If an Agent supports only an earlier version of an object as compared to the version supported by a Controller, the Controller can successfully manage that object in the Agent as if it were the later version (without support for new components defined only in later versions).

    • -
    -

    2.2.2 Version Notation

    -

    For objects, the following notation is defined to identify specific versions:

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - -
    NotationDescriptionExample
    ObjectName:Major.MinorRefers to a specific version of the object.Device:2.0
    ObjectName:MajorRefers to any minor version of the object with the specified major version.Device:2
    ObjectNameRefers to any version of the object.Device
    -

    Note that the version notation defined here is only to be used for purposes of documentation. The actual names of objects and parameters in the data model MUST NOT include version numbers.

    -

    2.3 Profiles

    -

    Note: Originally, profiles were seen as a means of limiting the variability that a Controller needs to accommodate among various devices that it might manage. This feature is now provided:

    -
      -
    • For CWMP, by the TR-181i2 10 SupportedDataModel object (see Section 2.1.2) and associated Device Type XML documents (DT Instances).

    • -
    • For USP, by the TR-369 13 GetSupportedDM message.

    • -
    -

    A profile is a named collection of requirements associated with a given object. An Agent can adhere to zero or more profiles. Adherence to a profile means that the Agent supports all of the requirements defined by that profile. The use of profiles gives Service Providers a shorthand means of specifying data model support requirements.

    -

    The following sections define the conventions to be used when defining profiles associated with Data Models.

    -

    2.3.1 Scope of Profiles

    -

    A given profile is defined only in the context of a specific Service Object or Root Object with a specific major version. For each profile definition, the specific object name and major version to which the profile is to apply MUST be explicitly identified.

    -

    A profile’s name MUST be unique among profiles defined for the same object and major version, but a name MAY be reused to define a different profile for a distinct combination of object name and major version. For example, if we define profile “A” associated with object “X:2” (major version 2 of object X), the same name “A” might be used to define a different profile for object “Y:1” or for object “X:3”.

    -

    A given profile is defined in association with a minimum minor version of a given object. The minimum REQUIRED version of an object is the minimum version that includes all of the REQUIRED elements defined by the profile. For each profile definition, the specific minimum version MUST be explicitly identified.

    -

    2.3.2 Multiple Profile Support

    -

    For a given type of Service Object or Root Object, multiple profiles MAY be defined. Profiles MAY be defined that have either independent or overlapping requirements.

    -

    2.3.3 Profile Versions

    -

    To allow the definition of a profile to change over time, the definition of every profile MUST have an associated version number.

    -

    Version numbering of profiles is defined to use a minor-only version numbering convention. That is, for a given profile name, each successive version MUST be compatible with all earlier versions. Any incompatible change to a profile MUST use a different profile name.

    -

    For one version of a profile to be considered compatible with another version, the later version MUST be a strict superset of the earlier version. This requires the following of the later version with respect to all earlier versions to which it is to be compatible:

    -
      -
    • The later version MAY add requirements that were not in earlier versions of the profile, but MUST NOT remove requirements.

    • -
    • The later version MAY remove one or more conditions that had previously been placed on a requirement. For example, if a previous profile REQUIRED X only if condition A was True, then the later profile might require X unconditionally.

    • -
    -

    For profiles, the following notation is defined to identify specific versions:

    - ----- - - - - - - - - - - - - - - - - - - - -
    NotationDescriptionExample
    ProfileName:VersionRefers to a specific version of the profile.Baseline:1
    ProfileNameRefers to any version of the profile.Baseline
    -

    ProfileName MUST start with a letter or underscore, and subsequent characters MUST be letters, digits, underscores or hyphens. The terms “letter” and “digit” are as defined in Appendix B of the XML specification 6.

    -

    Hyphens can easily be confused with the discretionary hyphens that are sometimes inserted by hyphenation algorithms. For this reason, ProfileName SHOULD NOT include any hyphens. Additionally, ProfileName SHOULD NOT start with an underscore. In BBF standards, ProfileName will always start with an upper-case letter and will never include any hyphens or underscores (see C.3.1 for the corresponding normative requirement).

    -

    2.3.4 Baseline Profiles

    -

    For every Service Object (and Root Object) there SHOULD be at least one profile defined. In many cases it is desirable to define a Baseline profile that indicates the minimum requirements REQUIRED for any device that supports that Object.

    -

    2.3.5 Types of Requirements in a Profile

    -

    Because a profile is defined within the context of a single Object (and major version), all of the requirements associated with the profile MUST be specific to the data model associated with that object.

    -

    Profile requirements can include any of the following types of requirements associated with an Object’s data model:

    -
      -
    • A requirement for read support of a Parameter.

    • -
    • A requirement for write support of a Parameter.

    • -
    • A requirement for support of a Command.

    • -
    • A requirement for support of a sub-Object contained within the overall Object.

    • -
    • A requirement for the ability to add or remove instances of a sub-Object.

    • -
    • A requirement to support active notification for a Parameter.

    • -
    • A requirement to support access control for a given Parameter.

    • -
    -

    For each of the requirement categories listed above, a profile can define the requirement unconditionally, or can place one or more conditions on the requirement. For example, a profile might require that a Parameter be supported for reading only if the device supports some other Parameter or Object (one that is not itself REQUIRED by the profile). Such conditions will be directly related to the data model of the overall object associated with the profile.

    -

    Because a device has to be able to support multiple profiles, all profiles MUST be defined such that they are non-contradictory. As a result, profiles MUST only define minimum requirements to be met, and MUST NOT specify negative requirements. That is, profiles will not include requirements that specify something that is not to be supported by the device, or requirements that exclude a range of values.

    -

    2.4 DEPRECATED and OBSOLETED Items

    -

    The key word “DEPRECATED” in a data model definition is to be interpreted as follows: This term refers to an object, parameter or parameter value that is defined in the current version of the standard but is meaningless, inappropriate, or otherwise unnecessary. It is intended that such objects, parameters or parameter values will be removed from the next major version of the data model. Requirements on how to interpret or implement deprecated objects, parameters or parameter values are given below. For more information on how to interpret or implement specific deprecated objects, parameters or parameter values, refer to the definition of the object or parameter.

    -

    The key word “OBSOLETED” in a data model definition is to be interpreted as follows: This term refers to an object, parameter or parameter value that meets the requirements for being deprecated, and in addition is obsolete. Such objects, parameters or parameter values can be removed from a later minor version of a data model, or from a later version of a profile, without this being regarded as breaking backwards compatibility rules. Requirements on how to interpret or implement obsoleted objects, parameters or parameter values are given below. For more information on how to interpret or implement specific obsoleted objects, parameters or parameter values, refer to the definition of the object or parameter.

    -

    2.4.1 Requirements for DEPRECATED Items

    -

    This section defines requirements that apply to all DEPRECATED objects, parameters and parameter values unless specifically overridden by the object or parameter definition.

    -

    Data model requirements:

    -
      -
    1. The definition of a DEPRECATED parameter, object or parameter value MUST include an explanation of why the item is deprecated.

    2. -
    3. The definition of a DEPRECATED parameter, object or parameter value MAY specify further requirements relating to the item; such requirements MAY override general Agent or Controller requirements regarding DEPRECATED elements specified in TR-069 2 or TR-369

      -
        -
      1. -
    4. -
    -

    Agent requirements:

    -
      -
    1. A DEPRECATED parameter MUST have a value which is valid for its data type and fulfils any range (for numeric parameters), length (for string, base64 or hexBinary parameters) and enumerated value (for string parameters) requirements.

    2. -
    3. Detailed behavioral requirements for a DEPRECATED parameter, e.g. that its value is a unique key, MAY be ignored by the Agent.

    4. -
    5. The Agent MUST, if such operations are permitted by the data model definition, permit creation of DEPRECATED objects, modification of DEPRECATED parameters, and setting of DEPRECATED parameter values. However, it MAY choose not to apply such changes to its operational state.

    6. -
    7. Regardless of whether DEPRECATED changes are applied to the Agent’s operational state, a read of a DEPRECATED writable parameter SHOULD return the value that was last written, i.e. the Agent is expected to store the value even if it chooses not to apply it to its operational state.

    8. -
    9. The Agent MAY reject an attempt by a Controller to set any parameter to a DEPRECATED value.

    10. -
    -

    Controller requirements:

    -
      -
    1. The Controller SHOULD NOT create DEPRECATED objects, modify DEPRECATED parameters, or set DEPRECATED parameter values.

    2. -
    3. The Controller SHOULD ignore DEPRECATED objects, parameters and parameter values.

    4. -
    5. The Controller SHOULD NOT set a DEPRECATED parameter to a value that is invalid for its data type or fails to fulfill any range (for numeric parameters), length (for string, base64 or hexBinary parameters) or enumerated value (for string parameters) requirements.

    6. -
    7. The Controller SHOULD NOT set any parameter to a DEPRECATED value.

    8. -
    -

    2.4.2 Requirements for OBSOLETED Items

    -

    This section defines requirements that apply to all OBSOLETED objects, parameters or parameter values unless specifically overridden by the object or parameter definition.

    -

    An OBSOLETED object, parameter or parameter value MUST meet all the requirements of the previous section. In addition, the following requirements apply.

    -
      -
    1. An OBSOLETED object, parameter or parameter value MAY be removed from a later minor version of a data model without this being regarded as breaking backwards compatibility rules.

    2. -
    3. An OBSOLETED object, parameter or parameter value MUST NOT be removed from the current version of a profile, but MAY be removed from a later version of a profile without this being regarded as breaking backwards compatibility rules.

    4. -
    5. A data model definition MUST include a list of those OBSOLETED objects, parameters or parameter values that have been removed from the data model or from its profiles. This is to prevent future namespace conflicts.

    6. -
    -

    3 Object Definitions

    -

    3.1 General Notation

    -

    Parameter names use a hierarchical form similar to a directory tree. The name of a particular Parameter is represented by the concatenation of each successive node in the hierarchy separated with a “.” (dot), starting at the trunk of the hierarchy and leading to the leaves. When specifying a partial path, indicating an intermediate node in the hierarchy, the trailing “.” (dot) is always used as the last character.

    -

    Parameter names MUST be treated as case sensitive. The name of each node in the hierarchy MUST start with a letter or underscore, and subsequent characters MUST be letters, digits, underscores or hyphens. The terms “letter” and “digit” are as defined in Appendix B of the XML specification 6.

    -

    Hyphens can easily be confused with the discretionary hyphens that are sometimes inserted by hyphenation algorithms. For this reason, the names of nodes in the hierarchy SHOULD NOT include any hyphens. Additionally, the names of nodes in the hierarchy SHOULD NOT start with underscores. In BBF standards, the names of nodes in the hierarchy always start with an upper-case letter and never include any hyphens or underscores (see C.3.1 for the corresponding normative requirement).

    -

    Where multiple instances of an object can occur, the placeholder node name {i} is shown. In actual use, this placeholder is to be replaced by an Instance Identifier.

    -

    3.2 Data Types and Representation

    -

    Parameters make use of a limited subset of the default SOAP data types. The supported data types are defined by the DM Schema and are also listed in A.2.3.

    -

    The named data types that specify the representations of IP addresses, MAC addresses etc, are defined in a DM Instance document (see Annex A). The XML file with those definitions and the corresponding HTML file can be found in the data model resources page. Note that this DM Instance defines named data types that are expected to be used in several data model definitions; it is possible to define local named data types in any DM Instance document.

    -

    The following sub-sections specify additional rules governing parameter value representation within XML documents.

    -

    3.2.1 Date and Time Rules

    -

    All times MUST be expressed in UTC (Universal Coordinated Time) unless explicitly stated otherwise in the definition of a parameter of this type.

    -

    If absolute time is not available to the Agent, it SHOULD instead indicate the relative time since boot, where the boot time is assumed to be the beginning of the first day of January of year 1, or 0001 01 01T00:00:00. For example, 2 days, 3 hours, 4 minutes and 5 seconds since boot would be expressed as 0001 01 03T03:04:05. Relative time since boot MUST be expressed using an untimezoned representation. Any untimezoned value with a year value less than 1000 MUST be interpreted as a relative time since boot.

    -

    If the time is unknown or not applicable, the following value representing “Unknown Time” MUST be used: 0001-01-01T00:00:00Z. For an infinite timeline, the following value representing “Infinite Time” MUST be used: 9999-12-31T23:59:59Z.

    -

    Any dateTime value other than one expressing relative time since boot (as described above) MUST use UTC timezoned representation (that is, it MUST include a timezone suffix of “Z”, “-00:00” or “+00:00”).

    -

    3.2.2 Comma-separated Lists

    -

    For strings that are defined to contain comma-separated lists, the format is defined as follows. Between every pair of successive items in a comma-separated list there MUST be a separator. The separator MUST include exactly one comma character, and MAY also include one or more whitespace characters before or after the comma. The entire separator, including any whitespace characters, MUST NOT be considered part of the list items it separates. The last item in a comma-separated list MUST NOT be followed with a separator. Individual items in a comma-separated list MUST NOT include a whitespace or comma character within them. Any whitespace or comma characters within an item value MUST be escaped using percent-encoding as specified in Section 2.1/RFC 3986 5.

    -

    It is possible to create a list of lists, although other solutions SHOULD be preferred when possible. If a string contains a list of lists, the rules of the previous paragraph imply that the comma separators of the inner list will be percent encoded. For example, a three element list with elements “a”, “b,c” (a two element list) and “d” could be represented as “a,b%2Cc,d”. In order to avoid the need to percent encode the inner separators, inner lists MAY be “protected” by placing them within square brackets, e.g. the above list could be represented as “a,[b,c],d”. In order to avoid ambiguity (a Controller that didn’t understand the new syntax would interpret “a,[b,c],d” as the four element list “a”, “[b”, “c]”, “d”), the data type and/or parameter definition MUST explicitly state that the new syntax is supported (A.2.3.1, A.2.7.1).

    -

    3.2.3 Parameters that Reference Parameters or Objects

    -

    For string parameters that are defined to contain the hierarchical Path Name of an object (or for each item in parameters that are defined to contain comma-separated lists of object Path Names), the representation of the object name MUST NOT include a trailing “dot.” An example of a parameter of this kind in the TR- 181i2 10 Device:2 data model is ­Device.InterfaceStack.{i}.LowerLayer. For this parameter, the following is an example of a properly formed value:

    -

    Device.Ethernet.Interface.1

    -

    Path Names in parameter values MUST always be full Path Names. For CWMP there is an exception such that a path that begins with a dot is relative to the Root or Service Object. For example, in the Device Root Object, a parameter value of “.DeviceInfo” always means “Device.DeviceInfo”. NOTE: This exception does NOT hold for USP.

    -

    In order to be able to use reference parameters as unique keys (A.2.10.1), their Path Names MUST conceptually be converted to full Path Names before being compared. For example, in the Device Root Object, “.DeviceInfo.” and “Device.DeviceInfo.” would compare as equal. If a reference parameter is list-valued, i.e. it is a list of Path Names or Instance Numbers, the parameter value MUST conceptually be regarded as a set when being compared, i.e. the comparison has to ignore the item order and any repeated items. For example, “1,2,1” and “2,1” would compare as equal because both reference instances 1 and 2.

    -

    References are defined as strong or weak in the data model. A strong reference always either references an existing parameter or object, or else is a null reference. On the other hand, a weak reference does not necessarily reference an existing parameter or object.

    -

    3.2.4 Units Conventions

    -

    For numeric parameters whose values are defined in terms of units, bit and byte-related units will always refer to powers of 2. For example, a kilobyte will always be 1024 bytes, a megabyte always 1024 * 1024 bytes, etc.

    -

    3.2.5 Default Maximum String Length

    -

    For string-valued parameters, a maximum length is either explicitly indicated or implied by the size of the elements composing the string. For strings in which the content is an enumeration, the longest enumerated value determines the maximum length. Similarly, for strings in which the content is a pattern, the longest possible matching value determines the maximum length. For strings in which the content is a list, the maximum number of items and the individual item lengths can help to determine the maximum string length.

    -

    3.3 Vendor-Specific Parameters and Objects

    -

    A vendor MAY extend the standardized parameter list with vendor-specific parameters and objects. Vendor-specific parameters and objects MAY be defined either in a separate naming hierarchy or within the standardized naming hierarchy.

    -

    The name of a vendor-specific parameter or object not contained within another vendor-specific object MUST have the form:

    -
    -

    X_<VENDOR>_VendorSpecificName

    -
    -

    In this definition <VENDOR> is a unique vendor identifier, which MAY be either an OUI or a domain name. The OUI or domain name used for a given vendor-specific parameter MUST be one that is assigned to the organization that defined this parameter (which is not necessarily the same as the vendor of the Agent). An OUI is an organizationally unique identifier as defined in 3, which MUST be formatted as a six-hexadecimal-digit string using all upper-case letters and including any leading zeros. A domain name MUST be upper case with each dot (“.”) replaced with a hyphen or underscore.

    -

    The VendorSpecificName MUST NOT contain a “.” (period) or a space character.

    -
    -

    Note – the use of the string “X_” to indicate a vendor-specific parameter implies that no standardized parameter can begin with “X_”.

    -
    -

    The name of a vendor-specific parameter or object that is contained within another vendor-specific object which itself begins with the prefix described above need not itself include the prefix.

    -

    The full Path Name of a vendor-specific parameter or object MUST NOT exceed 256 characters in length.

    -

    Below are some example vendor-specific parameter and object names:

    -
    Device.UserInterface.X_012345_AdBanner
    -
    -Device.X_EXAMPLE-COM_MyConfig.Status
    -

    When appropriate, a vendor MAY also extend the set of values of an enumeration. If this is done, the vendor-specified values MUST be in the form “X_<VENDOR>_VendorSpecificValue”. The total length of such a string MUST NOT exceed 31 characters.

    -

    4 Normative References

    -

    A list of the currently valid Broadband Forum Technical Reports is published at http://www.broadband-forum.org. The following documents are referenced by this specification.

    -
      -
    1. RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, IETF, 1997

    2. -
    3. TR-069 Amendment 6, CPE WAN Management Protocol, Broadband Forum, 2018

    4. -
    5. Organizationally Unique Identifiers (OUIs), IEEE

    6. -
    7. Simple Object Access Protocol (SOAP) 1.1, W3C, 2000

    8. -
    9. RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, IETF, 2005

    10. -
    11. Extensible Markup Language (XML) 1.0 (Fourth Edition), W3C, 2008

    12. -
    13. RFC 2648, A URN Namespace for IETF Documents, IETF, 1999

    14. -
    15. TR-143 Amendment 1 Corrigendum 1, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, 2015

    16. -
    17. XML Schema Part 0: Primer Second Edition, W3C, 2004

    18. -
    19. TR-181 Issue 2 Amendment 12, Device Data Model for TR-069, Broadband Forum, 2018

    20. -
    21. XML Schema Part 2: Datatypes Second Edition, W3C, 2004

    22. -
    23. TR-140 Amendment 3, TR-069 Data Model for Storage Service Enabled Devices, Broadband Forum, 2017

    24. -
    25. TR-369, User Services Platform, Broadband Forum, 2018

    26. -
    - -

    Annex A. CWMP Data Model Definition XML Schema

    -

    A.1 Introduction

    -

    The CWMP Data Model Definition XML Schema 9, or DM Schema, is used for defining CWMP 2 and USP 13 data models, and is specified in A.2.12.6.

    -

    DM Schema instance documents can contain any or all of the following:

    -
      -
    • Data type definitions

    • -
    • Root Object definitions (including profiles)

    • -
    • Service Object definitions (including profiles)

    • -
    • Component definitions

    • -
    • Vendor extension definitions

    • -
    -

    Annex C contains some additional normative requirements that apply only to BBF standard DM Schema instance documents.

    -

    Most of the data model elements are common to CWMP and USP. Those that are specific to either protocol will be noted in the description.

    -

    A.1.1 Character Encoding and Character Set

    -

    BBF standard DM Schema instance documents use UTF-8 encoding and their character set is restricted to printable ASCII characters. See C.2 for the corresponding normative requirements.

    -

    A.2 Normative Information

    -

    It is possible to create instance documents that conform to the DM Schema but nevertheless are not valid data model definitions. This is because it is not possible to specify all the normative data model definition requirements using the XML Schema language. Therefore, the schema contains additional requirements written using the usual normative language. Instance documents that conform to the DM Schema and meet these additional requirements are referred to as DM Instances.

    -

    For example, the definition of the parameter element includes the following additional requirements on the name and base attributes:

    -
    <xs:complexType name="ModelParameter">
    -  <xs:annotation>
    -    <xs:documentation>
    -    Parameter definition and
    -    reference.
    -    </xs:documentation>
    -  </xs:annotation>
    -
    -  ...
    -
    -  <xs:attribute name="name" type="tns:ParameterName">
    -    <xs:annotation>
    -      <xs:documentation>
    -      MUST be unique within the parent object
    -      (this is checked by schema validation).
    -
    -      MUST be present if and only if defining a new
    -      parameter.
    -      </xs:documentation>
    -    </xs:annotation>
    -  </xs:attribute>
    -
    -  <xs:attribute name="base" type="tns:ParameterName">
    -    <xs:annotation>
    -      <xs:documentation>
    -        MUST be present if and only if modifying an existing
    -        parameter.
    -      </xs:documentation>
    -    </xs:annotation>
    -  </xs:attribute>
    -
    -  ...
    -
    -</xs:complexType>
    -

    In some cases, a requirement that is in fact implied by the DM Schema is emphasized within the schema via the xs:documentation element (the uniqueness requirement on the name is an example of this).

    -

    In other cases, a schema-implied requirement is not highlighted. For example, the name and base attributes are of type tns:ParameterName:

    -
        <!DOCTYPE cwmp-datamodel [
    -      …
    -      <!ENTITY name "([\i-[:]][\c-[:\.]]*)">
    -      …
    -    ]>
    -      …
    -      <xs:simpleType name="ParameterName">
    -        <xs:annotation>
    -          <xs:documentation>Parameter name (maximum length 256); the same as xs:NCName except that periods are not permitted.  This name MUST in addition follow the vendor-specific parameter name requirements of Section 3.3.</xs:documentation>
    -        </xs:annotation>
    -        <xs:restriction base="xs:token">
    -          <xs:maxLength value="256"/>
    -          <xs:pattern value="&name;"/>
    -        </xs:restriction>
    -      </xs:simpleType>
    -

    This states that the parameter name is a string that follows the following rules:

    -
      -
    • It is derived from xs:token, which has a whitespace facet of “collapse”, meaning that any leading whitespace in the name will be ignored.

    • -
    • It has a maximum length of 256 characters.

    • -
    • Its first character matches the pattern “[\i-:]]”, which means “any character permitted as the first character of an XML name, except for a colon”, and any subsequent characters match the pattern “[\c-[:\.]]”, which means “any character permitted in an XML name, except for a colon and a dot”.

    • -
    • It follows the vendor-specific parameter name requirements of Section 3.3.

    • -
    -

    The question of the location of the definitive normative information therefore arises. The answer is as follows:

    -
      -
    • All the normative information in the main part of the document remains normative.

    • -
    • The DM Schema, and the additional requirements therein, are normative. Some of these additional requirements are duplicated (for emphasis) in this Annex.

    • -
    • The DM Schema references additional material in this Annex. Such material is normative.

    • -
    • If the DM Schema conflicts with a normative requirement in the main part of the document, this is an error in the DM Schema, and the requirement in the main part of the document takes precedence.

    • -
    -

    A.2.1 Importing DM Instances

    -

    DM Instances are imported using the top-level import element. The DM Schema specifies that the DM Instance is located via the file attribute.

    -

    The rules governing the file attribute’s value and its use for locating the DM Instance are as follows:

    -
      -
    • It MUST be a URL adhering to RFC 3986 5.

    • -
    • If the URL includes a scheme, it MUST be http, https or ftp.

    • -
    • If the URL includes an authority, it MUST NOT include credentials.

    • -
    • For standard BBF DM Instances, the rules that apply to the filename part (final path segment) of the A.2.1.1 BBFURL also apply to the filename part of this URL. This means that the corrigendum number can be omitted in order to refer to the latest corrigendum. See C.3.6 for the corresponding normative requirement.

    • -
    • If the URL is a relative reference, processing tools MUST apply their own logic, e.g. apply a search path.

    • -
    -

    A.2.1.1 URI Conventions

    -

    The top-level spec attribute contains the URI of the associated specification document, e.g. the BBF Technical Report.

    -

    This URI SHOULD uniquely identify the specification. More than one DM Schema instance document MAY reference the same specification.

    -

    The top-level file attribute contains the name of the DM Schema instance document, e.g. the XML file that defines a given version of a data model.

    -

    The following rules apply to the value of the top-level spec attribute:

    -
      -
    • For a BBF Technical Report, it will be of the form “urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the specification number (including leading zeros), i is the issue number, a is the amendment number, and c is the corrigendum number. The issue, amendment and corrigendum numbers do not include leading zeros. For example, “urn:broadband-forum-org:tr-106-1-0” refers to TR-106 (Issue 1 Amendment 0), and “urn:broadband-forum-org:tr-106-1-2” refers to TR-106 (Issue 1) Amendment 2. See C.3.4 for the corresponding normative requirement.

    • -
    • For specifications issued by other standards organizations, or by vendors, it SHOULD be of a standard form if one is defined. For example, RFC 2648 7 specifies a syntax for referencing RFCs.

    • -
    • Note that processing tools are likely to assume that all files that share a spec value are related to each other. Therefore, use of meaningful spec values is RECOMMENDED.

    • -
    -

    The following rules apply to the value of the top-level file attribute.

    -
      -
    • For a BBF Technical Report, it will be of the form “tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where nnn, i, a and c are the same as in the spec attribute. The label, which MUST NOT begin with a digit, is not needed if only one DM Schema instance document is associated with the specification. See C.3.5 for the corresponding normative requirement.

    • -
    • It SHOULD be the same as the actual file name (omitting the directory name). Under some circumstances this will not be possible, e.g. because the content is stored in a database and not in a file system.

    • -
    -

    Formally, the values of the spec and file attributes are defined as follows:

    -
    SpecAttr = SpecURI
    -
    -FileAttr = FileName
    -
    -SpecURI = BBFURI
    -        | OtherURI
    -
    -BBFURI = "urn:broadband-forum-org:" BBFDoc
    -
    -FileName = BBFDoc BBFSubDoc ".xml"
    -
    -BBFDoc = "tr-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
    -
    -BBFNumber = [DIGIT]{3,}     // including leading zeros, e.g. 069
    -
    -BBFIssue = "-" NoLeadingZeroPositiveNumber
    -
    -BBFAmendment = "-" NoLeadingZeroNumber
    -
    -BBFCorrigendum = "-" NoLeadingZeroNumber
    -
    -BBFSubDoc = "-" LABEL       // distinguishing label (not beginning with a digit)
    -          | ""              // not needed if only one DM Instance is associated with spec
    -
    -NoLeadingZeroNumber = [DIGIT]
    -                    | [NONZERODIGIT] [DIGIT]*
    -
    -NoLeadingZeroPositiveNumber = [NONZERODIGIT] [DIGIT]*
    -
    -OtherURI = <of a standard form if one is defined>
    -

    Standard BBF DM Instances can be accessed at the following URL:

    -
    BBFURL = "http://www.broadband-forum.org/cwmp/" FileName
    -
    -FileName = <as before, except that BBFCorrigendum is modified as follows:>
    -
    -BBFCorrigendum = "-" NoLeadingZeroNumber
    -               | ""         // if omitted, most recent corrigendum is assumed
    -

    For example, the DM Instance associated with TR-181 Issue 2 Amendment 12 can be accessed at https://www.broadband-forum.org/cwmp/tr-181-2-12-0.xml.

    -

    A.2.2 Descriptions

    -

    Many elements have descriptions, and the same rules apply to all description elements in the DM Schema. A description is free text which can contain a limited amount of MediaWiki-like markup as specified in A.2.2.3.

    -

    A.2.2.1 Character Set

    -

    Character set requirements apply to the entire DM Instance, so the contents of this section have been moved to C.2, which contains the normative requirements that apply to standard BBF DM Instances.

    -

    A.2.2.2 Pre-processing

    -

    All DM Instance processing tools MUST conceptually perform the following pre-processing before interpreting the markup:

    -
      -
    1. Remove any leading whitespace up to and including the first line break. Note: It can be assumed that all line breaks are represented by a single line feed, i.e. ASCII 10. See C.2.

    2. -
    3. Remove the longest common whitespace prefix (i.e. that occurs at the start of every line) from each line. See the example below, where three lines start with four spaces and one line starts with five spaces, so the longest whitespace prefix that occurs at start of each line is four spaces. In this calculation, a tab character counts as a single character. To avoid confusion, the description SHOULD NOT contain tab characters.

    4. -
    5. Remove all trailing whitespace, including line breaks.

    6. -
    -

    This pre-processing is designed to permit a reasonable variety of layout styles while still retaining predictable behavior. For example, both the following:

    -
    <description>This is the first line.
    -This is the second line.
    - This is the indented third line.
    -This is the fourth line.</description>
    -

    And:

    -
    <description>
    -    This is the first line.
    -    This is the second line.
    -     This is the indented third line.
    -    This is the fourth line.
    -</description>
    -

    …result in the following:

    -
    This is the first line.
    -This is the second line.
    -  This is the indented third line.
    -This is the fourth line.
    -

    A.2.2.3 Markup

    -

    The pre-processed description can contain the following markup, which is inspired by, but is not identical to, MediaWiki markup. All DM Instance processing tools SHOULD support this markup to the best of their ability.

    -

    Table 1 - XML Desccription Markup

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameMarkup ExampleDescription
    Italics’’italic text’’Two apostrophes on each side of some text will result in the contained text being emphasized in italics.
    Bold’’’bold text’’’Three apostrophes on each side of some text will result in the contained text being emphasized in bold.
    Bold italics’’’’’b+i text’’’’’Five apostrophes on each side of some text will result in the contained text being emphasized in bold italics.
    ParagraphThis paragraph just ended.A line break is interpreted as a paragraph break.
    Bulleted lists* level one
    ** level two
    * level one again
    ** level two again
    *** level three
    *: level one continued
    outside of list
    A line starting with one or more asterisks (*) denotes a bulleted list entry, whose indent depth is proportional to the number of asterisks specified. If the asterisks are followed by a colon (:), the previous item at that level is continued, as shown. An empty line, or a line that starts with a character other than an asterisk, indicates the end of the list.
    Numbered lists# level one
    ## level two
    # level one again
    ## level two again
    ### level three
    #: level one continued
    outside of list
    A line starting with one or more number signs (#) denotes a numbered list entry. All other conventions defined for bulleted lists apply here (using # rather than *), except that numbered list entries are prefixed with an integer decoration rather than a bullet.
    Indented lists: level one
    :: level two
    : level one again
    :: level two again
    ::: level three
    outside of list
    A line starting with one or more colons (:) denotes an indented list entry. All other conventions defined for bulleted lists apply here (using : rather than *), except that indented list entries have no prefix decoration, and item continuation is not needed.
    Verbatimcode example:
    if (something)
    {
    /* do something */
    } else {
    /* do other */
    }
    A block of lines each of which starts with a space is to be formatted exactly as typed, preferably in a fixed width font. This allows code fragments, simple tables etc. to be included in descriptions. Note that the pre-processing rules of A.2.2.2 imply that it is not possible to process an entire description as verbatim text (because all the leading whitespace would be removed). This is not expected to be a problem in practice.
    Hyperlinkshttp://www.broadband-forum.orgURL links are specified as plain old text (no special markup).
    Templates{{bibref|1|section 2}}
    {{section|table}}
    {{param|Enable}}
    {{enum|Error}}
    Text enclosed in double curly braces ({}) is a template reference, which is replaced by template-dependent text. A.2.2.4 specifies the standard templates.
    -

    A.2.2.4 Templates

    -

    A template invocation is encoded as two curly braces on either side of the template name and arguments. Arguments can follow the template name, separated by vertical pipe (|) characters. All whitespace is significant. For example:

    -

    {{someTemplate|arg1|arg2|...|argN}}

    -

    In some cases, one template can impact the behavior of another template, e.g. the definitions of both the {{enum}} and the {{hidden}} templates state that the template expansion can be automatically placed after the rest of the description, which raises the question of which template expansion would come first. This ambiguity is resolved by stating that processing tools SHOULD generate such automatic text in the same order that the templates are defined below. In the above example, {{enum}} is defined before {{hidden}}, so an auto­mat­ically-generated list of enumeration values would be placed before an automatically-generated explanation that the parameter value is hidden.

    -

    The following standard templates are defined. Any vendor-specific template names MUST obey the rules of Section 3.3.

    -

    Table 2 – XML Description Templates

    - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameMarkup DefinitionDescription
    Glossary reference{{gloref|id}}Glossary reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level glossary element’s item elements (A.2.4.1). Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”. Markup examples: {{gloref|Parameter}}
    Abbreviation reference{{abbref|id}}Abbreviation reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level abbreviations element’s item elements (A.2.4.2). Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”. Markup examples: {{abbref|CWMP}}
    Approval date{{appdate|date}}The date on which this file was approved. The date argument SHOULD be of the form “day month year” where “day” is the OPTIONAL day number (no leading zero) “month” is the full (capitalized) month name, and “year” is the year (including century). Markup example: {{appdate|5 November 2011}} {{appdate|November 2012}}
    Document name{{docname|name}}The DM Instance name or title. The name argument MUST distinguish this file from other different files but not from other versions of the same file or data model. Markup example: {{docname|Device Data Model for TR-069}}
    TR name{{trname|name}}The name and version of the corresponding Word / PDF document. The name argument MUST identify the Word / PDF document corresponding to this DM Instance, and be of the form “TR-nnnixaycz” as defined in A.2.4.3. Markup example: {{trname|TR-181i2a5}}
    XML reference{{xmlref|ref}} {{xmlref|ref|label}}A reference to this or another DM Instance. The ref argument MUST identify a DM Instance and be the filename part of the referenced DM Instance (a) optionally omitting the corrigendum number, and (b) omitting the trailing “.xml”. The OPTIONAL label argument MAY be used by processing tools as a user-visible label; if it is omitted, processing tools will derive the label from the value of the ref argument. Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the label, possibly rendered in a distinctive font, and (if referencing a different file) a hyperlink. Markup examples: {{xmlref|tr-181-2-5}} {{xmlref|tr-196-2-0-1|Corrigendum 1}}
    Bibliographic reference{{bibref|id}} {{bibref|id|section}}A bibliographic reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level bibliography element’s reference elements (A.2.4.3). The OPTIONAL section argument specifies the section number, including any leading “section”, “annex” or “appendix” text. Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “[id]] section”. Markup examples: {{bibref|RFC3986}} {{bibref|RFC3986|Section 3}}
    Section separator{{section|category}} {{section}}The beginning or end of a section or category. This is a way of splitting the description into sections. If the category argument is present, this marks the end of the previous section (if any), and the beginning of a section of the specified category. The “table”, “row” and “examples” categories are reserved for the obvious purposes. If the category argument is absent, this marks the end of the previous section (if any). Typically, processing tools will (a) validate the category, and (b) replace the template reference with a section marker. Markup examples: {{section|table}} {{section|row}} {{section|examples}}
    Number of entries parameter description{{numentries}}A description of a “NumberOfEntries” parameter. This template SHOULD be used for all such parameters. It will be expanded to something like “The number of entries in the <table> table.”. In most cases, the description will consist only of {{numentries}} but it MAY be followed by additional text if desired.
    Parameter and object reference{{param|ref}} {{param|ref|scope}} {{param}} {{object|ref}} {{object|ref|scope}} {{object}}A reference to the specified parameter or object. The OPTIONAL ref and scope arguments reference a parameter or object. Scope defaults to normal. Parameter and object names SHOULD adhere to the rules of A.2.3.4. Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current parameter or object name, possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink. Markup examples: {{param|Enable}} {{object|Stats.}}
    Profile reference{{profile|ref}} {{profile}}A reference to the specified profile. The OPTIONAL ref argument references a profile. Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current profile name, possibly rendered in a distinctive font. Markup examples: {{profile|Baseline:1}} {{profile}}
    List description{{list}} {{list|arg}} {{nolist}}A description of the current parameter’s list attributes. This template SHOULD only be used within the description of a list-valued parameter (A.2.7.1). This is a hint to processing tools to replace the template reference with a description of the parameter’s list attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{nolist}}) of describing the list attributes before the rest of the description. The OPTIONAL argument specifies a fragment of text that describes the list and SHOULD be incorporated into the template expansion. Typically processing tools will generate text of the form “Comma-separated list of <dataType>.” Or “Comma-separated list of <dataType>, <arg>.”.
    Reference description{{reference}} {{reference|arg}} {{reference|arg|opts}} {{noreference}}A description of the object or parameter that is referenced by the current parameter. This template SHOULD only be used within the description of a reference parameter (A.2.3.7). This is a hint to processing tools to replace the template reference with a description of the parameter’s reference attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{noref­er­en­ce}}) of describing the reference attributes after the list attributes (for a list-valued parameter) or before the rest of the description (otherwise). The OPTIONAL arg argument is relevant only for a pathRef; it specifies a fragment of text that describes the referenced item and SHOULD be incorporated into the template expansion. The OPTIONAL opts argument is a comma-separated list of keywords that give additional information about the reference and can affect the generated text. The following keywords are currently defined:

    - ignore: ignore any non-existent targetParents; this is useful when a parameter references different objects in different data models.
    - delete: this object (the referencing object) and the referenced object have the same lifetime, so this object will always be deleted when the referenced object is deleted; therefore the reference can never be null.

    Typically processing tools will generate text of the form “The value MUST be the full path name of <arg>…”, in which the generated text can be expected to be sensitive to whether or not the parameter is list-valued. Markup examples: {{reference|a protocol object}} {{reference|all Host table entries|ignore}}
    Named data type{{datatype}} {{datatype|arg}} {{nodatatype}}A description of the current parameter’s named data type. This template SHOULD only be used within the description of a parameter of a named data type (A.2.3.1). This is a hint to processing tools to replace the template reference with an indication of the parameter’s named data type, possibly including additional details or a hyperlink to such details. This overrides processing tools’ expected default behavior (unless suppressed by {{nodatatype}}) of describing the named data type before the rest of the description. The OPTIONAL argument affects how the data type is described. If it has the literal value “expand”, processing tools SHOULD replace the template reference with the actual description of the named data type (as opposed to referencing the description of the named data type).
    Profile description{{profdesc}} {{noprofdesc}}An auto-generated description of a profile. This template SHOULD only be used within the description of a profile (A.2.11). This is a hint to processing tools to replace the template reference with a description of the profile. This overrides processing tools’ expected default behavior (unless suppressed by {{noprofdesc}}) of describing the profile before the rest of the description. Typically processing tools will generate text of the form “This table defines the <profile:v> profile for the <object:m> object. The minimum REQUIRED version for this profile is <object:m.n>.” (or more complex text if the profile is based on or extends other profiles).
    Enumeration reference{{enum|value}} {{enum|value|param}} {{enum|value|param|scope}} {{enum}} {{noenum}}A reference to the specified enumeration value. The OPTIONAL value argument specifies one of the enumeration values for the referenced parameter. If present, it MUST be a valid enumeration value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed. If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s enumerations, possibly preceded by text such as “Enumeration of:”. This overrides processing tools’ expected default behavior (unless suppressed by {{noenum}}) of listing the parameter’s enumerations after the rest of the description. Otherwise, typically processing tools will (a) validate that the enumeration value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink. Markup examples: {{enum|None}} {{enum|None|OtherParam}}
    Pattern reference{{pattern|value}} {{pattern|value|param}} {{pattern|value|param|scope}} {{pattern}} {{nopattern}}A reference to the specified pattern value. The OPTIONAL value argument specifies one of the pattern values for the referenced parameter. If present, it MUST be a valid pattern value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed. If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s patterns, possibly preceded by text such as “Possible patterns:”. This overrides processing tools’ expected default behavior (unless suppressed by {{nopattern}}) of listing the parameter’s patterns after the rest of the description. Otherwise, typically processing tools will (a) validate that the pattern value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink. Markup examples: {{pattern|None}} {{pattern|None|OtherParam}}
    Hidden value{{hidden}} {{hidden|value}} {{nohidden}}Text explaining that the value of the current parameter is hidden and cannot be read. This template SHOULD only be used within the description of a hidden parameter (A.2.7.1). This is a hint to processing tools to replace the template reference with text explaining that the value of the current parameter is hidden and cannot be read. This overrides processing tools’ expected default behavior (unless suppressed by {{nohidden}}) of placing this text after the rest of the description. The OPTIONAL argument indicates the value that is returned when the current parameter is read. If omitted this defaults to the expansion of the {{null}} template. Typically, processing tools will generate text of the form “When read, this parameter returns , regardless of the actual value.”.
    Command parameter{{command}} {{nocommand}}Text explaining that the current parameter is a command parameter that triggers an Agent action. This template SHOULD only be used within the description of such a command parameter (A.2.7.1). This is a hint to processing tools to replace the template reference with text explaining that the current parameter is a command parameter that always reads back as {{null}}. This overrides processing tools’ expected default behavior (unless suppressed by {{nocommand}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The value is not part of the device configuration and is always {{null}} when read.”.
    Factory default value{{factory}} {{nofactory}}Text listing the factory default for the current parameter. This template SHOULD only be used within the description of a parameter that has a factory default value. This is a hint to processing tools to replace the template reference with text listing the factory default value. This overrides processing tools’ expected default behavior (unless suppressed by {{nofactory}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The factory default value MUST be <value>.”.
    Unique keys description{{keys}} {{nokeys}}A description of the current object’s unique keys. This template SHOULD only be used within the description of a Multi-Instance Object (table) that defines one or more unique keys (A.2.10.1). This is a hint to processing tools to replace the template reference with a description of the object’s unique keys. This overrides processing tools’ expected default behavior (unless suppressed by {{nokeys}}) of describing the unique keys after the description.
    Units reference{{units}}The parameter’s units string. Typically, processing tools will (a) check that the parameter has a units string, and (b) substitute the value of its units string.
    Boolean values{{false}} {{true}}Boolean values. Typically, processing tools will substitute the value False or True, possibly rendered in a distinctive font.
    Discriminator parameter description{{union}} {{nounion}}Text explaining the available options and use for the sub-objects which are part of the union. This template SHOULD only be used within the description of a parameter declared as a discriminatorParameter (A.2.8.1). This is a hint to processing tools to replace the template reference with text explaining the union and possible choices of sub-objects. This overrides processing tools’ expected default behavior (unless suppressed by nounion) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “This parameter defines the name of the currently active sub-object of a union, members of the union are <objects>” but it MAY be followed by additional text, explaining the use of the available options, if desired.
    Miscellaneous{{issue|descr}} {{issue|opts|descr}}An open issue. If only one argument is supplied, it is descr, which describes the open issue. If two arguments are supplied, they are opts and descr. The OPTIONAL opts argument is a comma-separated list of options: · The first list item is an issue category that defaults to “XXX”. · The second list item is an issue status that defaults to an empty string. Any non-empty status implies that the issue has been resolved. Typically, processing tools will assign a unique ID, e.g. a separate counter for each category of issue, and replace the template reference with the issue category, ID, status and description, possibly rendered in a distinctive font. Markup examples: {{issue|Will be labeled XXX.}} {{issue|IPsec|Will be labeled IPsec.}} {{issue|DNS,fixed|Resolved DNS issue.}}
    {{empty}}Represents an empty string. Typically, processing tools will render such values in a distinctive font, possibly using standard wording, such as or “an empty string”.
    {{null}}Expands to the appropriate null value for the current parameter’s data type (A.2.3.5), e.g. {{empty}}, {{false}} or 0.
    -

    A.2.2.5 HTML Example

    -

    This includes examples of most of the markup and templates.

    -
        <model name="Goo:1.1" base="Goo:1.0">
    -
    -    <object name="GooTop." access="readOnly" minEntries="1"
    -    maxEntries="1">
    -
    -    <parameter name="ExampleParam" access="readOnly">
    -
    -    <description>
    -
    -    {{section|Introduction}}This is an ''example'' parameter that
    -    illustrates many of the '''formatting''' templates. For
    -    '''''example''''', this references {{bibref|TR-106a1|section
    -    3.2}}.
    -
    -    {{section|Usage}}This parameter is called {{object}}{{param}}. One can
    -    also reference other parameters in the same object, such as
    -    {{param|OtherParameter}}, and indicate that the parameter value is
    -    measured in {{units}}.
    -
    -    One can also include bulleted lists:
    -
    -    * level one
    -
    -    ** level two
    -
    -    * level one again
    -
    -    ** level two again
    -
    -    *** level three
    -
    -    *: level one continued
    -
    -    and numbered lists:
    -
    -    # level one
    -
    -    ## level two
    -
    -    # level one again
    -
    -    ## level two again
    -
    -    ### level three
    -
    -    #: level one continued
    -
    -    and indented lists
    -
    -    : level one
    -
    -    :: level two
    -
    -    : level one again
    -
    -    :: level two again
    -
    -    ::: level three
    -
    -    and hyperlinks such as http://www.google.com
    -
    -    and code examples:
    -
    -    if (something) {
    -
    -    /* do something */
    -
    -    } else {
    -
    -    /* do other */
    -
    -    }
    -
    -    If the parameter was Boolean, one could refer to its values {{false}}
    -    and {{true}}.
    -
    -    One can refer to its enumerations individually, e.g. {{enum|Disabled}},
    -    or to other parameters' enumerations, such as
    -    {{enum|Value|OtherParam}}, or can list them all. {{enum}}
    -
    -    Finally, if there were any patterns they could be listed too.
    -    {{pattern}}
    -
    -    </description>
    -
    -    <syntax>
    -
    -    <string>
    -
    -    <enumeration value="A"/>
    -
    -    <enumeration value="B"/>
    -
    -    <units value="packets"/>
    -
    -    </string>
    -
    -    </syntax>
    -
    -    </parameter>
    -

    The resulting HTML would look something like this:

    -
    -html example
    html example
    -
    -

    A.2.3 Data Types

    -

    CWMP 2 and USP 13 data models support only the primitive data types listed in the last row of Table 3 “on the wire”. However, the DM Schema allows data types to be derived from the primitive types or from other named data types. Such derived types can be named or anonymous.

    -

    A.2.3.1 Named Data Types

    -

    Named data types are defined using the top-level dataType element. A DM Instance can contain zero or more top-level dataType elements.

    -

    When defining a new named data type, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 3 – XML Named Data Types

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameThe data type name.
    baseThe base type name, i.e. name of the data type from which this data type is derived. This is used only where the base type is itself a named data type, not a primitive type.
    statusThe data type’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new data type.
    descriptionThe data type’s description (A.2.2).
    list minItems maxItems nestedBrackets sizeIf the data type is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3). Note that a list-valued data type is always a string as far as the protocol is concerned. For a list, the rest of the data type specification refers to the individual list items, not to the parameter value.
    size pathRef instanceRef range enumeration enumerationRef pattern units defaultData type facets (A.2.3.3). These are permitted only when the base type is a named data type, i.e. when the base attribute is specified.
    base64 boolean dateTime hexBinary int long string unsignedInt unsignedLongPrimitive data type definition. These are permitted only when the base type is primitive. There is an element for each primitive data type, and each element supports only the facets (A.2.3.3) that are appropriate to that data type.
    -

    For example:

    -
    <dataType name="String255">
    -  <description>String of maximum length 255.</description>
    -  <string>
    -    <size maxLength="255"/>
    -  </string>
    -</dataType>
    -
    -<dataType name="String127" base="String255">
    -  <description>String of maximum length 127.</description>
    -  <size maxLength="127"/>
    -</dataType>
    -
    -<dataType name="String127List" base="String127">
    -  <description>List of up to 7 strings, each of maximum length 127. If a
    -  list item is itself a list, it will be "protected" by square
    -  brackets.</description>
    -  <list maxItems="7" nestedBrackets="required"/>
    -</dataType>
    -

    A.2.3.2 Anonymous Data Types

    -

    Anonymous data types are defined within parameter syntax elements (A.2.7.1), and can apply only to the parameters within which they are defined. For example:

    -
    <parameter name="Example1" access="readOnly">
    -  <syntax>
    -    <string>
    -      <size maxLength="127"/>
    -      </string>
    -  </syntax>
    -</parameter>
    -
    -<parameter name="Example2" access="readOnly">
    -  <syntax>
    -    <dataType base="String255">
    -      <size maxLength="127"/>
    -    </dataType>
    -  </syntax>
    -</parameter>
    -

    If an anonymous data type is modified in a later version of a data model, the modified anonymous data type is regarded as being derived from the original anonymous data type. Therefore the base type restriction rules of A.2.3.8 MUST be obeyed.

    -

    A.2.3.3 Data Type Facets

    -

    A facet specifies some aspect of a data type, e.g. its size, range or units.

    -

    Note that XML Schema 9 also associates facets with data types. The XML Schema and DM Schema concepts are the same, but the set of facets is not identical.

    -

    The DM Schema defines the following facets (normative requirements are specified in the schema):

    -

    Table 4 – XML Data Type Facets

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    sizeSize ranges for the data type (applies to string, base64, hexBinary and their derived types). Note that the size facet always refers to the actual value, not to the base64- or hexBinary-encoded value. Prior to the definition of the DM Schema, the maximum sizes of base64 parameters referred to the base64-encoded values. Processing tools that generate reports from DM Instances SHOULD include explicit clarification of whether the size ranges refer to the actual or encoded values. Note that the size facet is also used to specify the size range for list-valued parameters, which are always strings (A.2.7.1).
    pathRefDetails of how to reference parameters and objects via their Path Names (applies to string and its derived types: A.2.3.7).
    instanceRefDetails of how to reference object instances (table rows) via their Instance Numbers (applies to int, unsignedInt and their derived types; A.2.3.7).
    rangeValue ranges for the data type (applies to numeric data types and their derived types).
    enumerationEnumerations for the data type (applies to string and its derived types).
    enumerationRefEnumerations for the data type, obtained at run-time from the value of a specified parameter (applies to string and its derived types; A.2.3.7).
    patternPatterns for the data type (applies to string and its derived types). Pattern value syntax is the same as for XML Schema regular expressions.
    unitsUnits for the data type (applies to numeric data types and their derived types).
    -

    It is important to note that the enumeration facet does not necessarily define all the valid values for a data type. This is for the following reasons:

    -
      -
    • As specified in Section 3.3, vendors are allowed to add additional enumeration values.

    • -
    • A future version of a data model may need to add additional enumerations values.

    • -
    -

    A.2.3.4 Reference Path Names

    -

    Some description templates (A.2.2.4), and all reference facets (A.2.3.7), need to specify parameter or object names. It is always possible to specify a full Path Name, but it is frequently necessary or convenient to specify a relative Path Name. For example, it might be necessary to reference another parameter in the current object. Any Instance Numbers in the parameter’s full Path Name cannot be known at data model definition time, so this can only be done using a relative Path Name.

    -

    The following rules apply to all Path Names that are used in data model definitions for referencing parameters or objects:

    -
      -
    • Path Names MAY contain “{i}” placeholders, which MUST be interpreted as wild cards matching all Instance Numbers, e.g. “Device.Ethernet.Interface.{i}.” references all Ethernet.Interface instances.

    • -
    • Path Names MUST NOT contain Instance Numbers.

    • -
    -

    A Path Name is always associated with a path name scope, which defines the point in the naming hierarchy relative to which the Path Name applies.

    -

    Table 5 – Path Name Scope Definition

    - ---- - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    normalThis is a hybrid scope which usually gives the desired behavior:
    - If the path begins with a “Device” component, it is relative to the top of the naming hierarchy.
    - If the path begins with a dot, it is relative to the Root or Service Object (c.f. scope=model).
    - Otherwise, the path is relative to the current object (c.f. scope=object).

    modelThe path is relative to the Root or Service Object.
    objectThe path is relative to the current object.
    -

    Formally, if the path name scope is normal:

    -
      -
    • If the path is empty, it MUST be regarded as referring to the top of the naming hierarchy.

    • -
    • Otherwise, if the path begins with a “Device” component, it MUST be regarded as a full Path Name.

    • -
    • Otherwise, if the path begins with a dot (“.”), it MUST be regarded as a path relative to the Root or Service Object. For example, in the Device Root Object “.DeviceInfo.” means “Dev­ice.­DeviceInfo.”, and in the Device.­Services.­ABC­Service.1 Service Object it means “Device.­Services.­ABC­Service.­1.­DeviceInfo.”.

    • -
    • Otherwise, it MUST be regarded as a path relative to the current object. Any leading hash characters (“#”) cause it to be relative to the parent of the current object (or the parent’s parent, and so on) as described below. For example, if the current object is “Dev­ice.­LAN.”, “IPAddress” means “Device.­LAN.­IP­Add­ress”, “Stats.” means “Device.LAN.Stats.” and “#.DeviceInfo.” means “Device.DeviceInfo” (see below for more “#” examples).

    • -
    -

    If the path name scope is model:

    -
      -
    • If the path is empty, it MUST be regarded as referring to the Root or Service Object.

    • -
    • Otherwise, it MUST be regarded as a path relative to the Root or Service Object. Any leading dot MUST be ignored. Leading hash characters are not permitted.

    • -
    -

    If the path name scope is object:

    -
      -
    • If the path is empty, it MUST be regarded as referring to the current object.

    • -
    • Otherwise, it MUST be regarded as a path relative to the current object. Any leading dot MUST be ignored. Leading hash characters are not permitted.

    • -
    -

    As mentioned above, if the path name scope is normal, a leading hash character causes the path to be relative to the parent of the current object. Additional hash characters reference the parent’s parent, and so on, but they MUST NOT be used to reference beyond the Root or Service Object. Also, for object instances, “#.” always means the Multi-Instance Object’s (table’s) parent rather than the Multi-Instance Object (table).

    -

    In addition, within a component definition, items that are defined outside the component MUST NOT be referenced via relative paths. This is because components can be included anywhere within the data model tree.

    -

    For example, if the current object is “Device.LAN.DHCPOption.{i}.”:

    -
      -
    • “#.” means “Device.LAN.” (the table’s parent, not the table).

    • -
    • “#.DHCPOption.” means “Device.LAN.DHCPOption.” (the table).

    • -
    • “#.Stats.” means “Device.LAN.Stats.”.

    • -
    • “#.Stats.TotalBytesSent” means “Device.LAN.Stats.TotalBytesSent”.

    • -
    -

    The following examples would be invalid if LAN was defined within a component:

    -
      -
    • “##.” means “Device.”.

    • -
    • “##.DeviceInfo.” means “Device.DeviceInfo.”.

    • -
    • “##.DeviceInfo.Manufacturer” means “Device.DeviceInfo.Manufacturer”.

    • -
    -

    The final example can never be valid:

    -
      -
    • “###.” is not permitted (references beyond the Root Object).
    • -
    -

    Note that the term “Root or Service Object”, which is used several times above, means “if within a Service Object instance, the Service Object instance; otherwise, the Root Object”.

    -

    For example, the pathRef and instanceRef facets (A.2.3.7) have a target­Parent attribute which specifies the possible parent(s) of the referenced parameter or object, and a targetParentScope attribute (defaulted to normal) which specifies targetParent’s scope. If the current object is within a Service Object instance, setting targetParentScope to model forces the referenced parameter or object to be in the same Service Object instance. Similarly, setting targetParentScope to object forces the referenced parameter or object to be in the same object or in a sub-object.

    -

    Null Values and References

    -

    Each primitive data type has an associated null value that is used, for example, as the expansion of the {{null}} template (A.2.2.4). These null values are defined as follows:

    -
      -
    • base64, hexBinary, string: an empty string

    • -
    • unsignedInt, unsignedLong: 0

    • -
    • int, long: -1

    • -
    • boolean: false

    • -
    • dateTime: 0001-01-01T00:00:00Z (the Unknown Time; see Section 3.2.1)

    • -
    -

    A null reference indicates that a reference parameter is not currently referencing anything. The value that indicates a null reference is the null value for the reference parameter’s base data type, i.e.:

    -
      -
    • string: an empty string

    • -
    • unsignedInt: 0

    • -
    • int: -1

    • -
    -

    A.2.3.6 Reference Types

    -

    A reference to another parameter or object can be weak or strong:

    -
      -
    • weak: it does not necessarily reference an existing parameter or object. For example, if the referenced parameter or object is deleted, the value of the reference parameter might not get updated. All weak reference parameters MUST be declared as writable.

    • -
    • strong: it always either references a valid parameter or object, or else is a null reference (A.2.3.5). If the referenced parameter or object is deleted, the value of the reference parameter is always set to a null reference.

    • -
    -

    See Section 3.2.3 for normative requirements relating to reference types and the associated Agent behavior.

    -

    A.2.3.7 Reference Facets

    -

    A reference facet specifies how a parameter can reference another parameter or object. There are three sorts of reference:

    -
      -
    • Path reference: references another parameter or object via its Path Name. Details are specified via the pathRef facet, which applies to string and its derived types.

    • -
    • Instance reference: references an object instance (table row) via its Instance Number. Details are specified via the instanceRef facet, which applies to int, unsignedInt and their derived types.

    • -
    • Enumeration reference: references a list-valued parameter via its Path Name. The current value of the referenced parameter indicates the valid enumerations for this parameter. Details are specified via the enumerationRef facet, which applies to string and its derived types.

    • -
    -

    When defining a path reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 6 – PathRef Facet Definition

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    targetParentAn XML list of Path Names that can restrict the set of parameters and objects that can be referenced. If the list is empty (the default), then anything can be referenced. Otherwise, only the immediate children of one of the specified objects can be referenced, A “{i}” placeholder in a Path Name acts as a wild card, e.g. “Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.”. Path Names cannot contain explicit Instance Identifiers.
    targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
    targetTypeSpecifies what types of item can be referenced:
    - any: any parameter or object can be referenced (default)
    - parameter: any parameter can be referenced
    - object: any object can be referenced
    - single: any single-instance object can be referenced
    - table: any Multi-Instance Object (table) can be referenced
    - row: any Multi-Instance Object (table) instance (row) can be referenced

    targetDataTypeSpecifies the valid data types for the referenced parameter. Is relevant only when targetType is any or parameter. Possible values are as follows:
    - any: a parameter of any data type can be referenced (default)
    - base64: only a base64 parameter can be referenced
    - boolean: only a boolean parameter can be referenced
    - dateTime: only a dateTime parameter can be referenced
    - hexBinary: only a hexBinary parameter can be referenced
    - integer: only an integer (int, long, unsignedInt or unsignedLong) parameter can be referenced
    - int: only an int parameter can be referenced
    - long: only a long (or int) parameter can be referenced
    - string: only a string parameter can be referenced
    - unsignedInt: only an unsignedInt parameter can be referenced
    - unsignedLong: only an unsignedLong (or unsignedInt) parameter can be referenced
    - : only a parameter of the named data type can be referenced In addition, a parameter whose data type is derived from the specified data type can be referenced. The built-in type hierarchy (a simplified version of the XML Schema type hierarchy) is as follows:

    any
     base64
     boolean
     dateTime
     hexBinary
     integer
       long
         int
       unsignedLong
         unsignedInt
     string


    Note that any and integer are not valid parameter data types. They are included in order to support “can reference any data type” and “can reference any numeric data type”.
    refTypeSpecifies the reference type (A.2.3.6): weak or strong.
    -

    When defining an instance reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 7 – InstanceRef Facet Definition

    - ---- - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    targetParentSpecifies the Path Name of the Multi-Instance Object (table) of which an instance (row) is being referenced. “{i}” placeholders and explicit Instance Identifiers are not permitted in the Path Name. targetParentScope can be used to specify Path Names relative to the Root or Service Object or the current object.
    targetParentScopeSpecifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object.
    refTypeSpecifies the reference type (A.2.3.6): weak or strong.
    -

    When defining an enumeration reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 8 – EnumerationRef Facet Definition

    - ---- - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    targetParamSpecifies the Path Name of the list-valued parameter whose current value indicates the valid enumerations for this parameter.
    targetParamScopeSpecifies the point in the naming hierarchy relative to which targetParam applies (A.2.3.4): normal (default), model or object.
    nullValueSpecifies the parameter value that indicates that none of the values of the referenced parameter currently apply (if not specified, no such value is designated). Note that if this parameter is list-valued then nullValue is not relevant, because this condition will be indicated by an empty list.
    -

    The following examples illustrate the various possible types of reference.

    -
        <object name="PeriodicStatistics.SampleSet.{i}.Parameter.{i}." ...>
    -      ...
    -      <parameter name="Reference" access="readWrite">
    -        <description>Reference to the parameter that is associated with this
    -        object instance. This MUST be the parameter's full path name.</description>
    -        <syntax>
    -          <string>
    -            <size maxLength="256"/>
    -            <pathRef targetType="parameter" refType="weak"/>
    -          </string>
    -          <default type="object" value=""/>
    -        </syntax>
    -      </parameter>
    -
        <object name="StorageService.{i}.StorageArray.{i}." ...>
    -      ...
    -      <parameter name="PhysicalMediumReference" access="readWrite">
    -        <description>A comma-separated list of Physical Medium references.
    -        Each Physical Medium referenced by this parameter MUST exist within the
    -        same StorageService instance. A Physical Medium MUST only be referenced
    -        by one Storage Array instance. Each reference can be either in the form
    -        of ".PhysicalMedium.{i}" or a fully qualified object
    -        name...</description>
    -        <syntax>
    -          <list>
    -            <size maxLength="1024"/>
    -          </list>
    -          <string>
    -            <pathRef targetParent=".PhysicalMedium." targetParentScope="model"
    -            targetType="row" refType="strong"/>
    -          </string>
    -        </syntax>
    -      </parameter>
    -
        <object name="STBService.{i}.Components.FrontEnd.{i}.IP.Inbound.{i}." ...>
    -      ...
    -      <parameter name="StreamingControlProtocol" access="readOnly">
    -        <description>Network protocol currently used for controlling streaming
    -        of the source content, or an empty string if the content is not being
    -        streamed or is being streamed but is not being controlled. If non-empty,
    -        the string MUST be one of the .Capabilities.FrontEnd.IP.StreamingControlProtocols
    -        values.</description>
    -        <syntax>
    -          <string>
    -            <enumerationRef
    -            targetParam=".Capabilities.FrontEnd.IP.StreamingControlProtocols"
    -            nullValue=""/>
    -          </string>
    -        </syntax>
    -      </parameter>
    -
    -      <parameter name="StreamingTransportProtocol" access="readOnly">
    -        <description>Network protocol currently used for streaming the source
    -        content, or an empty string if the content is not being streamed.
    -        If non-empty, the string MUST be one of the
    -        .Capabilities.FrontEnd.IP.StreamingTransportProtocols
    -        values.</description>
    -        <syntax>
    -          <string>
    -            <enumerationRef
    -            targetParam=".Capabilities.FrontEnd.IP.StreamingTransportProtocols"
    -            nullValue=""/>
    -          </string>
    -        </syntax>
    -      </parameter>
    -
        <object name="Device.WiFi.AccessPoint.{i}.Security." ...>
    -      ...
    -      <parameter name="ModeEnabled" access="readWrite">
    -        <description>Indicates which security mode is enabled.</description>
    -        <syntax>
    -          <list/>
    -          <string>
    -            <enumerationRef targetParam="ModesSupported"/>
    -          </string>
    -        </syntax>
    -      </parameter>
    -

    A.2.3.8 Base Type Restriction

    -

    A new data type MUST always be a restriction of its base type, meaning that a valid value of the new data type will always be a valid value for its base type. This is the case for the examples of A.2.3.1, which involve three different data types:

    -
      -
    • string of unlimited length

    • -
    • string of maximum length 255

    • -
    • string of maximum length 127

    • -
    -

    Clearly a string of length 100 is valid for all three data types, but a string of length 200 is only valid for the first two data types.

    -

    The examples of A.2.3.1 considered only the size facet, but in general all facets that are applicable to the data type have to be considered. The base type restriction requirements for each facet are as follows:

    -

    Table 9 – XML Facet Inheritance Rules

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FacetRequirements
    sizeThe derived data type can define sizes in any way, provided that the new sizes do not permit any values that are not valid for the base type.
    pathRefThe derived data type can modify the data type in the following ways:
    - By “promoting” status to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
    - By changing targetParent to narrow the set of possible parent objects.
    - By changing targetType to narrow the set of possible target types.
    - By changing targetDataType to narrow the set of possible target data types.

    instanceRefThe derived data type can modify the data type in the following ways:
    - By “promoting” status to a “higher” value, as described for pathRef.
    - By changing targetParent to narrow the set of possible parent objects.

    rangeThe derived data type can define ranges in any way, provided that the new ranges do not permit any values that are not valid for the base type.
    enumerationThe derived data type can modify existing enumeration values in the following ways:
    - By “promoting” access from readOnly to readWrite.
    - By “promoting” status to a “higher” value, as described for pathRef.
    - By “promoting” optional from False to True.
    - By adding a code, if none was previously specified.
    - By using the action attribute to prefix, extend or replace the description (see below and A.2.12.6). The derived data type can add new enumeration values.
    enumerationRefThe derived data type can modify the data type by “promoting” status to a “higher” value, as described for pathRef.
    patternThe derived data type can modify existing pattern values by changing access, status, optional and description exactly as for enumerations. The derived data type can add new patterns and/or replace existing patterns with new patterns, provided that the new patterns do not permit any values that are not valid for the base type. For example a single pattern “[AB]” could be replaced with “A” and “B”, but “C” could not be added.
    unitsThe derived data type can add units if the base type did not specify any.
    -

    Most of the above requirements are non-normative, because it has to be possible to correct errors. For example, if the base type supports a range of [-1:4095] but the values 0 and 4095 were included in error, it would be permissible for a derived type to support ranges of [-1:-1] and [1:4094.] Processing tools SHOULD be able to detect and warn about such cases.

    -

    When defining a new data type, if a facet is omitted, the new data type will inherit that facet from its base type. If a facet is present, it MUST be fully specified (except that special rules apply to descriptions; see below and A.2.12.6). For example, this means that a derived type that adds additional enumeration values has also to re-declare the enumeration values of the base type.

    -

    For example, in the following, the derived type inherits the units facet from its parent but it does not inherit the range facet, so the PacketCounter range is [10:] and the PacketCounter2 range is [15:20].

    -
    <dataType name="PacketCounter">
    -  <unsignedLong>
    -    <range minInclusive="10"/>
    -    <units value="packets"/>
    -  </unsignedLong>
    -</dataType>
    -
    -<dataType name="PacketCounter2" base="PacketCounter">
    -  <range minInclusive="15" maxInclusive="20"/>
    -</dataType>
    -

    Similarly, in the following, the enumeration values for ABCD are not A, B, C and D, but are just C and D. This is an error (because the derived type cannot remove enumeration values), and processing tools SHOULD detect and warn about such cases.

    -
    <dataType name="AB">
    -  <string>
    -    <enumeration value="A"/>
    -    <enumeration value="B"/>
    -  </string>
    -</dataType>
    -
    -<dataType name="ABCD" base="AB">
    -  <string>
    -    <enumeration value="C"/>
    -    <enumeration value="D"/>
    -  </string>
    -</dataType>
    -

    A derived data type and any of its facets that support descriptions will inherit those descriptions from the base type. Facet descriptions are inherited regardless of whether the facet is present in the derived type. For any descriptions that are explicitly specified in the derived type, the action attribute controls whether they will be prefixed, extended or replaced (A.2.12.6).

    -

    For example, in the following, the description of Z (which is not changed) does not have to be repeated.

    -
    <dataType name="XY">
    -  <description>This is XY.</description>
    -  <string>
    -    <enumeration value="X">
    -      <description>This is X.</description>
    -    </enumeration>
    -    <enumeration value="Y">
    -      <description>This is Y.</description>
    -    </enumeration>
    -    <enumeration value="Z">
    -      <description>This is Z.</description>
    -    </enumeration>
    -  </string>
    -</dataType>
    -
    -<dataType name="XY2" base="XY">
    -  <description action="replace">This is all about XY.</description>
    -  <enumeration value="X">
    -    <description action="append">This is more about X, added at the
    -    end.</description>
    -  </enumeration>
    -  <enumeration value="Y">
    -    <description action="prefix">This is more about Y, inserted at the
    -    beginning.</description>
    -  </enumeration>
    -  <enumeration value="Z"/>
    -</dataType>
    -

    2.4 Glossary, Abbreviations and Bibliography

    -

    2.4.1 Glossary

    -

    The glossary is defined using the top-level glossary element, which can contain zero or more item elements.

    -

    When defining a new glossary item, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 10 - XML Glossary Items

    - ---- - - - - - - - - - - - - - - - - -
    NameDescription
    idThe glossary item ID. This is the term that is being defined.
    descriptionThe description of the glossary item. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
    -

    2.4.2 Abbreviations

    -

    Abbreviations are defined using the top-level abbreviations element, which can contain zero or more item elements.

    -

    When defining a new abbreviation, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 11 - XML Abbreviation Items

    - ---- - - - - - - - - - - - - - - - - -
    NameDescription
    idThe abbreviation item ID. This is the abbreviation that is being defined.
    descriptionThe description of the abbreviation. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references.
    -

    2.4.3 Bibliography

    -

    The bibliography is defined using the top-level bibliography element, which can contain zero or more (bibliographic) reference elements.

    -

    When defining a new bibliographic reference, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 12 – XML Bibliographic References

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    idThe bibliographic reference ID.
    nameThe name by which the referenced document is usually known.
    titleThe document title.
    organizationThe organization that published the referenced document, e.g. BBF, IEEE, IETF.
    categoryThe document category, e.g. TR (BBF), RFC (IETF).
    dateThe publication date.
    hyperlinkHyperlink(s) to the document.
    -

    For BBF standard DM Instances, the C.3.7 rules apply.

    -

    Processing tools SHOULD be lenient when comparing bibliographic reference IDs. Specifically, they SHOULD ignore all whitespace, punctuation, leading zeros in numbers, and upper / lower case. So, for example, “rfc 1234” and “RFC1234” would be regarded as the same ID, as would “TR-069” and “TR69”.

    -

    Processing tools SHOULD detect and report inconsistent bibliographic references, e.g. a reference with the same ID (i.e. an ID that compares as equal) as one that was encountered in a different file, but with a different name or hyperlink.

    -

    A.2.5 Components

    -

    A component is a way of defining a named set of parameters, objects and/or profiles to be used wherever such a group is needed in more than one place (or just to structure the definitions). A DM Instance can contain zero or more top-level component elements.

    -

    When defining a new component, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 13 – XML Component Definition

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameThe component name.
    descriptionThe component’s description (A.2.2).
    componentThe other components that are referenced (included) by this component.
    parameterThe component’s top-level parameter definitions (A.2.7).
    objectThe component’s object definitions (0).
    profileThe component’s profile definitions (A.2.11).
    -

    Referencing (including) a component can be thought of as textual substitution. A component has no version number and is not tied to a particular Root or Service Object.

    -

    The following is a simple example of component definition and reference.

    -
    <component name="ByteStats">
    -  <parameter name="BytesSent" access="readOnly">
    -    <description>Number of bytes sent.</description>
    -    <syntax><unsignedInt/></syntax>
    -  </parameter>
    -  <parameter name="BytesReceived" access="readOnly">
    -    <description>Number of bytes received.</description>
    -    <syntax><unsignedInt/></syntax>
    -  </parameter>
    -</component>
    -
    -<model name="Device:2.11">
    -  <object name="Device." access="readOnly" minEntries="1"
    -  maxEntries="1">
    -    ...
    -    <component ref="ByteStats"/>
    -    ...
    -  </object>
    -  ...
    -</model>
    -

    Here the component is referenced from within an object definition. Components can be referenced from within component, model, object, command and event definitions. Parameter, command, event, object and profile definitions within components are relative to the point of inclusion unless overridden using the path attribute.

    -

    A.2.6 Root and Service Objects

    -

    Root and Service Objects are defined using the model element and an associated top-level object element. A DM Instance can contain zero or more top-level model elements.

    -

    When defining a new model, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 14 – XML Root and Service Objects

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameThe model name, including its major and minor version numbers.
    baseThe name of the previous version of the model (for use when the model version is greater than 1.0).
    isServiceWhether it is a Service Object. This defaults to False and so can be omitted for Root Objects.
    descriptionThe model’s description (A.2.2).
    componentThe components that are referenced (included) by the model (A.2.5).
    parameterThe model’s top-level parameter definitions (A.2.7).
    objectThe model’s top-level and other object definitions (0).
    profileThe model’s profile definitions (A.2.11).
    -

    Once a given version has been defined, it cannot be modified; instead, a new version of the object has to be defined. For example, the following example defines v1.0 and v1.1 of a notional Service Object.

    -
    <model name="DemoService:1.0" isService="true">
    -  <parameter name="DemoServiceNumberOfEntries" access="readOnly"/>
    -  <object name="DemoService.{i}." access="readOnly" minEntries="0"
    -  maxEntries="unbounded" entriesParameter="DemoServiceNumberOfEntries"/>
    -</model>
    -
    -<model name="DemoService:1.1" base="DemoService:1.0"
    -isService="true">
    -  <object base="DemoService.{i}." access="readOnly" minEntries="0"
    -  maxEntries="unbounded"/>
    -</model>
    -

    A.2.7 Parameters

    -

    Parameters are defined using the parameter element, which can occur within component, model and object elements. When defining a new parameter, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 15 – XML Parameter Definition

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameThe parameter name (3.1).
    accessWhether the parameter can be writable (readWrite) or not (readOnly).
    statusThe parameter’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new parameter.
    activeNotifyThe parameter’s {normal, forceEnabled, forceDefault, canDeny} Active Notification status. This defaults to normal, and so is not often specified for a new parameter. Note that in USP, forceEnabled and forceDefault are equivalent to normal.
    forcedInformFor CWMP only, the parameter’s Forced Inform status. This defaults to False, and so is not often specified for a new parameter.
    descriptionThe parameter’s description (A.2.2).
    syntaxThe parameter’s syntax (A.2.7.1).
    -

    A.2.7.1 Parameter Syntax

    -

    Parameter syntax is defined using the syntax element, which can occur only within parameter elements. When defining a new parameter, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 16 – XML Parameter Syntax

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    hiddenWhether the value is hidden on readback. This defaults to False, and so is not often specified for a new parameter.
    commandFor CWMP only, whether setting the parameter triggers an Agent action as opposed to changing the configuration. This defaults to False. Note that this is an CWMP-only attribute (not an element) and is different from the USP-only command element (A.2.8).
    list minItems maxItems nestedBrackets sizeIf the parameter is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3). Note that a list-valued parameter is always a string as far as the protocol is concerned. For a list, the rest of the syntax specification refers to the individual list items, not to the parameter value.
    base64 boolean dateTime hexBinary int long string unsignedInt unsignedLongIf the parameter is of a primitive data type, specifies a primitive data type reference, e.g. <int/>. If the parameter data type is derived from a primitive data type, specifies an anonymous primitive data type definition (A.2.3.2), e.g. <int><range maxInclusive=“255”/></int>. Each primitive data type element supports only the facets (A.2.3.3) that are appropriate to that data type.
    dataTypeIf the parameter is of a named data type, specifies a named data type (A.2.3.1) reference, e.g. <dataType ref=“IPAddress”/>. If the parameter data type is derived from a named data type, specifies an anonymous named data type (A.2.3.2) definition, e.g. <dataType base=“IPAddress”><size maxLength=“15”/></dataType>
    -

    A.2.8 Commands (USP Only)

    -

    Data Model Commands are defined using the command element, which can occur within component and object elements. When defining a new Data Model Command, the following attributes and elements are relevant (normative requirements are specified in the schema). This concept does not apply to CWMP, which uses Objects and/or Parameters to simulate commands.

    -

    Table 17 – XML Command Definition

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameThe command name (3.1).
    asyncWhether this command is asynchronous or not. This defaults to false.
    statusThe command’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new command.
    descriptionThe command’s description (A.2.2).
    inputThe command’s input arguments (can be omitted if there are none).
    outputThe command’s output arguments (can be omitted if there are none).
    -

    The input / output elements define the command’s input / output arguments (respectively).

    -

    Table 18 – XML Command Input / Output Arguments Definition

    - ---- - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    componentThe arguments defined by components that are referenced (included) by the command (A.2.5).
    parameterThe command’s parameter arguments (A.2.7).
    objectThe command’s object arguments (0).
    -

    Command argument parameter / object elements are similar to the corresponding data model parameter / object elements but support different attributes, e.g. they have no access or numEntriesParameter attributes, and they have a Boolean mandatory attribute (to indicate a mandatory argument).

    -

    When a command references a component, any attributes not supported in command arguments are ignored. This allows a component that defines data model parameters / objects to be used for defining command parameter / object arguments.

    -

    When a command argument is a table, its instance numbers MUST be 1, 2, 3… (assigned sequentially without gaps).

    -

    ### A.2.9 Events (USP Only)

    -

    Data Model Events are defined using the event element, which can occur within component and object elements. When defining a new Data Model Event, the following attributes and elements are relevant (normative requirements are specified in the schema). This concept does not apply to CWMP.

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameThe event name (3.1).
    statusThe event’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new event.
    descriptionThe event’s description (A.2.2).
    componentThe arguments defined by components that are referenced (included) by the event (A.2.5).
    parameterThe event’s parameter arguments (A.2.7).
    objectThe event’s object arguments (A.2.10).
    -

    Event argument parameter / object elements are similar to the corresponding data model parameter / object elements but support different attributes, e.g. they have no access or numEntriesParameter attributes, and they have a Boolean mandatory attribute (to indicate a mandatory argument).

    -

    When an event references a component, any attributes not supported in event arguments are ignored. This allows a component that defines data model parameters / objects to be used for defining event parameter / object arguments.

    -

    When an event argument is a table, its instance numbers MUST be 1, 2, 3… (assigned sequentially without gaps).

    -

    A.2.10 Objects

    -

    Objects are defined using the object element, which can occur within component and model elements. When defining a new object, the following attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 19 – XML Object Definition

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameThe object name, specified as a partial path (3.1).
    accessWhether object instances can be Added or Deleted (readWrite) or not (readOnly). Adding or deleting instances is meaningful only for a Multi-Instance Object (table).
    minEntriesThe minimum number of instances of this object (always less than or equal to maxEntries).
    maxEntriesThe maximum number of instances of this object (can be “unbounded”). minEntries and maxEntries allow the object to be placed into one of three categories: · minEntries=0, maxEntries=1: single-instance object which might not be allowed to exist, e.g. because only one of it and another object can exist at the same time. Note that this is not the same thing as an optional object (in a sense, all objects are optional; requirements are specified via profiles). For an object with minEntries=0, maxEntries=1, the description MUST explain why it might not be allowed to exist, e.g. referencing the other objects that constrain it. · minEntries=1, maxEntries=1: single-instance object that is always allowed to exist. · All other cases: Multi-Instance Object (table) (A.2.10.1).
    mountTypeFor USP only, denotes whether this object is a Mountable Object , a Mount Point, or none. Possible values are: · mountable: this object is a Mountable Object. Such an object appears only right under the Root Object. · mountPoint: this object is a Mount Point. · none (default): this object is neither a Mountable Object nor a Mount Point.
    statusThe object’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new object.
    descriptionThe object’s description (A.2.2).
    componentThe components that are referenced (included) by the object (A.2.5).
    parameterThe object’s parameter definitions (A.2.7).
    commandFor USP only, the object’s command definitions (A.2.8).
    eventFor USP only, the object’s event definitions (A.2.9).
    -

    A.2.10.1 Tables

    -

    If an object is a table, several other attributes and elements are relevant (normative requirements are specified in the schema).

    -

    Table 20 – XML Table Definition

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameFor a table, the last part of the name has to be “{i}.” (3.1).
    numEntriesParameterThe name of the parameter (in the parent object) that contains the number of entries in the table. Such a parameter is needed whenever there is a variable number of entries, i.e. whenever maxEntries is unbounded or is greater than minEntries.
    enableParameterFor CWMP only, the name of the parameter (in each table entry) that enables and disables that table entry. Such a parameter is needed whenever access is readWrite (so the Controller might be able to create entries) and at least one uniqueKey element that defines a functional key is present.
    uniqueKeyAn element that specifies a unique key by referencing those parameters that constitute the unique key (all of these parameters are single-valued, i.e. not list-valued). In CWMP only, for a non-functional key, or if the table has no enableParameter, the uniqueness requirement always applies; for a functional key, and if the table has an enableParameter, the uniqueness requirement applies only to enabled table entries.
    discriminatorParameterThe name of the parameter (in the parent object) that selects which of the available objects that are part of the same union to use. Such a discrimination parameter is needed whenever there are multiple alternative sub-objects, i.e. objects where minEntries=0 and maxEntries=1.
    -

    Each unique key is either functional or non-functional:

    -
      -
    • A functional key references at least one parameter that relates to the purpose (or function) of the table, e.g. a DHCP option tag in a DHCP option table, or an external port number in a port mapping table.

    • -
    • A non-functional key references only parameters that do not relate to the purpose (or function) of the table, e.g. an Alias or Name parameter.

    • -
    -

    A unique key is assumed to be functional unless explicitly marked as non-functional by setting the unique key’s functional attribute to false.

    -

    As can be seen from the description in Table 20, in CWMP, non-functional keys are always required to be unique, regardless of whether the table has an enableParameter, or is enabled or disabled. Therefore, at most one entry in a given parent object can exist with a given value for a non-functional unique key. USP doesn’t require any different behavior for both functional and non-functional keys: all keys are always required to be unique.

    -

    The uniqueness requirement means that the value of the unique key MUST be unique for all instances of a given parent object regardless of how instances got created.

    -

    If a parameter (or group of parameters) is not defined as a unique key, an Agent MUST NOT expect or require those parameters to contain a value that is unique within the table. Such parameters MAY subsequently be defined as a vendor-specific data model composite unique key, but that composite unique key definition MUST include at least one vendor-specific parameter.

    -

    A.2.11 Profiles

    -

    Profiles are defined using the profile element, which can occur within component and model elements. When defining a new profile, the following attributes and elements are always relevant (normative requirements are specified in the schema).

    -

    Table 21 – XML Profile Definition

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    nameThe profile name, including its version number (2.3.3).
    baseThe name of the previous version of the profile (for use when the profile version is greater than 1).
    extendsA list of the names of the profiles that this profile extends.
    minVersionA list of the model names that define the minimum versions for which this profile can be defined. Note that it is only necessary to specify this if the profile is defined within a component element.
    descriptionThe profile’s description (A.2.2).
    parameterThe profile’s parameter requirements, which can include descriptions, references to the parameters in question, and the parameter access requirement.
    objectThe profile’s object requirements, which can include descriptions, references to the objects in question, the object access requirements, and requirements for the object’s parameters, commands and events, including requirements for command and event arguments.
    -

    Note:

    -
      -
    • If a command or event specifies no argument requirements, this is the same as if all of its mandatory arguments were listed.

    • -
    • If a command or event specifies argument requirements, it has to list (at least) all its mandatory arguments.

    • -
    -

    A.2.12 Modifications

    -

    New data types, components, models and profiles can be created based on existing items. This does not modify the existing item.

    -

    Parameters, commands, events, objects and profiles can be modified “in place”, i.e. without creating a new item. This still uses the parameter, command, event, object and profile elements, and is indicated by using the base, rather than the name, attribute. The base attribute specifies the name of the existing item that is to be modified.

    -

    The syntax for modifying an item is the same as for creating an item, but there are rules. These rules are not specified in the DM Schema.

    -

    A.2.12.1 Parameter Modifications

    -

    The following rules govern parameter modifications.

    -

    Table 22 – XML Parameter Modification

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    accessCan be “promoted” from readOnly to readWrite.
    statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
    activeNotifyCan be changed from forceEnabled to forceDefault. No other changes are permitted.
    forcedInformCannot be changed.
    descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
    syntax/hiddenCannot be changed.
    syntax/listCan add or modify the list element in the following ways: · Can convert a non-list string parameter to a list provided that an empty string was already a valid value with the appropriate meaning. · Can adjust limits on numbers of items, and on the list size, provided that the new rules do not permit any values that were not valid for the previous version of the parameter.
    syntax/int etc syntax/dataTypeCan make any change that follows the base type restriction rules of A.2.3.8, e.g. can add enumerations.
    syntax/defaultA default can be added if the parameter did not already have one.
    -

    Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

    -

    2.12.2 Command Modifications (USP Only)

    -

    The following rules govern command modifications.

    -

    Table 23 – XML Command Modification

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    asyncCan be changed.
    statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
    descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
    inputCan modify input arguments according to the rules for modifying data model parameters and objects. Can add new input arguments, either directly or by referencing (including) new components.
    outputCan modify output arguments according to the rules for modifying data model parameters and objects. Can add new output arguments, either directly or by referencing (including) new components.
    -

    Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

    -

    2.12.3 Event Modifications (USP Only)

    -

    The following rules govern command modifications.

    -

    Table 24 – XML Event Modification

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
    descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
    componentCan add new arguments by referencing (including) new components.
    parameterCan modify parameter arguments according to the rules for modifying data model parameters. Can add new parameter arguments.
    objectCan modify object arguments according to the rules for modifying data model objects. Can add new object arguments.
    -

    Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules.

    -

    A.2.12.4 Object Modifications

    -

    The following rules govern object modifications.

    -

    Table 25 – XML Object Modification

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    accessCan be “promoted” from readOnly to readWrite.
    minEntriesCannot be changed.
    maxEntriesCannot be changed.
    numEntriesParameterCannot be changed, unless was previously missing, in which case can be added.
    enableParameterFor CWMP only, cannot be changed, unless was previously missing, in which case can be added.
    statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
    descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
    uniqueKeyCannot be changed, but new unique keys can be added.
    componentCan reference (include) new components.
    parameterCan add new parameters.
    commandFor USP only, can add new commands.
    eventFor USP only, can add new events.
    -

    Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of an object. Processing tools SHOULD be able to detect and warn when an object is modified in a way that contravenes the above rules.

    -

    A.2.12.5 Profile Modifications

    -

    The following rules govern profile modifications. They apply to the profile element, and to its nested parameter, command, event and object elements.

    -

    Table 26 – XML Profile Modification

    - ---- - - - - - - - - - - - - - - - - -
    NameDescription
    statusCan be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
    descriptionCan be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved.
    -

    Most of the above requirements are non-normative, because it has to be possible to correct errors in a profile. Indeed, since profiles are immutable, the only valid reason for changing a profile is to correct errors. Processing tools SHOULD be able to detect and warn when a profile is modified in a way that contravenes the above rules.

    -

    A.2.12.6 Description Modifications

    -

    The following rules govern description modifications. They apply to all description elements.

    -

    Table 27 – XML Description Modification

    - ---- - - - - - - - - - - - - -
    NameDescription
    actionDetermines how the description will be modified; allowed values are:
    - create: create a new description (this is the default but is of course not permitted when modifying a description).
    - replace: replace the existing description with the new text.
    - append: append the new text to the existing description.
    - prefix: prefix the existing description with the new text.

    -

    In the case of prefix and append, processing tools SHOULD insert a line break between the existing description and the new text.

    -

    A.3 DM Schema

    -

    The normative version of the DM Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-6.xsd. Please be aware that a new version of the DM Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

    -

    Annex B. CWMP Device Type XML Schema

    -

    B.1 Introduction

    -

    The CWMP Device Type XML Schema 9, or DT Schema, is used for describing a device’s supported data model.

    -

    DT Schema instance documents can contain the following:

    -
      -
    • Imports (from DM Schema instance documents) of Root or Service Object definitions

    • -
    • Declarations of which features of imported Root or Service Objects are supported

    • -
    -

    DT Schema instance documents cannot contain definitions of Root or Service Objects. All such definitions have to reside in DM Schema instance documents.

    -

    B.2 Normative Information

    -

    It is possible to create instance documents that conform to the DT Schema but nevertheless are not valid device type specifications. This is because it is not possible to specify all the normative device type specification requirements using the XML Schema language. Therefore, the schema contains additional requirements written using the usual normative language. Instance documents that conform to the DT Schema and meet these additional requirements are referred to as DT Instances.

    -

    The question of the location of the definitive normative information therefore arises. The answer is as follows:

    -
      -
    • All the normative information in the main part of the document remains normative.

    • -
    • The DT Schema, and the additional requirements therein, are normative. Some of these additional requirements are duplicated (for emphasis) in this Annex.

    • -
    • The DT Schema references additional material in this Annex. Such material is normative.

    • -
    • If the DT Schema conflicts with a normative requirement in the main part of the document, this is an error in the DT Schema, and the requirement in the main part of the document takes precedence.

    • -
    -

    B.2.1 Importing DM Instances

    -

    DM Instances are imported using the top-level import element, which differs from the DM Schema import element in that only data types and models can be imported (components cannot be imported because they are not used in DT Instances).

    -

    Note – the rules for importing DM Instances into DT Instances are consistent with those given in A.2.1 for importing DM Instances into other DM Instances. The only difference is an additional rule governing the use, when available, of the DT Instance URL.

    -

    The DT Schema specifies that the DM Instance is located via the file attribute.

    -

    The rules governing the file attribute’s value and its use for locating the DM Instance are as follows:

    -
      -
    • It MUST be a URL adhering to RFC 3986 5.

    • -
    • If the URL includes a scheme, it MUST be http, https or ftp.

    • -
    • If the URL includes an authority, it MUST NOT include credentials.

    • -
    • For standard BBF DM Instances, the rules that apply to the filename part (final path segment) of the A.2.1.1 BBFURL MUST be applied to the filename part of this URL. This means that the corrigendum number can be omitted in order to refer to the latest corrigendum.

    • -
    • If the URL is a relative reference, processing tools MUST apply their own logic, e.g. apply a search path. If a DT Instance URL is available, the relative reference MUST be interpreted relative to the DT Instance URL.

    • -
    -

    B.2.2 Features

    -

    The feature element provides a simple way for a DT Instance to indicate whether a given feature is supported. The current set of standard features is as follows:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FeatureDescription
    DNSClientDevice contains a DNS client.
    DNSServerDevice contains a DNS server.
    FirewallDevice contains a firewall.
    IPv6Device supports IPv6.
    NATDevice supports NAT.
    RouterDevice is a router.
    -

    Vendor-specific features MAY be supported, and if so the feature name MUST begin with X_<VENDOR>_, where <VENDOR> MUST be as defined in Section 3.3.

    -

    This example feature declaration illustrates the use of annotation:

    -
    <feature name="DNSServer">
    -
    -  <annotation>Supports a DNS Server and XYZ.</annotation>
    -
    -</feature>
    -

    B.2.2.1 DT Features Schema

    -

    In order to make it easy to add new features, standard feature names are defined in a separate DT Features Schema that is imported by the DT Schema. The DT Features Schema is unversioned, so the DT Schema need not be changed when new standard feature names are added. In order to preserve backwards compatibility, standard feature names, once added, MUST NOT ever be deleted.

    -

    The normative version of the DT Features Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-devicetype-features.xsd. Please be aware that a new version of the DT Features Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

    -

    B.3 DT Schema

    -

    The normative version of the DT Schema can be found at http://www.broadband-forum.org/cwmp/cwmp-devicetype-1-3.xsd. Please be aware that a new version of the DT Schema might be published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site.

    -

    Annex C - Requirements for BBF Standard Data Models

    -

    C.1 Introduction

    -

    This Annex defines requirements that apply to all standard BBF DM Instances. These requirements extend the normative requirements of the DM Schema (Annex A).

    -

    C.2 Character Encoding and Character Set

    -

    The file MUST use UTF-8 encoding, indicated by the following Initial line:

    -
      <?xml version="1.0" encoding="UTF-8"?>
    -

    The file MUST use only a subset of the printable characters in the Basic Latin Unicode block, namely characters whose decimal ASCII representation is 10 (#xA), 13 (#xD) or is in the (inclusive) range 32-126.

    -

    Note – writing LF (LINE FEED) for #xA and CR (CARRIAGE RETURN) for #xD, section 2.11 of the XML specification 6 states that XML processors have to behave as if all CR LF sequences, or any CR characters not followed by LF, are translated to LF.

    -

    Note – TAB (#x9) is not permitted. This is because no standard indentation level is defined for TAB characters, so the indentation is ambiguous when there is a mixture of SPACE (#x20) and TAB characters.

    -

    Note – it is not permissible to include a non-printable ASCII character by using a character reference such as “&#xe8;”. Such a character reference will always be replaced with the referenced character before being passed to the application, so use of the reference is no different from direct use of the referenced character (in this case the letter “è”, an “e” with a grave accent).

    -

    C.3 XML Usage

    -

    C.3.1 Data Model Item Names

    -

    All data model item names, i.e. data type, component, data model, object, parameter and profile names, MUST start with an upper-case letter (or an underscore for an internal data type, component or model name) and MUST NOT contain hyphens or non-initial underscores.

    -

    C.3.2 DM and DMR Schema Versions

    -

    The file SHOULD use the most recent approved versions of the DM and DMR Schemas.

    -

    Note – the DMR Schema is a non-normative XML Schema that can be used to give hints to processing tools that generate reports from DM Instances.

    -

    C.3.3 SchemaLocation Attribute

    -

    The top-level xsi:schemaLocation attribute defines the location of all of the referenced BBF-published XML Schemas. All URLs MUST be absolute ones that reference the published XML Schema on the BBF web site.

    -

    Example:

    -
    xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-5
    -                      http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-5.xsd
    -                    urn:broadband-forum-org:cwmp:datamodel-report-0-1
    -                      http://www.broadband-forum.org/cwmp/cwmp-datamodel-report.xsd"
    -

    C.3.4 Spec Attribute

    -

    The top-level spec attribute (A.2.1.1) indicates the specification with which the file is associated. It MUST be of the form “urn:broadband-forum-org:tr-nnn-i-a-c”, where nnn is the specification number (including leading zeros), i is the issue number, a is the amendment number, and c is the corrigendum number. The issue, amendment and corrigendum numbers do not include leading zeros. For example, “urn:broadband-forum-org:tr-106-1-0-0” refers to TR-106 (Issue 1 Amendment 0), and “urn:broadband-forum-org:tr-106-1-2-1” refers to TR-106 (Issue 1) Amendment 2 Corrigendum 1.

    -

    Example:

    -
    spec="urn:broadband-forum-org:tr-181-2-5-0"
    -

    C.3.5 File Attribute

    -

    The top-level file attribute (A.2.1.1) indicates the file name. It MUST be of the form “tr-nnn-i-a-c.xml” or “tr-nnn-i-a-c-label.xml”, where nnn, i, a and c are the same as in the spec attribute. The label, which MUST NOT begin with a digit, is only needed if more than one DM Instance is associated with a given specification.

    -

    Example:

    -
    file="tr-181-2-5-0.xml"
    -

    C.3.6 Import Element

    -

    The import element’s spec and file attributes MUST NOT specify the corrigendum number. This means that an import element always references the latest corrigendum (A.2.1.1).

    -

    C.3.7 Bibliography Reference Element

    -

    The bibliography reference id attribute is intended to uniquely identify this reference across all instance documents. Therefore, this attribute MUST obey the following rules:

    -

    For a BBF Technical Report, it MUST be of the form “TR-nnnixaycz”, where TR is the literal “TR”, nnn is the Technical Report number (including leading zeros), i, a and c are literal letters, and x, y, and z are the issue, amendment and corrigendum numbers respectively. The issue number (ix) is omitted if it is issue 1 and the amendment number (ay) is omitted if it is amendment 0. For example, “TR-106a2” refers to TR-106 (Issue 1) Amendment 2. If the corrigendum number (cz) is omitted, the most recent corrigendum is assumed.

    -

    For an IETF RFC, it MUST be of the form “RFCnnn”, where RFC is the literal “RFC” and nnn is the RFC number (no leading zeros).

    -

    For an IEEE specification, it SHOULD be of the form “nnn.ml-dddd”, where nnn.m is the IEEE group, l is the spec letter(s), and dddd is the publication year. For example, “802.1D-2004”.

    -

    For an ETSI specification (which includes DVB specifications), it SHOULD be of the form “TTnnnnnnva.b.c” where TT is the specification type, usually “TS” (Technical Specification), nnnnnn is the specification number, and a.b.c is the version number.

    -

    For specifications issued by other standards organizations, or by vendors, it SHOULD be of a standard form if one is defined.

    -

    Formally, bibliographic reference IDs in instance documents that are published by the BBF and the other organizations mentioned above are defined as follows:

    -
    ReferenceID = BBFID
    -            | RFCID
    -            | IEEEID
    -            | ETSIID
    -            | OtherID
    -
    -BBFID = "TR-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum
    -
    -BBFNumber = DIGIT{3,} // including leading zeros, e.g. 069
    -
    -BBFIssue = "i" <number greater than one>
    -         | "" // empty means Issue 1
    -
    -BBFAmendment = "a" <number greater than zero>
    -             | "" // empty means Amendment 0
    -
    -BBFCorrigendum = "c" <number greater than zero>
    -               | "" // empty means the most recent Corrigendum
    -
    -RFCID = "RFC" RFCNumber
    -
    -RFCNumber = NONZERODIGIT [DIGIT]*
    -                          // no leading zeros, e.g. 123
    -
    -IEEEID = IEEEGroup IEEESpec IEEEDate
    -       | <for other IEEE specifications, of a standard form if one is defined>
    -
    -IEEEGroup = <group number> "." <group sub-number>
    -                            // e.g. 802.1
    -
    -IEEESpec = <spec letter(s)> // e.g. D
    -
    -IEEEDate = "-" <publication year>
    -                            // e.g. -2004
    -         | ""               // can be empty
    -
    -ETSIID = ETSISpecType ETSINumber ETSIVersion
    -       | <for other ETSI specifications, of a standard form if one is defined>
    -
    -ETSISpecType = "TR" // Technical Report
    -             | "TS" // Technical Specification
    -             | "ES" // ETSI Specification
    -             | "EN" // European Standard
    -
    -ETSINumber = [DIGIT]{6} // e.g. 102034
    -
    -ETSIVersion = "v" <version number as specified by ETSI>
    -            | ""            // can be empty
    -
    -OtherURI = <of a standard form if one is defined>
    -

    C.4 General Formatting

    -

    The file MUST use 2 SPACE characters for indentation.

    -

    The file MUST be consistently indented, including within XML comments.

    -

    XML comment lines SHOULD NOT be longer than 79 characters. This avoids line wrap in most text editors.

    -

    All description elements MUST be formatted as follows:

    -
      -
    • Single-line descriptions MAY be indented and formatted on separate lines (as for multi-line descriptions) or inline, as in:

      -

      One line description.

    • -
    • Multi-line descriptions MUST be indented relative to the description element and formatted on separate lines, as in:

      -

      First line of multi-line description. Second line of multi-line description.

    • -
    -

    C.5 Initial XML Comment Formatting

    -

    The Initial Line (the <?xml> line) MUST be immediately followed by an Initial XML comment that consists of the following (separated by blank lines):

    -
      -
    • One-line summary.

    • -
    • Notice section.

    • -
    • Summary section.

    • -
    • Issue History section.

    • -
    -

    The three sections MUST be introduced by a line that consists of two SPACE characters followed by the section name and a colon.

    -
        <?xml version="1.0" encoding="UTF-8"?>
    -    <!--
    -      ...One-line summary...
    -
    -    Notice:
    -      ...standard notice...
    -
    -    Summary:
    -      ...multi-line summary...
    -
    -    Issue History:
    -      ...summary of changes in each approved version...
    -
    -    -->
    -

    C.5.1 One-line Summary

    -

    The One-line summary MUST contain a brief description of the reason for the creation of this version. It SHOULD NOT be terminated with a period (it is not a sentence).

    -

    Example:

    -
        <?xml version="1.0" encoding="UTF-8"?>
    -    <!--
    -      Added support for IPsec
    -

    C.5.2 Summary Section

    -

    The Summary section MAY extend the information in the One-line summary.

    -

    Appendix I - HTML Data Model Reports

    -

    I.1 Introduction

    -

    TR-106 Amendment 2 published the first version of the DM Schema. Since then the normative definitions of all CWMP data models have been published as DM Instances (XML documents that conform to the DM Schema). Since these XML data models might not be easily read by a human, corresponding non-normative HTML data model reports have also been published.

    -

    This appendix briefly discusses these HTML reports.

    -

    I.2 Report Types

    -

    There are two types of HTML reports published for a given version of a data model:

    -
      -
    • a full report, covering the given version and all preceding versions of the data model

    • -
    • a partial report, covering only the given version of the data model (i.e. excluding content specific to earlier versions of the data model); i.e. last only changes

    • -
    -

    For example, TR-181 Issue 2 Amendment 11 defined the Device:2.11 data model revision, declared in tr-181-2-11-0.xml. The full report is in tr-181-2-11-0.html, and includes the aggregate data model definitions from Device:2.11 and earlier (back to Device:2.0 inclusive). The partial report is in tr-181-2-11-0-diffs.html, and only includes the data model definitions added or changed by TR-181 Issue 2 Amendment 11.

    -

    I.3 Report Layout

    -

    Each HTML data model report contains the following sections:

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NoticeThe legal notice, lifted from the top of the associated XML data model file.
    SummaryDescribes the reason for this data model version. This is lifted from the associated XML data model file’s document description.
    Table of ContentsHyperlinks to the various sections within the report, as well as links to each Object and Profile definition within the report.
    Data TypesNamed data type definitions (i.e. not built-in types) that are used to define Parameters within the report. Each data type definition consists of name, type, and description.
    ReferencesHyperlinks to external bibliography references cited by Object, Parameter, and Profile descriptions within the report.
    Data model definitionObject and Parameter definitions. Which Object and Parameter definitions are included depends on whether it is a full or partial (last only) report.
    Inform and Notification RequirementsLists those Parameters within the report that are: forced inform parameters, forced active notification parameters, and parameters for which active notification can be denied.
    Profile DefinitionsProfile definitions, showing Object and Parameter requirements. Which Profiles are included depends on whether it is a full or partial (last only) report.
    -

    I.4 Data Model Definition

    -

    Parameters make use of a limited subset of the default SOAP data types. The notation used to represent these types within the report is listed in the following table.

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDescription
    objectA container for parameters and/or other objects. The full Path Name of a parameter is given by the parameter name appended to the full Path Name of the object it is contained within.
    stringFor strings, a minimum and maximum allowed length can be indicated using the form string(Min:Max), where Min and Max are the minimum and maximum string length in characters. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in string(Max). Multiple comma-separated ranges can be specified, in which case the string length will be in one of the ranges.
    intInteger in the range –2147483648 to +2147483647, inclusive. For some int types, a value range is given using the form int(Min:Max) or int(Min:Max step Step) where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
    longLong integer in the range –9223372036854775808 to 9223372036854775807, inclusive. For some long types, a value range is given using the form long(Min:Max) or long(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
    unsignedIntUnsigned integer in the range 0 to 4294967295, inclusive. For some unsignedInt types, a value range is given using the form unsignedInt(Min:Max) or unsigned(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1.Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
    unsignedLongUnsigned long integer in the range 0 to 18446744073709551615, inclusive. For some unsignedLong types, a value range is given using the form unsignedLong(Min:Max) or unsignedLong(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.
    booleanBoolean, where the allowed values are “0” or “1” (or equivalently, “true” or “false”).
    dateTimeThe subset of the ISO 8601 date-time format defined by the SOAP dateTime type.
    base64Base64 encoded binary (no line-length limitation). A minimum and maximum allowed length can be indicated using the form base64(Min:Max), where Min and Max are the minimum and maximum length in characters before Base64 encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in base64(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges.
    hexBinaryHex encoded binary. A minimum and maximum allowed length can be indicated using the form hexBinary(Min:Max), where Min and Max are the minimum and maximum length in characters before Hex Binary encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in hexBinary(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges.
    -

    Note: A Parameter that is defined to be one of the named data types, is reported as such at the beginning of the Parameter’s description via a reference back to the associated data type definition (e.g. [MacAddress]). However, such parameters still indicate their SOAP data type (as discussed in the table above).

    -

    End of Broadband Forum Technical Report TR-106

    - - diff --git a/specification/index.md b/specification/index.md index 2dd9a51..a3bbfe0 100644 --- a/specification/index.md +++ b/specification/index.md @@ -1,122 +1,265 @@ - -# WT-106 - Data Model Template for CWMP Endpoints and USP Agents - -**Issue:** **1 Amendment 9** - -**Issue Date:** **TBD** **2019** - -**Notice** - -The Broadband Forum is a non-profit corporation organized to create -guidelines for broadband network system development and deployment. This -has been approved by members of the Forum. This is subject to change. -This is copyrighted by the Broadband Forum, and all rights are reserved. -Portions of this may be copyrighted by Broadband Forum members. - -**Intellectual Property** - -Recipients of this are requested to submit, with their comments, -notification of any relevant patent claims or other intellectual -property rights of which they may be aware that might be infringed by -any implementation of this , or use of any software code normatively -referenced in this , and to provide supporting documentation. - -**Terms of Use** - -**1. License** - -Broadband Forum hereby grants you the right, without charge, on a -perpetual, non-exclusive and worldwide basis, to utilize the for the -purpose of developing, making, having made, using, marketing, importing, -offering to sell or license, and selling or licensing, and to otherwise -distribute, products complying with the , in all cases subject to the -conditions set forth in this notice and any relevant patent and other -intellectual property rights of third parties (which may include members -of Broadband Forum). This license grant does not include the right to -sublicense, modify or create derivative works based upon the Technical -Report except to the extent this Technical Report includes text -implementable in computer code, in which case your right under this -License to create and modify derivative works is limited to modifying -and creating derivative works of such code. For the avoidance of doubt, -except as qualified by the preceding sentence, products implementing -this Technical Report are not deemed to be derivative works of the -Technical Report. - -**2. NO WARRANTIES** - -**THIS** **Technical Report IS BEING OFFERED WITHOUT ANY WARRANTY -WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS -EXPRESSLY DISCLAIMED. ANY USE OF THIS** **Technical Report SHALL BE MADE -ENTIRELY AT THE IMPLEMENTER\'S OWN RISK, AND NEITHER THE BROADBAND -FORUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY -WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY -NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF -THIS** **Technical Report.** - -**3. THIRD PARTY RIGHTS** -Without limiting the generality of Section 2 above, BROADBAND FORUM -ASSUMES NO RESPONSIBILITY TO COMPILE, CONFIRM, UPDATE OR MAKE PUBLIC ANY -THIRD PARTY ASSERTIONS OF PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS -THAT MIGHT NOW OR IN THE FUTURE BE INFRINGED BY AN IMPLEMENTATION OF THE -Technical Report IN ITS CURRENT, OR IN ANY FUTURE FORM. IF ANY SUCH -RIGHTS ARE DESCRIBED ON THE Technical Report, BROADBAND FORUM TAKES NO -POSITION AS TO THE VALIDITY OR INVALIDITY OF SUCH ASSERTIONS, OR THAT -ALL SUCH ASSERTIONS THAT HAVE OR MAY BE MADE ARE SO LISTED. - -The text of this notice must be included in all copies of this Technical -Report. - -**\ -** - -**Revision History** - -| Issue Number | Approval Date | Publication Date | Issue Editor | Changes | -|---------------------------|----------------------|--------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Issue 1 | September 2005 | | Jeff Bernstein, 2Wire Christele Bouchat, Alcatel Tim Spets, Westell | Original | -| Issue 1 Amendment 1 | November 2006 | | Jeff Bernstein, 2Wire John Blackford, 2Wire Mike Digdon, SupportSoft Heather Kirksey, Motive William Lupton, 2Wire Anton Okmianski, Cisco | Clarification of original document | -| Issue 1 Amendment 2 | November 2008 | | William Lupton, 2Wire Håkan Westin, Tilgin | Addition of data model definition XML Schema and normative XML common object and component definitions | -| Issue 1 Amendment 3 | September 2009 | | William Lupton, 2Wire Håkan Westin, Tilgin | Addition of device type XML Schema | -| Issue 1 Amendment 4 | February 2010 | | William Lupton, 2Wire Paul Sigurdson, Broadband Forum | Moved data model definitions to TR-181 Issue 1 | -| Issue 1 Amendment 5 | November 2010 | | Paul Sigurdson, Broadband Forum | Replaced definitions of named data types such as IPAddress with references to normative XML. Minor changes to DM Schema (v1.3) and DT Schema (v1.1). | -| Issue 1 Amendment 6 | July 2011 | | Sarah Banks, Cisco Andrea Colmegna, FASTWEB Tim Spets, Motorola Mobility | Removed definition of proxying, now defined in TR-069. Removed Common objects. Alias Parameter Requirements added. | - -Comments or questions about this Broadband Forum should be directed to -. - -**Editors** - -William Lupton, Broadband Forum - -Jean-Didier Ott, Orange - -**Broadband User Services Work Area Directors** - -Jason Walls, QA Cafe - -John Blackford, Arris - -**Executive Summary** - -TR-106 specifies data model guidelines to be followed by all CWMP 2 -Endpoints and USP 13 Agents. These guidelines include structural +--- +# BBF-specific metadata; c.f. Word properties +bbfNumber: TR-106 +bbfTitle: Data Model Template for CWMP Endpoints and USP Agents +bbfIssue: Issue +bbfVersion: 1 Amendment 10 +bbfMonth: November +bbfYear: 2020 +bbfType: Technical Report +bbfStatus: +bbfContrib: + +# information shown on each page header +tagline: How to use the data model schema + +# navigation buttons shown on each page header +buttons: +- label: CWMP + url: https://www.broadband-forum.org/technical/download/TR-069.pdf +- label: CWMP Data Models + url: https://cwmp-data-models.broadband-forum.org +- label: USP + url: https://usp.technology +- label: USP Data Models + url: https://usp-data-models.broadband-forum.org +- label: HTML + url: index.htm +- label: PDF + url: index.pdf + +# don't display these in the banner +version: '' +status: '' + +# div templates +bbfRevisionHistory: + +- number: Issue 1 + approval: September 2005 + editors: | + Jeff Bernstein, 2Wire \ + Christele Bouchat, Alcatel \ + Tim Spets, Westell + changes: Original + +- number: Issue 1 Amendment 1 + approval: November 2006 + editors: | + Jeff Bernstein, 2Wire \ + John Blackford, 2Wire \ + Mike Digdon, SupportSoft \ + Heather Kirksey, Motive \ + William Lupton, 2Wire \ + Anton Okmianski, Cisco + changes: Clarification of original document + +- number: Issue 1 Amendment 2 + approval: November 2008 + editors: | + William Lupton, 2Wire \ + Håkan Westin, Tilgin + changes: Addition of data model definition XML Schema and normative + XML common object and component definitions + +- number: Issue 1 Amendment 3 + approval: September 2009 + editors: | + William Lupton, 2Wire \ + Håkan Westin, Tilgin + changes: Addition of device type XML Schema + +- number: Issue 1 Amendment 4 + approval: February 2010 + editors: | + William Lupton, 2Wire \ + Paul Sigurdson, Broadband Forum + changes: Moved data model definitions to TR-181 Issue 1 + +- number: Issue 1 Amendment 5 + approval: November 2010 + editors: Paul Sigurdson, Broadband Forum + changes: | + Replaced definitions of named data types such as IPAddress with + references to normative XML. \ + Minor changes to DM Schema (v1.3) and DT Schema (v1.1). + +- number: Issue 1 Amendment 6 + approval: July 2011 + editors: | + Sarah Banks, Cisco \ + Andrea Colmegna, FASTWEB \ + Tim Spets, Motorola Mobility + changes: | + Removed definition of proxying, now defined in TR-069. \ + Removed Common objects.\ + Alias Parameter Requirements added. + +- number: Issue 1 Amendment 7 + approval: September 2013 + publication: 7 October 2013 + editors: William Lupton, Cisco + changes: | + Added descriptions of new features in DM Schema (v1.4 & v1.5) and DT + Schema (v1.2 & v1.3). \ + Added Annex defining additional requirements for BBF standard data + models. + +- number: Issue 1 Amendment 8 + approval: 16 March 2018 + publication: 10 May 2018 + editors: | + Jean-Didier Ott, Orange \ + William Lupton, Broadband Forum + changes: | + Added support of USP (mountable objects). \ + Removed references to obsolete data models. \ + Moved device requirements to TR-069. + +- number: Issue 1 Amendment 9 + changes: | + Schema updates; document not updated. + +- number: Issue 1 Amendment 10 + approval: 5 November 2020 + publication: 5 November 2020 + editors: | + William Lupton, Broadband Forum + changes: | + Converted document to markdown. \ + Various editorial improvements. + +bbfEditors: +- William Lupton, Broadband Forum + +# this shows how to override a div template spec (to add BUS) +bbfWADsSpec: + title: | + ### Broadband User Services Work Area Director(s) {.unnumbered .unlisted} + +bbfWADs: +- Jason Walls, QA Cafe +- John Blackford, CommScope + +# these references assume use of bbf.csl; please follow the existing style +references: + +- id: RFC2119 + call-number: RFC 2119 + title: Key words for use in RFCs to Indicate Requirement Levels + publisher: IETF + issued: {year: 1997} + URL: https://tools.ietf.org/html/rfc2119 + +- id: RFC2648 + call-number: RFC 2648 + title: A URN Namespace for IETF Documents + publisher: IETF + issued: {year: 1999} + URL: https://tools.ietf.org/html/rfc2648 + +- id: RFC3986 + call-number: RFC 3986 + title: 'Uniform Resource Identifier (URI): Generic Syntax' + publisher: IETF + issued: {year: 2005} + URL: https://tools.ietf.org/html/rfc3986 + +- id: TR-069 + call-number: TR-069 Amendment 6 + title: CPE WAN Management Protocol + publisher: Broadband Forum + issued: {year: 2018} + URL: https://www.broadband-forum.org/technical/download/TR-069.pdf + +- id: TR-140 + call-number: TR-140 Amendment 3 + title: TR-069 Data Model for Storage Service Enabled Devices + publisher: Broadband Forum + issued: {year: 2017} + URL: https://www.broadband-forum.org/technical/download/TR-140.pdf + +- id: TR-143 + call-number: TR-143 Amendment 1 Corrigendum 1 + title: Enabling Network Throughput Performance Tests and Statistical Monitoring + publisher: Broadband Forum + issued: {year: 2015} + URL: https://www.broadband-forum.org/technical/download/TR-143.pdf + +- id: TR-181i2 + call-number: TR-181 Issue 2 Amendment 12 + title: Device Data Model for TR-069 + publisher: Broadband Forum + issued: {year: 2018} + URL: https://www.broadband-forum.org/technical/download/TR-181_Issue-2.pdf + +- id: TR-369 + call-number: TR-369 + title: User Services Platform + issued: {year: 2018} + URL: https://www.broadband-forum.org/technical/download/TR-369.pdf + +- id: OUI + title: Organizationally Unique Identifiers (OUIs) + publisher: IEEE + URL: https://standards.ieee.org/faqs/OUI.html + +- id: SOAP + title: Simple Object Access Protocol (SOAP) 1.1 + publisher: W3C + issued: {year: 2000} + URL: https://www.w3.org/TR/2000/NOTE-SOAP-20000508 + +- id: XML + title: Extensible Markup Language (XML) 1.0 (Fourth Edition) + publisher: W3C + issued: {year: 2008} + URL: https://www.w3.org/TR/REC-xml + +- id: XML-Schema-Primer + title: 'XML Schema Part 0: Primer Second Edition' + publisher: W3C + issued: {year: 2004} + URL: https://www.w3.org/TR/xmlschema-0 + +- id: XML-Schema-Datatypes + title: 'XML Schema Part 2: Datatypes Second Edition' + publisher: W3C + issued: {year: 2004} + URL: https://www.w3.org/TR/xmlschema-2 + +# end of metadata +--- + +!include cover-page.md + +!include tr-notice.md + +!include front-matter.md + +# Executive Summary {.unnumbered .unlisted .new-page} + +%bbfNumber% specifies data model guidelines to be followed by all CWMP [@TR-069] +Endpoints and USP [@TR-369] Agents. These guidelines include structural requirements for the data hierarchy, requirements for versioning of data models, and requirements for defining profiles. -In addition, TR-106 defines an XML Schema that as far as possible +In addition, %bbfNumber% defines an XML Schema that as far as possible embodies these guidelines, and which is used for defining all CWMP and USP data models. This makes data model definitions rigorous, and helps to reduce the danger that different implementations will interpret data model definitions in different ways. -TR-106 also defines an XML Schema that allows a device to describe its +%bbfNumber% also defines an XML Schema that allows a device to describe its supported CWMP data models. This description is both specific and detailed, allowing a Controller to know exactly what is supported by the device, including any vendor-specific objects and parameters. Use of this Schema enhances interoperability and significantly eases the integration of new devices with a Controller. USP uses a different mechanism (GetSupportedDM message) for the same purpose. That mechanism -is specified in TR-369 13. +is specified in TR-369 [@TR-369]. + +::: note **Important warning** @@ -130,11 +273,13 @@ Amendment 7. TR-157 data models Components have been incorporated into Device:2.12. TR-157 is therefore also DEPRECATED. -## 1 Introduction +::: + +# Introduction **CWMP** -TR-069 defines the generic requirements of the CPE WAN Manage­ment +TR-069 [@TR-069] defines the generic requirements of the CPE WAN Management Protocol (CWMP) methods which can be applied to any CWMP Endpoint. It is intended to support a variety of different functionalities to manage a collection of CPE, including the following primary capabilities: @@ -155,9 +300,7 @@ services, and improving the user experience. The following figure places TR-069 in the end-to-end management architecture: -![](./figure-1.png) - -Figure 1 - CWMP Positioning in the End-to-End Architecture +![CWMP Positioning in the End-to-End Architecture](images/figure-1.png){#fig:cwmp-positioning} The ACS is a server that resides in the network and manages devices in the subscriber premises. It uses the methods, or RPCs, defined in TR-069 @@ -168,7 +311,7 @@ certain device types or services. **USP** -The [User Services Platform](http://usp.technology/) is made of a network +The [User Services Platform](http://usp.technology) is made of a network of USP Controllers and USP Agents to allow applications to manipulate service elements (i.e. objects). It represents the evolution of CWMP into the following use cases: @@ -188,9 +331,7 @@ in the cloud, on a gateway, or accessed through a smart phone. Agents and controllers can also be used in tandem to create a peer-to-peer network of smart applications, such as an automated smart home. -![](./figure-2.png) - -Figure 2 - USP Architecture Overview +![USP Architecture Overview](images/figure-2.png){#fig:usp-architecture} USP was designed in a modular manner, and can make use of the CWMP data model and data model schema in order to represent an evolution of CWMP @@ -200,17 +341,14 @@ model schema in both the context of CWMP and USP. **Specification Structure** -Figure 3 shows the overall specification structure for the CWMP 2 -and USP 13 family of standards (as currently defined). Please note -that this will gradually become out of date as new documents are -published. - -![](./figure-3.png) +@fig:spec-structure shows the overall specification structure for the CWMP [@TR-069] and +USP [@TR-369] family of standards (as currently defined). Please note that +this will gradually become out of date as new documents are published. -Figure 3 - Specification Structure +![Specification Structure](images/figure-3.png){#fig:spec-structure} -TR-069 2 defines the generic requirements of the CWMP methods which -can be applied to any CWMP Endpoint. TR-369 13 does the same for USP +TR-069 [@TR-069] defines the generic requirements of the CWMP methods which +can be applied to any CWMP Endpoint. TR-369 [@TR-369] does the same for USP Agents. TR-106 (this document) specifies a baseline object structure to be supported by any CWMP Endpoint or USP Agent (referred to generically as an *Agent*). It specifies how to structure and define data models, @@ -220,7 +358,7 @@ devices and services. The actual data models are defined in their own specifications. For a particular type of device, it is expected that the baseline -defined in a document such as TR-181i2 10 would be augmented with +defined in a document such as TR-181i2 [@TR-181i2] would be augmented with additional objects and parameters specific to the device type. The data model used in any Agent MUST follow the guidelines described in this document. These guidelines include the following aspects: @@ -247,105 +385,67 @@ In addition, this document defines two XML Schemas: integration of new devices with an ACS. Please note that USP uses a different mechanism (GetSupportedDM - message) for the same purpose. It is specified in TR-369 13. - -## 1.1 Terminology - -The following terminology is used throughout this Technical Report. - - **ACS** Auto-Configuration Server. This is a component in the broadband network responsible for *CWMP* auto-configuration of the *CPE* for advanced services. - - **Agent** A generic term that refers (as appropriate) to either a *CWMP Endpoint* or to a *USP Agent*. - - **BBF** The Broadband Forum. - - **Base Supported Data Model** The *Data Model* that is supported by all *CPE* of a given make, model and firmware version. This refers to the *Objects,* *Parameters, Commands* and/or *Events* that have code support in the current firmware. - - **CPE** Customer Premises Equipment; refers (as appropriate) to any *CWMP*-enabled 2 or *USP*-enabled 13 device and therefore covers both Internet Gateway devices and LAN-side end devices. - - **Command** A named element allowing a *USP Controller* to execute an operation on a *USP Agent*. This concept does not apply to *CWMP*, which uses *Objects* and/or *Parameters* to simulate operations. - - **Component** A named collection of *Objects,* *Parameters, Commands, Events* and/or *Profiles* that can be included anywhere within a *Data Model*. - - **Controller** A generic term that refers (as appropriate) to either a *CWMP ACS* or a *USP Controller*. - - **Current Supported Data Model** The *Data Model* that is currently supported by an individual *CPE*, i.e. the *Base Supp­ort­ed Data Model* plus any additional *Objects*, *Parameters*, *Commands* and/or *Events* supported by extra mod­ules that have been installed on the *CPE*. This refers to the *Objects*, *Parameters,* *Commands* and/or *Events* that have code support in the *CPE*. - - **CWMP** *CPE* WAN Management Protocol. Defined in TR-069 2, CWMP is a communication protocol between an *ACS* and CWMP-enabled *CPE* that defines a mechanism for secure auto-configuration of a *CPE* and other *CPE* management functions in a common framework. - - **CWMP Endpoint** A *CWMP* termination point used by a CWMP-enabled *CPE* for communication with the *ACS.* - - **Data Model** A hierarchical set of *Objects*, *Parameters*, *Commands* and/or *Events* that define the managed *Objects* access­ible via a particular *Agent*. - - **Device** Used here as a synonym for *CPE*. - - **DM Instance** Data Model Schema instance document. This is an XML document that conforms to the *DM Schema* and to any additional rules specified in or referenced by the *DM Schema*. - - **DM Schema** Data Model Schema. This is the XML Schema 9 that is used for defining data models for use with *CWMP* and *USP*. - - **DT Instance** Device Type Schema instance document. This is an XML document that conforms to the *DT Schema* and to any additional rules specified in or referenced by the *DT Schema*. *This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section* *2.1.2).* - - **DT Schema** Device Type Schema. This is the XML Schema 9 that is used for describing a *Device*'s *Supported Data Model*. *This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see Section* *2.1.2).* - - **Event** An indication that something of interest has happened that requires the *Agent* to notify the *Controller*. - - **Instantiated Data Model** The *Data Model* that currently exists on an individual *CPE*. This refers to the *Object* instances, *Para­met­ers*, *Commands* and/or *Events* that currently exist within the data model. It can be thought of as the *Current Supported Data Model* with all the "{i}" placeholders expanded to be the actual *Instance Numbers*. For example, "Device.Services.ABCService.{i}." in the *Current Supported Data Model* might correspond to "Device.Services.ABCService.1." and "Device.­Services.­ABC­Serv­ice.­2." in the *Instantiated Data Model*. - - **Instance Alias** A writeable string that uniquely identifies an instance within a *Multi-Instance Object* - - **Instance Identifier** A value that uniquely identifies an instance within a *Multi-Instance Object*. It is either an *Instance Number* or an *Instance Alias*. - - **Instance Number** A read-only positive integer (\>=1) that uniquely identifies an instance within a *Multi-Instance Object.* - - **Mountable Object** An *Object* that is defined in a *DM Instance* as a direct child of the *Root Object*, but that can also exist as a child of a *Mount Point* in the *Instantiated Data Model* of a *USP Agent*. This concept does not apply to *CWMP*. - - **Mount Point** An *Object* that is defined in a *DM Instance* as being able to have *Mountable Objects* as children in the *Instantiated Data Model* of a *USP Agent*. By extension, one of the instances of that object in the *Instantiated Data Model*. This concept does not apply to *CWMP*. - - **Multi-Instance Object** An *Object* that can have multiple instances, all of which are located at the same level within the name hierarchy. Each instance is identified by an *Instance Identifier*. - - **Object** An internal node in the name hierarchy, i.e., a node that can have *Object*, *Parameter*, *Command* and/or *Event* children. An *Object* name is a *Path Name*. - - **Parameter** A name-value pair that represents part of a *CPE* or *USP Agent*'s configuration or status. A Parameter name is a *Path Name*. - - **Path Name** A name that has a hierarchical structure similar to files in a directory, with each level separated by a "." (dot). References an *Object*, *Parameter,* *Command* or *Event*. - - **Profile** A named collection of requirements relating to a given *Root Object*, *Service Object* or *Component*. - - **RPC** Remote Procedure Call. - - **Root Object** The top-level *Object* of a *CPE*'s *Data Model* that contains all of the manageable *Objects*. The name of the Root *Object* is "Device.". - - **Service Element** A Service Element represents a piece of service functionality that is exposed by an Agent, usually represented by one or more Objects. - - **Service Object** The top-most *Object* associated with a specific service within which all *Objects*, *Parameters,* *Commands* and *Events* associated with the service are contained. - - **Supported Data Model** Refers to either *Base Supported Data Model* or *Current Supported Data Model*, depending on the context. - - **URI** Uniform Resource Identifier. - - **URL** Uniform Resource Locator. - - **USP** Universal Service Platform. Defined in TR-369, USP is an evolution of CWMP that allows applications to manipulate Service Elements in a network of Controllers and Agents. - - **USP Agent** A USP Agent is a USP Endpoint that exposes Service Elements to one or more USP Controllers. - - **USP Controller** A USP Controller is a USP Endpoint that manipulates Service Elements through one or more USP Agents. - - **USP Endpoint** A USP Endpoint is a termination point for a USP message. - - -## 1.2 Document Conventions + message) for the same purpose. It is specified in TR-369 [@TR-369]. + +## Terminology + +The following terminology is used throughout this %bbfType%. + +| | +|------------------------------------|--------------------------------------------------------------------------------------------------------------- +| **ACS** | Auto-Configuration Server. This is a component in the broadband network responsible for *CWMP* auto-configuration of the *CPE* for advanced services. +| **Agent** | A generic term that refers (as appropriate) to either a *CWMP Endpoint* or to a *USP Agent*. +| **BBF** | The Broadband Forum. +| **Base Supported Data Model** | The *Data Model* that is supported by all *CPE* of a given make, model and firmware version. This refers to the *Objects,* *Parameters, Commands* and/or *Events* that have code support in the current firmware. +| **CPE** | Customer Premises Equipment; refers (as appropriate) to any *CWMP*-enabled [@TR-069] or *USP*-enabled [@TR-369] device and therefore covers both Internet Gateway devices and LAN-side end devices. +| **Command** | A named element allowing a *USP Controller* to execute an operation on a *USP Agent*. This concept does not apply to *CWMP*, which uses *Objects* and/or *Parameters* to simulate operations. +| **Component** | A named collection of *Objects,* *Parameters, Commands, Events* and/or *Profiles* that can be included anywhere within a *Data Model*. +| **Controller** | A generic term that refers (as appropriate) to either a *CWMP ACS* or a *USP Controller*. +| **Current Supported Data Model** | The *Data Model* that is currently supported by an individual *CPE*, i.e. the *Base Supported Data Model* plus any additional *Objects*, *Parameters*, *Commands* and/or *Events* supported by extra modules that have been installed on the *CPE*. This refers to the *Objects*, *Parameters,* *Commands* and/or *Events* that have code support in the *CPE*. +| **CWMP** |*CPE* WAN Management Protocol. Defined in TR-069 [@TR-069], CWMP is a communication protocol between an *ACS* and CWMP-enabled *CPE* that defines a mechanism for secure auto-configuration of a *CPE* and other *CPE* management functions in a common framework. +| **CWMP Endpoint** | A *CWMP* termination point used by a CWMP-enabled *CPE* for communication with the *ACS.* +| **Data Model** | A hierarchical set of *Objects*, *Parameters*, *Commands* and/or *Events* that define the managed *Objects* accessible via a particular *Agent*. +| **Device** | Used here as a synonym for *CPE*. +| **DM Instance** | Data Model Schema instance document. This is an XML document that conforms to the *DM Schema* and to any additional rules specified in or referenced by the *DM Schema*. +| **DM Schema** | Data Model Schema. This is the XML Schema [@XML-Schema-Primer] that is used for defining data models for use with *CWMP* and *USP*. +| **DT Instance** | Device Type Schema instance document. This is an XML document that conforms to the *DT Schema* and to any additional rules specified in or referenced by the *DT Schema*. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see @sec:the-supported-data-model-and-the-instantiated-data-model). +| **DT Schema** | Device Type Schema. This is the XML Schema [@XML-Schema-Primer] that is used for describing a *Device*'s *Supported Data Model*. This concept is useful for both CWMP and USP as an offline design tool, but only CWMP uses it at run-time (via the SupportedDataModel Object; see @sec:the-supported-data-model-and-the-instantiated-data-model). +| **Event** | An indication that something of interest has happened that requires the *Agent* to notify the *Controller*. +| **Instantiated Data Model** | The *Data Model* that currently exists on an individual *CPE*. This refers to the *Object* instances, *Parameters*, *Commands* and/or *Events* that currently exist within the data model. It can be thought of as the *Current Supported Data Model* with all the "{i}" placeholders expanded to be the actual *Instance Numbers*. For example, "Device.Services.ABCService.{i}." in the *Current Supported Data Model* might correspond to "Device.Services.ABCService.1." and "Device.Services.ABCService.2." in the *Instantiated Data Model*. +| **Instance Alias** | A writeable string that uniquely identifies an instance within a *Multi-Instance Object* +| **Instance Identifier** | A value that uniquely identifies an instance within a *Multi-Instance Object*. It is either an *Instance Number* or an *Instance Alias*. +| **Instance Number** | A read-only positive integer (\>=1) that uniquely identifies an instance within a *Multi-Instance Object.* +| **Mountable Object** | An *Object* that is defined in a *DM Instance* as a direct child of the *Root Object*, but that can also exist as a child of a *Mount Point* in the *Instantiated Data Model* of a *USP Agent*. This concept does not apply to *CWMP*. +| **Mount Point** | An *Object* that is defined in a *DM Instance* as being able to have *Mountable Objects* as children in the *Instantiated Data Model* of a *USP Agent*. By extension, one of the instances of that object in the *Instantiated Data Model*. This concept does not apply to *CWMP*. +| **Multi-Instance Object** | An *Object* that can have multiple instances, all of which are located at the same level within the name hierarchy. Each instance is identified by an *Instance Identifier*. +| **Object** | An internal node in the name hierarchy, i.e., a node that can have *Object*, *Parameter*, *Command* and/or *Event* children. An *Object* name is a *Path Name*. +| **Parameter** | A name-value pair that represents part of a *CPE* or *USP Agent*'s configuration or status. A Parameter name is a *Path Name*. +| **Path Name** | A name that has a hierarchical structure similar to files in a directory, with each level separated by a "." (dot). References an *Object*, *Parameter,* *Command* or *Event*. +| **Profile** | A named collection of requirements relating to a given *Root Object*, *Service Object* or *Component*. +| **RPC** | Remote Procedure Call. +| **Root Object** | The top-level *Object* of a *CPE*'s *Data Model* that contains all of the manageable *Objects*. The name of the Root *Object* is "Device.". +| **Service Element** | A Service Element represents a piece of service functionality that is exposed by an Agent, usually represented by one or more Objects. +| **Service Object** | The top-most *Object* associated with a specific service within which all *Objects*, *Parameters,* *Commands* and *Events* associated with the service are contained. +| **Supported Data Model** | Refers to either *Base Supported Data Model* or *Current Supported Data Model*, depending on the context. +| **URI** | Uniform Resource Identifier. +| **URL** | Uniform Resource Locator. +| **USP** | Universal Service Platform. Defined in TR-369, USP is an evolution of CWMP that allows applications to manipulate Service Elements in a network of Controllers and Agents. +| **USP Agent** | A USP Agent is a USP Endpoint that exposes Service Elements to one or more USP Controllers. +| **USP Controller** | A USP Controller is a USP Endpoint that manipulates Service Elements through one or more USP Agents. +| **USP Endpoint** | A USP Endpoint is a termination point for a USP message. + +## Document Conventions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and -"OPTIONAL" in this document are to be interpreted as described in 1. +"OPTIONAL" in this document are to be interpreted as described in [@RFC2119]. -# 2 Architecture +# Architecture All elements described hereunder apply to both CWMP and USP, unless specifically mentioned otherwise. -## 2.1 Data Hierarchy +## Data Hierarchy The data model for a Agent will follow a common set of structural requirements. The detailed structure depends on the nature of the Agent. @@ -354,8 +454,8 @@ An Agent's data model will always have a single Root Object, which will be called "Device.". The Root Object contains three types of sub-elements: the Objects -defined in TR-181i2 10, Components defined in TR-181i2 or other -specifications such as TR-143 8, and a single "Services" object that +defined in TR-181i2 [@TR-181i2], Components defined in TR-181i2 or other +specifications such as TR-143 [@TR-143], and a single "Services" object that contains all Service Objects associated with specific services. A single Agent might include more than one Service Object. For example, @@ -364,10 +464,10 @@ include both VoIP-specific and game-specific Service Objects. A single Agent might also include more than one instance of the same type of Service Object. An example of when this might be appropriate is -an Agent that provides an instance of the TR-140 12 StorageService +an Agent that provides an instance of the TR-140 [@TR-140] StorageService for each of the device's attached disks. -### 2.1.1 Data Hierarchy Requirements +### Data Hierarchy Requirements A CWMP or USP data model MUST adhere to the following structural requirements: @@ -390,18 +490,19 @@ requirements: Formally, the top level of the data hierarchy is defined as follows: - +``` Element = "Device" | "Device." TR-181DeviceObject | "Device.Services." ServiceObject "NumberOfEntries" | "Device.Services." ServiceObject ".{i}" - TR-181DeviceObject = // As defined in TR-181i2 10, e.g. "UserInterface" or "ManagementServer" + TR-181DeviceObject = // As defined in TR-181i2, e.g. "UserInterface" or "ManagementServer" - ServiceObject = // As defined in other specs, e.g. TR-140 12 + ServiceObject = // As defined in other specs, e.g. TR-140 +``` -### 2.1.2 The Supported Data Model and the Instantiated Data Model +### The Supported Data Model and the Instantiated Data Model There is a distinction between an Agent's Supported Data Model and its Instantiated Data Model. @@ -412,11 +513,11 @@ Instantiated Data Model. - The Instantiated Data Model is those Object instances and/or Parameters that currently exist. -TR-181i2 10 defines a SupportedDataModel Object that allows an Agent +TR-181i2 [@TR-181i2] defines a SupportedDataModel Object that allows an Agent to indicate its Supported Data Model to a Controller, which assists the Controller in managing that device. -The Supported­Data­Model object has the following properties: +The SupportedDataModel object has the following properties: 1) It contains a list of URLs, each of which allows the Controller to determine details of part of the Supported Data Model. @@ -425,10 +526,11 @@ The Supported­Data­Model object has the following properties: loaded or unloaded, entries are added to or removed from this list of URLs. -This object is not used with USP. TR-369 13 defines the +This object is not used with USP. TR-369 [@TR-369] defines the GetSupportedDM message to provide this information. -## 2.2 Object Versioning + +## Object Versioning To allow the definition of a Service Object or Root Object to change over time, the definition of a Service Object or Root Object MUST have @@ -448,14 +550,14 @@ compatible with the previous version, then the major version SHOULD remain unchanged, and the minor version SHOULD be incremented by one. For example, the next compatible version after "2.17" would be "2.18". The requirements for a version to be considered compatible with an -earlier version are described in Section 2.2.1. +earlier version are described in @sec:requirements-for-compatible-versions. For each subsequent version of the object, if the later version is not compatible with the previous version, then the major version MUST increment by one, and the minor version MAY reset back to zero. For example, the next incompatible version after "2.17" might be "3.0". -### 2.2.1 Requirements for Compatible Versions +### Requirements for Compatible Versions For one version of an object to be considered compatible with another version, the later version MUST be a strict superset of the earlier @@ -497,32 +599,41 @@ Specifically that: later version (without support for new components defined only in later versions). -### 2.2.2 Version Notation +### Version Notation For objects, the following notation is defined to identify specific versions: -| Notation | Description | Example | -|------------------------------|-------------------------------------------------------------------------------------|------------------| -| ObjectName:Major.Minor | Refers to a specific version of the object. | Device:2.0 | -| ObjectName:Major | Refers to any minor version of the object with the specified major version. | Device:2 | -| ObjectName | Refers to any version of the object. | Device | +------------------------------------------------------------------------- +Notation Description Example +---------------------- ------------------------------------- ------------ +ObjectName:Major.Minor Refers to a specific Device:2.0 + version of the object. + +ObjectName:Major Refers to any minor version Device:2 + of the object with the specified + major version. + +ObjectName Refers to any version of the object. Device + +------------------------------------------------------------------------- Note that the version notation defined here is *only* to be used for purposes of documentation. The actual names of objects and parameters in the data model MUST NOT include version numbers. -## 2.3 Profiles + +## Profiles Note: Originally, profiles were seen as a means of limiting the variability that a Controller needs to accommodate among various devices that it might manage. This feature is now provided: -- For CWMP, by the TR-181i2 10 SupportedDataModel object (see - Section 2.1.2) and associated Device Type XML documents (DT +- For CWMP, by the TR-181i2 [@TR-181i2] SupportedDataModel object (see + @sec:the-supported-data-model-and-the-instantiated-data-model) and associated Device Type XML documents (DT Instances). -- For USP, by the TR-369 13 GetSupportedDM message. +- For USP, by the TR-369 [@TR-369] GetSupportedDM message. A profile is a named collection of requirements associated with a given object. An Agent can adhere to zero or more profiles. Adherence to a @@ -533,7 +644,7 @@ means of specifying data model support requirements. The following sections define the conventions to be used when defining profiles associated with Data Models. -### 2.3.1 Scope of Profiles +### Scope of Profiles A given profile is defined only in the context of a specific Service Object or Root Object with a specific major version. For each profile @@ -553,13 +664,13 @@ minimum version that includes all of the REQUIRED elements defined by the profile. For each profile definition, the specific minimum version MUST be explicitly identified. -### 2.3.2 Multiple Profile Support +### Multiple Profile Support For a given type of Service Object or Root Object, multiple profiles MAY be defined. Profiles MAY be defined that have either independent or overlapping requirements. -### 2.3.3 Profile Versions +### Profile Versions To allow the definition of a profile to change over time, the definition of every profile MUST have an associated version number. @@ -585,32 +696,35 @@ to all earlier versions to which it is to be compatible: For profiles, the following notation is defined to identify specific versions: -| Notation | Description | Example | -|---------------------|----------------------------------------------|------------| -| ProfileName:Version | Refers to a specific version of the profile. | Baseline:1 | -| ProfileName | Refers to any version of the profile. | Baseline | +------------------------------------------------------------------------- +Notation Description Example +---------------------- ------------------------------------- ------------ +ProfileName:Version Refers to a specific version of the Baseline:1 + profile. + +ProfileName Refers to any version of the profile. Baseline +------------------------------------------------------------------------- ProfileName MUST start with a letter or underscore, and subsequent characters MUST be letters, digits, underscores or hyphens. The terms -"letter" and "digit" are as defined in Appendix B of the XML -specification 6. +"letter" and "digit" are as defined in the XML +specification [@XML, {Appendix B}]. Hyphens can easily be confused with the discretionary hyphens that are sometimes inserted by hyphenation algorithms. For this reason, -ProfileName SHOULD NOT include any hyphens. Additionally, ProfileName -SHOULD NOT start with an underscore. In BBF standards, ProfileName will -always start with an upper-case letter and will never include any -hyphens or underscores (see C.3.1 for the corresponding normative +ProfileName SHOULD NOT include any hyphens. In BBF standards, ProfileName will +always start with an upper-case letter (or an underscore for an internal profile) and will never include any +hyphens (see @sec:data-model-item-names for the corresponding normative requirement). -### 2.3.4 Baseline Profiles +### Baseline Profiles For every Service Object (and Root Object) there SHOULD be at least one profile defined. In many cases it is desirable to define a Baseline profile that indicates the minimum requirements REQUIRED for any device that supports that Object. -### 2.3.5 Types of Requirements in a Profile +### Types of Requirements in a Profile Because a profile is defined within the context of a single Object (and major version), all of the requirements associated with the profile MUST @@ -650,7 +764,7 @@ MUST NOT specify negative requirements. That is, profiles will not include requirements that specify something that is not to be supported by the device, or requirements that exclude a range of values. -## 2.4 DEPRECATED and OBSOLETED Items +## DEPRECATED and OBSOLETED Items The key word "DEPRECATED" in a data model definition is to be interpreted as follows: This term refers to an object, parameter or @@ -674,7 +788,7 @@ parameters or parameter values are given below. For more information on how to interpret or implement specific obsoleted objects, parameters or parameter values, refer to the definition of the object or parameter. -### 2.4.1 Requirements for DEPRECATED Items +### Requirements for DEPRECATED Items This section defines requirements that apply to all DEPRECATED objects, parameters and parameter values unless specifically overridden by the @@ -688,8 +802,8 @@ Data model requirements: 2) The definition of a DEPRECATED parameter, object or parameter value MAY specify further requirements relating to the item; such requirements MAY override general Agent or Controller requirements - regarding DEPRECATED elements specified in TR-069 2 or TR-369 - 13. + regarding DEPRECATED elements specified in TR-069 [@TR-069] or TR-369 + [@TR-369]. Agent requirements: @@ -732,7 +846,7 @@ Controller requirements: 4) The Controller SHOULD NOT set any parameter to a DEPRECATED value. -### 2.4.2 Requirements for OBSOLETED Items +### Requirements for OBSOLETED Items This section defines requirements that apply to all OBSOLETED objects, parameters or parameter values unless specifically overridden by the @@ -756,9 +870,9 @@ requirements apply. the data model or from its profiles. This is to prevent future namespace conflicts. -# 3 Object Definitions +# Object Definitions -## 3.1 General Notation +## General Notation Parameter names use a hierarchical form similar to a directory tree. The name of a particular Parameter is represented by the concatenation of @@ -770,8 +884,8 @@ hierarchy, the trailing "." (dot) is always used as the last character. Parameter names MUST be treated as case sensitive. The name of each node in the hierarchy MUST start with a letter or underscore, and subsequent characters MUST be letters, digits, underscores or hyphens. The terms -"letter" and "digit" are as defined in Appendix B of the XML -specification 6. +"letter" and "digit" are as defined in the XML +specification [@XML, {Appendix B}]. Hyphens can easily be confused with the discretionary hyphens that are sometimes inserted by hyphenation algorithms. For this reason, the names @@ -779,17 +893,17 @@ of nodes in the hierarchy SHOULD NOT include any hyphens. Additionally, the names of nodes in the hierarchy SHOULD NOT start with underscores. In BBF standards, the names of nodes in the hierarchy always start with an upper-case letter and never include any hyphens or underscores (see -C.3.1 for the corresponding normative requirement). +@sec:data-model-item-names for the corresponding normative requirement). Where multiple instances of an object can occur, the placeholder node name {i} is shown. In actual use, this placeholder is to be replaced by an Instance Identifier. -## 3.2 Data Types and Representation +## Data Types and Representation Parameters make use of a limited subset of the default SOAP data types. The supported data types are defined by the DM Schema and are -also listed in A.2.3. +also listed in @sec:data-types. The named data types that specify the representations of IP addresses, MAC addresses etc, are defined in a DM Instance document (see Annex A). @@ -803,7 +917,7 @@ local named data types in any DM Instance document. The following sub-sections specify additional rules governing parameter value representation within XML documents. -### 3.2.1 Date and Time Rules +### Date and Time Rules All times MUST be expressed in UTC (Universal Coordinated Time) unless explicitly stated otherwise in the definition of a parameter of this @@ -827,7 +941,7 @@ Any dateTime value other than one expressing relative time since boot (as described above) MUST use UTC timezoned representation (that is, it MUST include a timezone suffix of "`Z`", "`-00:00`" or "`+00:00`"). -### 3.2.2 Comma-separated Lists +### Comma-separated Lists For strings that are defined to contain comma-separated lists, the format is defined as follows. Between every pair of successive items in @@ -839,7 +953,7 @@ list items it separates. The last item in a comma-separated list MUST NOT be followed with a separator. Individual items in a comma-separated list MUST NOT include a whitespace or comma character within them. Any whitespace or comma characters within an item value MUST be escaped -using percent-encoding as specified in Section 2.1/RFC 3986 5. +using percent-encoding as specified in RFC 3986 [@RFC3986, {Section 2.1}]. It is possible to create a list of lists, although other solutions SHOULD be preferred when possible. If a string contains a list of lists, @@ -849,20 +963,20 @@ list with elements "a", "b,c" (a two element list) and "d" could be represented as "a,b%2Cc,d". In order to avoid the need to percent encode the inner separators, inner lists MAY be "protected" by placing them within square brackets, e.g. the above list could be represented as -"a,[b,c],d". In order to avoid ambiguity (a Controller that didn't -understand the new syntax would interpret "a,[b,c],d" as the four -element list "a", "[b", "c]", "d"), the data type and/or parameter +"a,[b,c],d". In order to avoid ambiguity (a Controller that didn't +understand the new syntax would interpret "a,[b,c],d" as the four +element list "a", "[b", "c]", "d"), the data type and/or parameter definition MUST explicitly state that the new syntax is supported -(A.2.3.1, A.2.7.1). +(@sec:named-data-types, @sec:parameter-syntax). -### 3.2.3 Parameters that Reference Parameters or Objects +### Parameters that Reference Parameters or Objects For string parameters that are defined to contain the hierarchical Path Name of an object (or for each item in parameters that are defined to contain comma-separated lists of object Path Names), the representation of the object name MUST NOT include a trailing "dot." An example of a -parameter of this kind in the TR- 181i2 10 Device:2 data model is -­Device.InterfaceStack.{i}.LowerLayer. For this parameter, the following +parameter of this kind in the TR-181i2 [@TR-181i2] Device:2 data model is +Device.InterfaceStack.{i}.LowerLayer. For this parameter, the following is an example of a properly formed value: `Device.Ethernet.Interface.1` @@ -874,7 +988,7 @@ Object, a parameter value of ".DeviceInfo" always means "Device.DeviceInfo". NOTE: This exception does NOT hold for USP. In order to be able to use reference parameters as unique keys -(A.2.10.1), their Path Names MUST conceptually be converted to full Path +(@sec:tables), their Path Names MUST conceptually be converted to full Path Names before being compared. For example, in the Device Root Object, ".DeviceInfo." and "Device.DeviceInfo." would compare as equal. If a reference parameter is list-valued, i.e. it is a list of Path Names or @@ -888,14 +1002,14 @@ reference always either references an existing parameter or object, or else is a null reference. On the other hand, a weak reference does not necessarily reference an existing parameter or object. -### 3.2.4 Units Conventions +### Units Conventions For numeric parameters whose values are defined in terms of units, bit and byte-related units will always refer to powers of 2. For example, a kilobyte will always be 1024 bytes, a megabyte always 1024 \* 1024 bytes, etc. -### 3.2.5 Default Maximum String Length +### Default Maximum String Length For string-valued parameters, a maximum length is either explicitly indicated or implied by the size of the elements composing the string. @@ -906,15 +1020,13 @@ determines the maximum length. For strings in which the content is a list, the maximum number of items and the individual item lengths can help to determine the maximum string length. -## 3.3 Vendor-Specific Parameters and Objects +## Vendor-Specific Elements -A vendor MAY extend the standardized parameter list with vendor-specific -parameters and objects. Vendor-specific parameters and objects MAY be -defined either in a separate naming hierarchy or within the standardized +A vendor MAY extend the standardized data model with vendor-specific +elements (parameters, objects, commands, events). Vendor-specific elements MAY be defined either in a separate naming hierarchy or within the standardized naming hierarchy. -The name of a vendor-specific parameter or object not contained within -another vendor-specific object MUST have the form: +The name of a vendor-specific parameter, object, command, or event that is not contained within another vendor-specific object MUST have the form: > X\_\_VendorSpecificName @@ -923,7 +1035,7 @@ be either an OUI or a domain name. The OUI or domain name used for a given vendor-specific parameter MUST be one that is assigned to the organization that defined this parameter (which is not necessarily the same as the vendor of the Agent). An OUI is an organizationally unique -identifier as defined in 3, which MUST be formatted as a +identifier as defined in [@OUI], which MUST be formatted as a six-hexadecimal-digit string using all upper-case letters and including any leading zeros. A domain name MUST be upper case with each dot (".") replaced with a hyphen or underscore. @@ -935,84 +1047,52 @@ character. > parameter implies that no standardized parameter can begin with > "X\_".* -The name of a vendor-specific parameter or object that is contained +The name of a vendor-specific element that is contained within another vendor-specific object which itself begins with the prefix described above need not itself include the prefix. -The full Path Name of a vendor-specific parameter or object MUST NOT +The full Path Name of a vendor-specific element MUST NOT exceed 256 characters in length. -Below are some example vendor-specific parameter and object names: +Below are some example vendor-specific element names: + +A parameter: Device.UserInterface.X_012345_AdBanner +A single-instance object: + Device.X_EXAMPLE-COM_MyConfig.Status +A command: + + Device.X_EXAMPLE-COM_MyCommand() + +An event: + + Device.X_EXAMPLE-COM_MyEvent! + When appropriate, a vendor MAY also extend the set of values of an enumeration. If this is done, the vendor-specified values MUST be in the form "X\_\_VendorSpecificValue". The total length of such a string MUST NOT exceed 31 characters. -# 4 Normative References +# Normative References A list of the currently valid Broadband Forum Technical Reports is -published at . The following documents +published at . The following documents are referenced by this specification. -1. [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt), *Key words for use - in RFCs to Indicate Requirement Levels*, IETF, 1997 - -2. [TR-069 Amendment - 6](https://www.broadband-forum.org/technical/download/TR-069_Amendment-6.pdf), - *CPE WAN Management Protocol*, Broadband Forum, 2018 - -3. [*Organizationally Unique Identifiers - (OUIs)*](http://standards.ieee.org/faqs/OUI.html), IEEE - -4. [*Simple Object Access Protocol (SOAP) - 1.1*](http://www.w3.org/TR/2000/NOTE-SOAP-20000508), W3C, 2000 - -5. [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt), *Uniform Resource - Identifier (URI): Generic Syntax*, IETF, 2005 - -6. *[Extensible Markup Language (XML) 1.0 (Fourth - Edition)](http://www.w3.org/TR/REC-xml), W3C,* 2008 - -7. [RFC 2648](http://www.ietf.org/rfc/rfc2648.txt), *A URN Namespace - for IETF Documents*, IETF, 1999 - -8. *[TR-143 Amendment 1 Corrigendum - 1](https://www.broadband-forum.org/technical/download/TR-143_Amendment-1_Corrigendum-1.pdf), - Enabling Network Throughput Performance Tests and Statistical - Monitoring, Broadband Forum, 2015* - -9. *[XML Schema Part 0: Primer Second - Edition](http://www.w3.org/TR/xmlschema-0), W3C,* 2004 - -10. [TR-181 Issue 2 Amendment - 12](http://www.broadband-forum.org/technical/download/TR-181_Issue-2_Amendment-12.pdf), - *Device Data Model for TR-069*, Broadband Forum, 2018 - -11. *[XML Schema Part 2: Datatypes Second - Edition](http://www.w3.org/TR/xmlschema-2), W3C,* 2004 - -12. [*TR-140 Amendment - 3*](https://www.broadband-forum.org/technical/download/TR-140_Amendment-3.pdf), - TR-069 Data Model for Storage Service Enabled Devices, Broadband - Forum, 2017 +::: {#refs} +::: -13. [*TR-369*](https://www.broadband-forum.org/technical/download/TR-369.pdf), - User Services Platform, Broadband Forum, 2018 +# CWMP Data Model Definition XML Schema {.annex1} - +## Introduction -# Annex A. CWMP Data Model Definition XML Schema - -## A.1 Introduction - -The CWMP Data Model Definition XML Schema 9, or DM Schema, is used -for defining CWMP 2 and USP 13 data models, and is specified in -A.2.12.6. +The CWMP Data Model Definition XML Schema [@XML-Schema-Primer], or DM Schema, is used +for defining CWMP [@TR-069] and USP [@TR-369] data models, and is specified in +@sec:description-modifications. DM Schema instance documents can contain any or all of the following: @@ -1026,18 +1106,19 @@ DM Schema instance documents can contain any or all of the following: - Vendor extension definitions -Annex C contains some additional normative requirements that apply only +@sec:requirements-for-bbf-standard-data-models contains some additional normative requirements that apply only to BBF standard DM Schema instance documents. Most of the data model elements are common to CWMP and USP. Those that are specific to either protocol will be noted in the description. -### A.1.1 Character Encoding and Character Set +### Character Encoding and Character Set BBF standard DM Schema instance documents use UTF-8 encoding and their -character set is restricted to printable ASCII characters. See C.2 for -the corresponding normative requirements. +character set is restricted to printable ASCII characters. See +@sec:character-encoding-and-character-set-1 for the corresponding normative +requirements. -## A.2 Normative Information +## Normative Information It is possible to create instance documents that conform to the DM Schema but nevertheless are not valid data model definitions. This is @@ -1050,6 +1131,7 @@ meet these additional requirements are referred to as DM Instances. For example, the definition of the parameter element includes the following additional requirements on the name and base attributes: +``` @@ -1084,6 +1166,7 @@ following additional requirements on the name and base attributes: ... +``` In some cases, a requirement that is in fact implied by the DM Schema is emphasized within the schema via the xs:documentation element (the @@ -1094,11 +1177,11 @@ example, the name and base attributes are of type tns:ParameterName: ``` - … + ... ]> - … + ... Parameter name (maximum length 256); the same as xs:NCName except that periods are not permitted. This name MUST in addition follow the vendor-specific parameter name requirements of Section 3.3. @@ -1126,7 +1209,7 @@ following rules: name, except for a colon and a dot". - It follows the vendor-specific parameter name requirements of - Section 3.3. + @sec:vendor-specific-elements. The question of the location of the definitive normative information therefore arises. The answer is as follows: @@ -1145,7 +1228,7 @@ therefore arises. The answer is as follows: part of the document, this is an error in the DM Schema, and the requirement in the main part of the document takes precedence. -### A.2.1 Importing DM Instances +### Importing DM Instances DM Instances are imported using the top-level import element. The DM Schema specifies that the DM Instance is located via the file attribute. @@ -1153,22 +1236,22 @@ Schema specifies that the DM Instance is located via the file attribute. The rules governing the file attribute's value and its use for locating the DM Instance are as follows: -- It MUST be a URL adhering to RFC 3986 5. +- It MUST be a URL adhering to RFC 3986 [@RFC3986]. - If the URL includes a scheme, it MUST be http, https or ftp. - If the URL includes an authority, it MUST NOT include credentials. - For standard BBF DM Instances, the rules that apply to the filename - part (final path segment) of the A.2.1.1 BBFURL also apply to the + part (final path segment) of the @sec:uri-conventions BBFURL also apply to the filename part of this URL. This means that the corrigendum number can be omitted in order to refer to the latest corrigendum. See - C.3.6 for the corresponding normative requirement. + @sec:import-element for the corresponding normative requirement. - If the URL is a relative reference, processing tools MUST apply their own logic, e.g. apply a search path. -#### A.2.1.1 URI Conventions +#### URI Conventions The top-level spec attribute contains the URI of the associated specification document, e.g. the BBF Technical Report. @@ -1190,11 +1273,11 @@ The following rules apply to the value of the top-level spec attribute: zeros. For example, "`urn:broadband-forum-org:tr-106-1-0`" refers to TR-106 (Issue 1 Amendment 0), and "`urn:broadband-forum-org:tr-106-1-2`" refers to TR-106 (Issue 1) - Amendment 2. See C.3.4 for the corresponding normative requirement. + Amendment 2. See @sec:spec-attribute for the corresponding normative requirement. - For specifications issued by other standards organizations, or by vendors, it SHOULD be of a standard form if one is defined. For - example, RFC 2648 7 specifies a syntax for referencing RFCs. + example, RFC 2648 [@RFC2648] specifies a syntax for referencing RFCs. - Note that processing tools are likely to assume that all files that share a spec value are related to each other. Therefore, use of @@ -1206,7 +1289,7 @@ The following rules apply to the value of the top-level file attribute. "`tr-nnn-i-a-c.xml`" or "`tr-nnn-i-a-c-label.xml`", where nnn, i, a and c are the same as in the spec attribute. The label, which MUST NOT begin with a digit, is not needed if only one DM Schema instance - document is associated with the specification. See C.3.5 for the + document is associated with the specification. See @sec:file-attribute for the corresponding normative requirement. - It SHOULD be the same as the actual file name (omitting the @@ -1217,71 +1300,63 @@ The following rules apply to the value of the top-level file attribute. Formally, the values of the spec and file attributes are defined as follows: +``` SpecAttr = SpecURI - FileAttr = FileName - SpecURI = BBFURI | OtherURI - BBFURI = "urn:broadband-forum-org:" BBFDoc - FileName = BBFDoc BBFSubDoc ".xml" - BBFDoc = "tr-" BBFNumber BBFIssue BBFAmendment BBFCorrigendum - BBFNumber = [DIGIT]{3,} // including leading zeros, e.g. 069 - BBFIssue = "-" NoLeadingZeroPositiveNumber - BBFAmendment = "-" NoLeadingZeroNumber - BBFCorrigendum = "-" NoLeadingZeroNumber - BBFSubDoc = "-" LABEL // distinguishing label (not beginning with a digit) | "" // not needed if only one DM Instance is associated with spec - NoLeadingZeroNumber = [DIGIT] | [NONZERODIGIT] [DIGIT]* - NoLeadingZeroPositiveNumber = [NONZERODIGIT] [DIGIT]* - OtherURI = +``` Standard BBF DM Instances can be accessed at the following URL: +``` BBFURL = "http://www.broadband-forum.org/cwmp/" FileName - FileName = - BBFCorrigendum = "-" NoLeadingZeroNumber | "" // if omitted, most recent corrigendum is assumed +``` -For example, the DM Instance associated with TR-181 Issue 2 Amendment 12 +For example, the DM Instance associated with TR-181 Issue 2 Amendment 11 can be accessed at -. +. -### A.2.2 Descriptions +### Descriptions Many elements have descriptions, and the same rules apply to all description elements in the DM Schema. A description is free text which can contain a limited amount of MediaWiki-like markup as specified in -A.2.2.3. +@sec:markup. -#### A.2.2.1 Character Set +#### Character Set -Character set requirements apply to the entire DM Instance, so the -contents of this section have been moved to C.2, which contains the -normative requirements that apply to standard BBF DM Instances. +Character set requirements apply to the entire DM Instance, so the contents of +this section have been moved to @sec:character-encoding-and-character-set-1, +which contains the normative requirements that apply to standard BBF DM +Instances. -#### A.2.2.2 Pre-processing +#### Pre-processing {#description-pre-processing} All DM Instance processing tools MUST conceptually perform the following pre-processing before interpreting the markup: 1) Remove any leading whitespace up to and including the first line - break. *Note: It can be assumed that all line breaks are represented by a single line feed, i.e. ASCII 10. See C.2.* + break. *Note: It can be assumed that all line breaks are represented by a + single line feed, i.e. ASCII 10. See + @sec:character-encoding-and-character-set-1.* 2) Remove the longest common whitespace prefix (i.e. that occurs at the start of every line) from each line. See the example below, where @@ -1297,51 +1372,103 @@ This pre-processing is designed to permit a reasonable variety of layout styles while still retaining predictable behavior. For example, both the following: +``` This is the first line. This is the second line. This is the indented third line. This is the fourth line. +``` And: +``` This is the first line. This is the second line. This is the indented third line. This is the fourth line. +``` ...result in the following: +``` This is the first line. This is the second line. This is the indented third line. This is the fourth line. +``` -#### A.2.2.3 Markup +#### Markup The pre-processed description can contain the following markup, which is inspired by, but is not identical to, MediaWiki markup. All DM Instance processing tools SHOULD support this markup to the best of their ability. -Table 1 - XML Desccription Markup +: XML Description Markup {#tbl:xml-description-markup} + +| Name | Markup Example | Description | +|-------------------|---------------------|----------------------------------------------------------------------------------------------------------| +| Italics | `''italic text''` | Two apostrophes on each side of some text will result in the contained text being emphasized in italics. | +| Bold | `'''bold text'''` | Three apostrophes on each side of some text will result in the contained text being emphasized in bold. | +| Bold italics | `'''''b+i text'''''`| Five apostrophes on each side of some text will result in the contained text being emphasized in bold italics. | +| Paragraph | This paragraph just ended. | A line break is interpreted as a paragraph break. | +| Bulleted lists | `* level one`\ +`** level two`\ +`* level one again`\ +`** level two again`\ +`*** level three`\ +`*: level one continued`\ +`outside of list` | A line starting with one or more asterisks (*) denotes a bulleted list entry, whose indent depth is proportional to the number of asterisks specified.\ +If the asterisks are followed by a colon (:), the previous item at that level is continued, as shown.\ +An empty line, or a line that starts with a character other than an asterisk, indicates the end of the list. |\ + +| Numbered lists | ` # level one`\ +`## level two`\ +`# level one again`\ +`## level two again`\ +`### level three`\ +`#: level one continued`\ +`outside of list` | A line starting with one or more number signs (#) denotes a numbered list entry.\ +All other conventions defined for bulleted lists apply here (using # rather than *), except that numbered list entries are prefixed with an integer decoration rather than a bullet. |\ + +| Indented lists | `: level one`\ +`:: level two`\ +`: level one again`\ +`:: level two again`\ +`::: level three`\ +`outside of list` | A line starting with one or more colons (:) denotes an indented list entry.\ +All other conventions defined for bulleted lists apply here (using : rather than *), except that indented list entries have no prefix decoration, and item continuation is not needed. |\ + +| Verbatim | code example:\ +` if (something)`\ +` {`\ +` /* do something */`\ +` } else {`\ +` /* do other */`\ +` }` | A block of lines each of which starts with a space is to be formatted exactly as typed, preferably in a fixed width font.\ +This allows code fragments, simple tables etc. to be included in descriptions.\ +Note that the pre-processing rules of @sec:description-pre-processing imply that it is not possible to process an entire description as verbatim text (because all the leading whitespace would be removed). This is not expected to be a problem in practice. |\ + +| Hyperlinks | `http://www.broadband-forum.org` | URL links are specified as plain old text (no special markup). |\ + +| Templates | `{{bibref|1|section 2}}`\ +`{{section|table}}`\ +`{{param|Enable}}`\ +`{{enum|Error}}` | Text enclosed in double curly braces ({}) is a template reference, which is replaced by template-dependent text.\ +@sec:description-templates specifies the standard templates. | + +#### Templates {#description-templates} + +::: note ::: + +The term "template" is used for both template elements (@sec:template-elements) +and for the description templates described here. + +::: -| Name | Markup Example | Description | -|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Italics | `’’italic text’’` | Two apostrophes on each side of some text will result in the contained text being emphasized in italics. | -| Bold | `’’’bold text’’’` | Three apostrophes on each side of some text will result in the contained text being emphasized in bold. | -| Bold italics | `’’’’’b+i text’’’’’` | Five apostrophes on each side of some text will result in the contained text being emphasized in bold italics. | -| Paragraph | This paragraph just ended. | A line break is interpreted as a paragraph break. | -| Bulleted lists | `* level one`
    `** level two`
    `* level one again`
    `** level two again`
    `*** level three`
    `*: level one continued`
    `outside of list` | A line starting with one or more asterisks (*) denotes a bulleted list entry, whose indent depth is proportional to the number of asterisks specified. If the asterisks are followed by a colon (:), the previous item at that level is continued, as shown. An empty line, or a line that starts with a character other than an asterisk, indicates the end of the list. | -| Numbered lists | ` # level one`
    `## level two`
    `# level one again`
    `## level two again`
    `### level three`
    `#: level one continued`
    `outside of list` | A line starting with one or more number signs (#) denotes a numbered list entry. All other conventions defined for bulleted lists apply here (using # rather than *), except that numbered list entries are prefixed with an integer decoration rather than a bullet. | -| Indented lists | `: level one`
    `:: level two`
    `: level one again`
    `:: level two again`
    `::: level three`
    `outside of list` | A line starting with one or more colons (:) denotes an indented list entry. All other conventions defined for bulleted lists apply here (using : rather than *), except that indented list entries have no prefix decoration, and item continuation is not needed. | -| Verbatim | code example:
    `if (something)`
    `{`
    `/* do something */`
    `} else {`
    `/* do other */`
    `}` | A block of lines each of which starts with a space is to be formatted exactly as typed, preferably in a fixed width font. This allows code fragments, simple tables etc. to be included in descriptions. Note that the pre-processing rules of A.2.2.2 imply that it is not possible to process an entire description as verbatim text (because all the leading whitespace would be removed). This is not expected to be a problem in practice. | - | Hyperlinks | `http://www.broadband-forum.org` | URL links are specified as plain old text (no special markup). | -| Templates | {{bibref|1|section 2}}
    {{section|table}}
    {{param|Enable}}
    {{enum|Error}} | Text enclosed in double curly braces ({}) is a template reference, which is replaced by template-dependent text. A.2.2.4 specifies the standard templates. | - -#### A.2.2.4 Templates A template invocation is encoded as two curly braces on either side of the template name and arguments. Arguments can follow the template name, @@ -1357,64 +1484,223 @@ rest of the description, which raises the question of which template expansion would come first. This ambiguity is resolved by stating that processing tools SHOULD generate such automatic text in the same order that the templates are defined below. In the above example, `{{enum}}` is -defined before `{{hidden}}`, so an auto­mat­ically-generated list of +defined before `{{hidden}}`, so an automatically-generated list of enumeration values would be placed before an automatically-generated explanation that the parameter value is hidden. The following standard templates are defined. Any vendor-specific -template names MUST obey the rules of Section 3.3. - -Table 2 -- XML Description Templates - -| Name | Markup Definition | Description | -|-----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Glossary reference | {{gloref|id}} | Glossary reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level glossary element’s item elements (A.2.4.1). Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”. Markup examples: {{gloref|Parameter}} | -| Abbreviation reference | {{abbref|id}} | Abbreviation reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level abbreviations element’s item elements (A.2.4.2). Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “id”. Markup examples: {{abbref|CWMP}} | -| Approval date | {{appdate|date}} | The date on which this file was approved. The date argument SHOULD be of the form “day month year” where “day” is the OPTIONAL day number (no leading zero) “month” is the full (capitalized) month name, and “year” is the year (including century). Markup example: {{appdate|5 November 2011}} {{appdate|November 2012}} | -| Document name | {{docname|name}} | The DM Instance name or title. The name argument MUST distinguish this file from other different files but not from other versions of the same file or data model. Markup example: {{docname|Device Data Model for TR-069}} | -| TR name | {{trname|name}} | The name and version of the corresponding Word / PDF document. The name argument MUST identify the Word / PDF document corresponding to this DM Instance, and be of the form “TR-nnnixaycz” as defined in A.2.4.3. Markup example: {{trname|TR-181i2a5}} | -| XML reference | {{xmlref|ref}} {{xmlref|ref|label}} | A reference to this or another DM Instance. The ref argument MUST identify a DM Instance and be the filename part of the referenced DM Instance (a) optionally omitting the corrigendum number, and (b) omitting the trailing “.xml”. The OPTIONAL label argument MAY be used by processing tools as a user-visible label; if it is omitted, processing tools will derive the label from the value of the ref argument. Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the label, possibly rendered in a distinctive font, and (if referencing a different file) a hyperlink. Markup examples: {{xmlref|tr-181-2-5}} {{xmlref|tr-196-2-0-1|Corrigendum 1}} | -| Bibliographic reference | {{bibref|id}} {{bibref|id|section}} | A bibliographic reference. The id argument MUST match the id attribute of one of the current file’s (or an imported file’s) top-level bibliography element’s reference elements (A.2.4.3). The OPTIONAL section argument specifies the section number, including any leading “section”, “annex” or “appendix” text. Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like “[id]] section”. Markup examples: {{bibref|RFC3986}} {{bibref|RFC3986|Section 3}} | -| Section separator | {{section|category}} {{section}} | The beginning or end of a section or category. This is a way of splitting the description into sections. If the category argument is present, this marks the end of the previous section (if any), and the beginning of a section of the specified category. The “table”, “row” and “examples” categories are reserved for the obvious purposes. If the category argument is absent, this marks the end of the previous section (if any). Typically, processing tools will (a) validate the category, and (b) replace the template reference with a section marker. Markup examples: {{section|table}} {{section|row}} {{section|examples}} | -| Number of entries parameter description | {{numentries}} | A description of a “NumberOfEntries” parameter. This template SHOULD be used for all such parameters. It will be expanded to something like “The number of entries in the <table> table.”. In most cases, the description will consist only of {{numentries}} but it MAY be followed by additional text if desired. | -| Parameter and object reference | {{param|ref}} {{param|ref|scope}} {{param}} {{object|ref}} {{object|ref|scope}} {{object}} | A reference to the specified parameter or object. The OPTIONAL ref and scope arguments reference a parameter or object. Scope defaults to normal. Parameter and object names SHOULD adhere to the rules of A.2.3.4. Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current parameter or object name, possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink. Markup examples: {{param|Enable}} {{object|Stats.}} | -| Profile reference | {{profile|ref}} {{profile}} | A reference to the specified profile. The OPTIONAL ref argument references a profile. Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current profile name, possibly rendered in a distinctive font. Markup examples: {{profile|Baseline:1}} {{profile}} | -| List description | {{list}} {{list|arg}} {{nolist}} | A description of the current parameter’s list attributes. This template SHOULD only be used within the description of a list-valued parameter (A.2.7.1). This is a hint to processing tools to replace the template reference with a description of the parameter’s list attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{nolist}}) of describing the list attributes before the rest of the description. The OPTIONAL argument specifies a fragment of text that describes the list and SHOULD be incorporated into the template expansion. Typically processing tools will generate text of the form “Comma-separated list of <dataType>.” Or “Comma-separated list of <dataType>, <arg>.”.| -| Reference description | {{reference}} {{reference|arg}} {{reference|arg|opts}} {{noreference}} | A description of the object or parameter that is referenced by the current parameter. This template SHOULD only be used within the description of a reference parameter (A.2.3.7). This is a hint to processing tools to replace the template reference with a description of the parameter’s reference attributes. This overrides processing tools’ expected default behavior (unless suppressed by {{noref­er­en­ce}}) of describing the reference attributes after the list attributes (for a list-valued parameter) or before the rest of the description (otherwise). The OPTIONAL arg argument is relevant only for a pathRef; it specifies a fragment of text that describes the referenced item and SHOULD be incorporated into the template expansion. The OPTIONAL opts argument is a comma-separated list of keywords that give additional information about the reference and can affect the generated text. The following keywords are currently defined:

    - ignore: ignore any non-existent targetParents; this is useful when a parameter references different objects in different data models.
    - delete: this object (the referencing object) and the referenced object have the same lifetime, so this object will always be deleted when the referenced object is deleted; therefore the reference can never be null.

    Typically processing tools will generate text of the form “The value MUST be the full path name of <arg>…”, in which the generated text can be expected to be sensitive to whether or not the parameter is list-valued. Markup examples: {{reference|a protocol object}} {{reference|all Host table entries|ignore}} | -| Named data type | {{datatype}} {{datatype|arg}} {{nodatatype}} | A description of the current parameter’s named data type. This template SHOULD only be used within the description of a parameter of a named data type (A.2.3.1). This is a hint to processing tools to replace the template reference with an indication of the parameter’s named data type, possibly including additional details or a hyperlink to such details. This overrides processing tools’ expected default behavior (unless suppressed by {{nodatatype}}) of describing the named data type before the rest of the description. The OPTIONAL argument affects how the data type is described. If it has the literal value “expand”, processing tools SHOULD replace the template reference with the actual description of the named data type (as opposed to referencing the description of the named data type). | -| Profile description | {{profdesc}} {{noprofdesc}} | An auto-generated description of a profile. This template SHOULD only be used within the description of a profile (A.2.11). This is a hint to processing tools to replace the template reference with a description of the profile. This overrides processing tools’ expected default behavior (unless suppressed by {{noprofdesc}}) of describing the profile before the rest of the description. Typically processing tools will generate text of the form “This table defines the <profile:v> profile for the <object:m> object. The minimum REQUIRED version for this profile is <object:m.n>.” (or more complex text if the profile is based on or extends other profiles). | -| Enumeration reference | {{enum|value}} {{enum|value|param}} {{enum|value|param|scope}} {{enum}} {{noenum}} | A reference to the specified enumeration value. The OPTIONAL value argument specifies one of the enumeration values for the referenced parameter. If present, it MUST be a valid enumeration value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed. If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s enumerations, possibly preceded by text such as “Enumeration of:”. This overrides processing tools’ expected default behavior (unless suppressed by {{noenum}}) of listing the parameter’s enumerations after the rest of the description. Otherwise, typically processing tools will (a) validate that the enumeration value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink. Markup examples: {{enum|None}} {{enum|None|OtherParam}} | -| Pattern reference | {{pattern|value}} {{pattern|value|param}} {{pattern|value|param|scope}} {{pattern}} {{nopattern}} | A reference to the specified pattern value. The OPTIONAL value argument specifies one of the pattern values for the referenced parameter. If present, it MUST be a valid pattern value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of A.2.3.4. If omitted, the current parameter is assumed. If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter’s patterns, possibly preceded by text such as “Possible patterns:”. This overrides processing tools’ expected default behavior (unless suppressed by {{nopattern}}) of listing the parameter’s patterns after the rest of the description. Otherwise, typically processing tools will (a) validate that the pattern value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink. Markup examples: {{pattern|None}} {{pattern|None|OtherParam}} | -| Hidden value | {{hidden}} {{hidden|value}} {{nohidden}} | Text explaining that the value of the current parameter is hidden and cannot be read. This template SHOULD only be used within the description of a hidden parameter (A.2.7.1). This is a hint to processing tools to replace the template reference with text explaining that the value of the current parameter is hidden and cannot be read. This overrides processing tools’ expected default behavior (unless suppressed by {{nohidden}}) of placing this text after the rest of the description. The OPTIONAL argument indicates the value that is returned when the current parameter is read. If omitted this defaults to the expansion of the {{null}} template. Typically, processing tools will generate text of the form “When read, this parameter returns , regardless of the actual value.”. | -| Command parameter | {{command}} {{nocommand}} | Text explaining that the current parameter is a command parameter that triggers an Agent action. This template SHOULD only be used within the description of such a command parameter (A.2.7.1). This is a hint to processing tools to replace the template reference with text explaining that the current parameter is a command parameter that always reads back as {{null}}. This overrides processing tools’ expected default behavior (unless suppressed by {{nocommand}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The value is not part of the device configuration and is always {{null}} when read.”. | -| Factory default value | {{factory}} {{nofactory}} | Text listing the factory default for the current parameter. This template SHOULD only be used within the description of a parameter that has a factory default value. This is a hint to processing tools to replace the template reference with text listing the factory default value. This overrides processing tools’ expected default behavior (unless suppressed by {{nofactory}}) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “The factory default value MUST be <value>.”. | -| Unique keys description | {{keys}} {{nokeys}} | A description of the current object’s unique keys. This template SHOULD only be used within the description of a Multi-Instance Object (table) that defines one or more unique keys (A.2.10.1). This is a hint to processing tools to replace the template reference with a description of the object’s unique keys. This overrides processing tools’ expected default behavior (unless suppressed by {{nokeys}}) of describing the unique keys after the description. | -| Units reference | {{units}} | The parameter’s units string. Typically, processing tools will (a) check that the parameter has a units string, and (b) substitute the value of its units string. | -| Boolean values | {{false}} {{true}} | Boolean values. Typically, processing tools will substitute the value False or True, possibly rendered in a distinctive font. | -| Discriminator parameter description | {{union}} {{nounion}} | Text explaining the available options and use for the sub-objects which are part of the union. This template SHOULD only be used within the description of a parameter declared as a discriminatorParameter (A.2.8.1). This is a hint to processing tools to replace the template reference with text explaining the union and possible choices of sub-objects. This overrides processing tools’ expected default behavior (unless suppressed by nounion) of placing this text after the rest of the description. Typically, processing tools will generate text of the form “This parameter defines the name of the currently active sub-object of a union, members of the union are <objects>” but it MAY be followed by additional text, explaining the use of the available options, if desired. | -| Miscellaneous | {{issue|descr}} {{issue|opts|descr}} | An open issue. If only one argument is supplied, it is descr, which describes the open issue. If two arguments are supplied, they are opts and descr. The OPTIONAL opts argument is a comma-separated list of options: · The first list item is an issue category that defaults to “XXX”. · The second list item is an issue status that defaults to an empty string. Any non-empty status implies that the issue has been resolved. Typically, processing tools will assign a unique ID, e.g. a separate counter for each category of issue, and replace the template reference with the issue category, ID, status and description, possibly rendered in a distinctive font. Markup examples: {{issue|Will be labeled XXX.}} {{issue|IPsec|Will be labeled IPsec.}} {{issue|DNS,fixed|Resolved DNS issue.}} | -| | {{empty}} | Represents an empty string. Typically, processing tools will render such values in a distinctive font, possibly using standard wording, such as or “an empty string”. | -| | {{null}} | Expands to the appropriate null value for the current parameter’s data type (A.2.3.5), e.g. {{empty}}, {{false}} or 0. | - -#### A.2.2.5 HTML Example +template names MUST obey the rules of @sec:vendor-specific-elements. + +: XML Description Templates {#tbl:xml-description-templates} + +| Name | Markup Definition | Description | +|--------------------|-----------------------|-----------------------------------------------------------------------------------------| +| Glossary reference | `{{gloref|id}}` | Glossary reference. The id argument MUST match the id attribute of one of the current file's (or an imported file's) top-level glossary element's item elements (@sec:glossary).\ +Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like "id".\ +Markup examples:\ +`{{gloref|Parameter}}` |\ + +| Abbreviation reference | `{{abbref|id}}` | Abbreviation reference. The id argument MUST match the id attribute of one of the current file's (or an imported file's) top-level abbreviations element's item elements (@sec:abbreviations).\ +Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like "id".\ +Markup examples:\ +`{{abbref|CWMP}}` |\ + +| Approval date | `{{appdate|date}}` | The date on which this file was approved.\ +The date argument SHOULD be of the form "day month year" where "day" is the OPTIONAL day number (no leading zero), "month" is the full (capitalized) month name, and "year" is the year (including century).\ +Markup examples:\ +`{{appdate|5 November 2011}}`\ +`{{appdate|November 2012}}` |\ + +| Document name | `{{docname|name}}` | The DM Instance name or title.\ +The name argument MUST distinguish this file from other different files but not from other versions of the same file or data model.\ +Markup examples:\ +`{{docname|Device Data Model for TR-069}}` |\ + +| TR name | `{{trname|name}}` | The name and version of the corresponding Word / PDF document.\ +The name argument MUST identify the Word / PDF document corresponding to this DM Instance, and be of the form "TR-nnnixaycz" as defined in @sec:bibliography.\ +Markup examples:\ +`{{trname|TR-181i2a5}}` |\ + +| XML reference | `{{xmlref|ref}}`\ +`{{xmlref|ref|label}}` | A reference to this or another DM Instance.\ +The ref argument MUST identify a DM Instance and be the filename part of the referenced DM Instance (a) optionally omitting the corrigendum number, and (b) omitting the trailing ".xml".\ +The OPTIONAL label argument MAY be used by processing tools as a user-visible label; if it is omitted, processing tools will derive the label from the value of the ref argument.\ +Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the label, possibly rendered in a distinctive font, and (if referencing a different file) a hyperlink.\ +Markup examples:\ +`{{xmlref|tr-181-2-5}}`\ +`{{xmlref|tr-196-2-0-1|Corrigendum 1}}` |\ + +| Bibliographic reference | `{{bibref|id}}`\ +`{{bibref|id|section}}` | A bibliographic reference.\ +The id argument MUST match the id attribute of one of the current file's (or an imported file's) top-level bibliography element's reference elements (@sec:bibliography).\ +The OPTIONAL section argument specifies the section number, including any leading "section", "annex" or "appendix" text.\ +Typically, processing tools will (a) validate the id, and (b) replace the template reference with something like "[id] section".\ +Markup examples:\ +`{{bibref|RFC3986}}`\ +`{{bibref|RFC3986|Section 3}}` |\ + +| Template reference | `{{template|id}}` | A template element reference.\ +The id argument MUST match the id attribute of one of the current file's (or an imported file's) top-level template elements (@sec:template-elements).\ +Markup examples:\ +`{{template|BULK-DATA-HTTP-REF}}` |\ + +| Section separator | `{{section|category}}`\ +`{{section}}` | The beginning or end of a section or category. This is a way of splitting the description into sections.\ +If the category argument is present, this marks the end of the previous section (if any), and the beginning of a section of the specified category. The "table", "row" and "examples" categories are reserved for the obvious purposes.\ +If the category argument is absent, this marks the end of the previous section (if any). Typically, processing tools will (a) validate the category, and (b) replace the template reference with a section marker.\ +Markup examples:\ +`{{section|table}}`\ +`{{section|row}}`\ +`{{section|examples}}` |\ + +| Number of entries parameter description | `{{numentries}}` | A description of a "NumberOfEntries" parameter.\ +This template SHOULD be used for all such parameters. It will be expanded to something like "The number of entries in the \ table.".\ +In most cases, the description will consist only of `{{numentries}}` but it MAY be followed by additional text if desired. |\ + +| Parameter and object reference | `{{param|ref}}`\ +`{{param|ref|scope}}`\ +`{{param}}`\ +`{{object|ref}}`\ +`{{object|ref|scope}}`\ +`{{object}}` | A reference to the specified parameter or object.\ +The OPTIONAL ref and scope arguments reference a parameter or object. Scope defaults to normal. Parameter and object names SHOULD adhere to the rules of @sec:reference-path-names.\ +Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current parameter or object name, possibly rendered in a distinctive font.\ +Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.\ +Markup examples:\ +`{{param|Enable}}`\ +`{{object|Stats.}}` |\ + +| Profile reference | `{{profile|ref}}`\ +`{{profile}}` | A reference to the specified profile.\ +The OPTIONAL ref argument references a profile.\ +Typically, processing tools will (a) validate the reference, and (b) replace the template reference with the ref argument or, if it is omitted, the current profile name, possibly rendered in a distinctive font.\ +Markup examples:\ +`{{profile|Baseline:1}}`\ +`{{profile}}`|\ + +| List description | `{{list}}`\ +`{{list|arg}}`\ +`{{nolist}}` | A description of the current parameter's list attributes.\ +This template SHOULD only be used within the description of a list-valued parameter (@sec:parameter-syntax).\ +This is a hint to processing tools to replace the template reference with a description of the parameter's list attributes. This overrides processing tools' expected default behavior (unless suppressed by `{{nolist}}`) of describing the list attributes before the rest of the description.\ +The OPTIONAL argument specifies a fragment of text that describes the list and SHOULD be incorporated into the template expansion.\ +Typically processing tools will generate text of the form "Comma-separated list of \." or "Comma-separated list of \, \.". |\ + +| Reference description | `{{reference}}`\ +`{{reference|arg}}`\ +`{{reference|arg|opts}}`\ +`{{noreference}}` | A description of the object or parameter that is referenced by the current parameter.\ +This template SHOULD only be used within the description of a reference parameter (@sec:reference-facets).\ +This is a hint to processing tools to replace the template reference with a description of the parameter's reference attributes. This overrides processing tools' expected default behavior (unless suppressed by `{{noreference}}`) of describing the reference attributes after the list attributes (for a list-valued parameter) or before the rest of the description (otherwise).\ +The OPTIONAL arg argument is relevant only for a pathRef; it specifies a fragment of text that describes the referenced item and SHOULD be incorporated into the template expansion.\ +The OPTIONAL opts argument is a comma-separated list of keywords that give additional information about the reference and can affect the generated text. The following keywords are currently defined:\ +- **ignore**: ignore any non-existent targetParents; this is useful when a parameter references different objects in different data models.\ +- **delete**: this object (the referencing object) and the referenced object have the same lifetime, so this object will always be deleted when the referenced object is deleted; therefore the reference cannever be null.\ +Typically processing tools will generate text of the form "The value MUST be the full path name of \...", in which the generated text can be expected to be sensitive to whether or not the parameter is list-valued.\ +Markup examples:\ +`{{reference|a protocol object}}`\ +`{{reference|all Host table entries|ignore}}` |\ + +| Named data type | `{{datatype}}`\ +`{{datatype|arg}}`\ +`{{nodatatype}}` | A description of the current parameter's named data type.\ +This template SHOULD only be used within the description of a parameter of a named data type (@sec:named-data-types).\ +This is a hint to processing tools to replace the template reference with an indication of the parameter's named data type, possibly including additional details or a hyperlink to such details. This overrides processing tools' expected default behavior (unless suppressed by `{{nodatatype}}`) of describing the named data type before the rest of the description.\ +The OPTIONAL argument affects how the data type is described. If it has the literal value "expand", processing tools SHOULD replace the template reference with the actual description of the named data type (as opposed to referencing the description of the named data type). |\ + +| Profile description | `{{profdesc}}`\ +`{{noprofdesc}}` | An auto-generated description of a profile.\ +This template SHOULD only be used within the description of a profile (@sec:profiles-1).\ +This is a hint to processing tools to replace the template reference with a description of the profile. This overrides processing tools' expected default behavior (unless suppressed by `{{noprofdesc}}`) of describing the profile before the rest of the description.\ +Typically processing tools will generate text of the form "This table defines the \ profile for the \ object. The minimum REQUIRED version for this profile is \." (or more complex text if the profile is based on or extends other profiles). |\ + +| Enumeration reference | `{{enum|value}}`\ +`{{enum|value|param}}`\ +`{{enum|value|param|scope}}`\ +`{{enum}}`\ +`{{noenum}}` | A reference to the specified enumeration value.\ +The OPTIONAL value argument specifies one of the enumeration values for the referenced parameter. If present, it MUST be a valid enumeration value for that parameter.\ +The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of @sec:reference-path-names. If omitted, the current parameter is assumed.\ +If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter's enumerations, possibly preceded by text such as "Enumeration of:". This overrides processing tools' expected default behavior (unless suppressed by `{{noenum}}`) of listing the parameter's enumerations after the rest of the description.\ +Otherwise, typically processing tools will (a) validate that the enumeration value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.\ +Markup examples:\ +`{{enum|None}}`\ +`{{enum|None|OtherParam}}` |\ + +| Pattern reference | `{{pattern|value}}`\ +`{{pattern|value|param}}`\ +`{{pattern|value|param|scope}}`\ +`{{pattern}}`\ +`{{nopattern}}` | A reference to the specified pattern value.\ +The OPTIONAL value argument specifies one of the pattern values for the referenced parameter. If present, it MUST be a valid pattern value for that parameter. The OPTIONAL param and scope arguments identify the referenced parameter. Scope defaults to normal. If present, param SHOULD adhere to the rules of @sec:reference-path-names. If omitted, the current parameter is assumed.\ +If the arguments are omitted, this is a hint to processing tools to replace the template reference with a list of the parameter's patterns, possibly preceded by text such as "Possible patterns:". This overrides processing tools' expected default behavior (unless suppressed by `{{nopattern}}`) of listing the parameter's patterns after the rest of the description.\ +Otherwise, typically processing tools will (a) validate that the pattern value is valid, and (b) replace the template reference with the value and/or param arguments, appropriately formatted and with the value possibly rendered in a distinctive font. Processing tools can use the scope to convert a relative path into an absolute path in order, for example, to generate a hyperlink.\ +Markup examples:\ +`{{pattern|None}}`\ +`{{pattern|None|OtherParam}}` | \ + +| Hidden value | `{{hidden}}`\ +`{{hidden|value}}`\ +`{{nohidden}}` | Text explaining that the value of the current parameter is hidden and cannot be read. This template SHOULD only be used within the description of a hidden parameter (@sec:parameter-syntax).\ +This is a hint to processing tools to replace the template reference with text explaining that the value of the current parameter is hidden and cannot be read. This overrides processing tools' expected default behavior (unless suppressed by `{{nohidden}}`) of placing this text after the rest of the description.\ +The OPTIONAL argument indicates the value that is returned when the current parameter is read. If omitted this defaults to the expansion of the `{{null}}` template.\ +Typically, processing tools will generate text of the form "When read, this parameter returns \, regardless of the actual value.". |\ + +| Command parameter | `{{command}}`\ +`{{nocommand}}` | Text explaining that the current parameter is a command parameter that triggers an Agent action. This template SHOULD only be used within the description of such a command parameter (@sec:parameter-syntax).\ +This is a hint to processing tools to replace the template reference with text explaining that the current parameter is a command parameter that always reads back as `{{null}}`. This overrides processing tools' expected default behavior (unless suppressed by `{{nocommand}}`) of placing this text after the rest of the description. Typically, processing tools will generate text of the form "The value is not part of the device configuration and is always `{{null}}` when read.". |\ + +| Factory default value | `{{factory}}`\ +`{{nofactory}}` | Text listing the factory default for the current parameter. This template SHOULD only be used within the description of a parameter that has a factory default value.\ +This is a hint to processing tools to replace the template reference with text listing the factory default value. This overrides processing tools' expected default behavior (unless suppressed by `{{nofactory}}`) of placing this text after the rest of the description. Typically, processing tools will generate text of the form "The factory default value MUST be \.". |\ + +| Unique keys description | `{{keys}}`\ +`{{nokeys}}` | A description of the current object's unique keys.\ +This template SHOULD only be used within the description of a Multi-Instance Object (table) that defines one or more unique keys (@sec:tables).\ +This is a hint to processing tools to replace the template reference with a description of the object's unique keys. This overrides processing tools' expected default behavior (unless suppressed by `{{nokeys}}`) of describing the unique keys after the description. |\ + +| Units reference | `{{units}}` | The parameter's units string.\ +Typically, processing tools will (a) check that the parameter has a units string, and (b) substitute the value of its units string. |\ + +| Boolean values | `{{false}}`\ +`{{true}}` | Boolean values.\ +Typically, processing tools will substitute the value False or True, possibly rendered in a distinctive font. |\ + +| Discriminator parameter description | `{{union}}`\ +`{{nounion}}` | Text explaining the available options and use for the sub-objects which are part of the union.\ +This template SHOULD only be used within the description of a parameter declared as a discriminatorParameter (@sec:tables).\ +This is a hint to processing tools to replace the template reference with text explaining the union and possible choices of sub-objects. This overrides processing tools' expected default behavior (unless suppressed by ``{{nounion}}`) of placing this text after the rest of the description.\ +Typically, processing tools will generate text of the form "This parameter defines the name of the currently active sub-object of a union, members of the union are \." but it MAY be followed by additional text, explaining the use of the available options, if desired. |\ + +| Miscellaneous | `{{issue|descr}}`\ +`{{issue|opts|descr}}` | An open issue.\ +If only one argument is supplied, it is descr, which describes the open issue. If two arguments are supplied, they are opts and descr.\ +The OPTIONAL opts argument is a comma-separated list of options:\ +- The first list item is an issue category that defaults to "XXX".\ +- The second list item is an issue status that defaults to an empty string. Any non-empty status implies that the issue has been resolved.\ +Typically, processing tools will assign a unique ID, e.g. a separate counter for each category of issue, and replace the template reference with the issue category, ID, status and description, possibly rendered in a distinctive font.\ +Markup examples:\ +`{{issue|Will be labeled XXX.}}`\ +`{{issue|IPsec|Will be labeled IPsec.}}`\ +`{{issue|DNS,fixed|Resolved DNS issue.}}` |\ + +| | `{{empty}}` | Represents an empty string. Typically, processing tools will render such values in a distinctive font, possibly using standard wording, such as or "an empty string". |\ + +| | `{{null}}` | Expands to the appropriate null value for the current parameter's data type (@sec:null-values-and-references), e.g. `{{empty}}`, `{{false}}` or 0. | + +#### HTML Example This includes examples of most of the markup and templates. ``` - - - - - - - + + + {{section|Introduction}}This is an ''example'' parameter that illustrates many of the '''formatting''' templates. For - '''''example''''', this references {{bibref|TR-106a1|section - 3.2}}. + '''''example''''', this references {{bibref|TR-106a1|section 3.2}}. {{section|Usage}}This parameter is called {{object}}{{param}}. One can also reference other parameters in the same object, such as @@ -1422,100 +1708,68 @@ This includes examples of most of the markup and templates. measured in {{units}}. One can also include bulleted lists: - * level one - ** level two - * level one again - ** level two again - *** level three - *: level one continued and numbered lists: - # level one - ## level two - # level one again - ## level two again - ### level three - #: level one continued and indented lists - : level one - :: level two - : level one again - :: level two again - ::: level three and hyperlinks such as http://www.google.com and code examples: - - if (something) { - - /* do something */ - - } else { - - /* do other */ - - } + if (something) { + /* do something */ + } else { + /* do other */ + } If the parameter was Boolean, one could refer to its values {{false}} and {{true}}. One can refer to its enumerations individually, e.g. {{enum|Disabled}}, - or to other parameters' enumerations, such as - {{enum|Value|OtherParam}}, or can list them all. {{enum}} - - Finally, if there were any patterns they could be listed too. - {{pattern}} - - - - - - - - - - - - - - - - - - + or to other parameters' enumerations, such as {{enum|Value|OtherParam}}, + or can list them all. {{enum}} + + Finally, if there were any patterns they could be listed too. {{pattern}} + + + + + + + + + ``` The resulting HTML would look something like this: -![html example](./figure-4.png) +![](images/figure-4.png) -### A.2.3 Data Types +### Data Types -CWMP 2 and USP 13 data models support only the primitive data -types listed in the last row of Table 3 "on the wire". However, the DM +CWMP [@TR-069] and USP [@TR-369] data models support only the primitive data +types listed in the last row of @tbl:xml-named-data-types "on the wire". However, the DM Schema allows data types to be derived from the primitive types or from other named data types. Such derived types can be named or anonymous. -#### A.2.3.1 Named Data Types +#### Named Data Types Named data types are defined using the top-level dataType element. A DM Instance can contain zero or more top-level dataType elements. @@ -1524,20 +1778,42 @@ When defining a new named data type, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 3 -- XML Named Data Types - -| Name | Description | -|-------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| name | The data type name. | -| base | The base type name, i.e. name of the data type from which this data type is derived. This is used only where the base type is itself a named data type, not a primitive type. | -| status | The data type’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new data type. | -| description | The data type’s description (A.2.2). | -| list minItems maxItems nestedBrackets size | If the data type is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3). Note that a list-valued data type is always a string as far as the protocol is concerned. For a list, the rest of the data type specification refers to the individual list items, not to the parameter value. | -| size pathRef instanceRef range enumeration enumerationRef pattern units default | Data type facets (A.2.3.3). These are permitted only when the base type is a named data type, i.e. when the base attribute is specified. | -| base64 boolean dateTime hexBinary int long string unsignedInt unsignedLong | Primitive data type definition. These are permitted only when the base type is primitive. There is an element for each primitive data type, and each element supports only the facets (A.2.3.3) that are appropriate to that data type. | +: XML Named Data Types {#tbl:xml-named-data-types} + +| Name | Description | +|---------|-----------------------------------------------------------------------------------------------| +| name | The data type name. | +| base | The base type name, i.e. name of the data type from which this data type is derived. This is used only where the base type is itself a named data type, not a primitive type. | +| status | The data type's {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new data type. | +| description | The data type's description (@sec:descriptions). | +| list\ +minItems\ +maxItems\ +nestedBrackets\ +size | If the data type is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (@sec:data-type-facets).\ +Note that a list-valued data type is always a string as far as the protocol is concerned. For a list, the rest of the data type specification refers to the individual list items, not to the parameter value. | +| size\ +pathRef\ +instanceRef\ +range\ +enumeration\ +enumerationRef\ +pattern\ +units\ +default | Data type facets (@sec:data-type-facets). These are permitted only when the base type is a named data type, i.e. when the base attribute is specified. | +| base64\ +boolean\ +dateTime\ +hexBinary\ +int\ +long\ +string\ +unsignedInt\ +unsignedLong | Primitive data type definition. These are permitted only when the base type is primitive. There is an element for each primitive data type, and each element supports only the facets (@sec:data-type-facets) that are appropriate to that data type. | For example: +``` String of maximum length 255. @@ -1556,13 +1832,15 @@ For example: brackets. +``` -#### A.2.3.2 Anonymous Data Types +#### Anonymous Data Types Anonymous data types are defined within parameter syntax elements -(A.2.7.1), and can apply only to the parameters within which they are +(@sec:parameter-syntax), and can apply only to the parameters within which they are defined. For example: +``` @@ -1578,50 +1856,59 @@ defined. For example: +``` If an anonymous data type is modified in a later version of a data model, the modified anonymous data type is regarded as being derived from the original anonymous data type. Therefore the base type -restriction rules of A.2.3.8 MUST be obeyed. +restriction rules of @sec:base-type-restriction MUST be obeyed. -#### A.2.3.3 Data Type Facets +#### Data Type Facets A facet specifies some aspect of a data type, e.g. its size, range or units. -Note that XML Schema 9 also associates facets with data types. The +Note that XML Schema [@XML-Schema-Primer] also associates facets with data types. The XML Schema and DM Schema concepts are the same, but the set of facets is not identical. The DM Schema defines the following facets (normative requirements are specified in the schema): -Table 4 -- XML Data Type Facets - -| Name | Description | -|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| size | Size ranges for the data type (applies to string, base64, hexBinary and their derived types). Note that the size facet always refers to the actual value, not to the base64- or hexBinary-encoded value. Prior to the definition of the DM Schema, the maximum sizes of base64 parameters referred to the base64-encoded values. Processing tools that generate reports from DM Instances SHOULD include explicit clarification of whether the size ranges refer to the actual or encoded values. Note that the size facet is also used to specify the size range for list-valued parameters, which are always strings (A.2.7.1). | -| pathRef | Details of how to reference parameters and objects via their Path Names (applies to string and its derived types: A.2.3.7). | -| instanceRef | Details of how to reference object instances (table rows) via their Instance Numbers (applies to int, unsignedInt and their derived types; A.2.3.7). | -| range | Value ranges for the data type (applies to numeric data types and their derived types). | -| enumeration | Enumerations for the data type (applies to string and its derived types). | -| enumerationRef | Enumerations for the data type, obtained at run-time from the value of a specified parameter (applies to string and its derived types; A.2.3.7). | -| pattern | Patterns for the data type (applies to string and its derived types). Pattern value syntax is the same as for XML Schema regular expressions. | -| units | Units for the data type (applies to numeric data types and their derived types). | +: XML Data Type Facets {#tbl:xml-data-type-facets} + +| Name | Description | +|------------------|------------------------------------------------------------------------------| +| size | Size ranges for the data type (applies to string, base64, hexBinary and their derived types). Note that the size facet always refers to the actual value, not to the base64- or hexBinary-encoded value. Prior to the definition of the DM Schema, the maximum sizes of base64 parameters referred to the base64-encoded values.\ +Processing tools that generate reports from DM Instances SHOULD include explicit clarification of whether the size ranges refer to the actual or encoded values.\ +Note that the size facet is also used to specify the size range for list-valued parameters, which are always strings (@sec:parameter-syntax). | +| pathRef | Details of how to reference parameters and objects via their Path Names (applies to string and its derived types; @sec:reference-facets). | +| instanceRef | Details of how to reference object instances (table rows) via their Instance Numbers (applies to int, unsignedInt and their derived types; @sec:reference-facets). | +| range | Value ranges and step (default step is 1) for the data type (applies to numeric data types and their derived types). | +| enumeration | Enumerations for the data type (applies to string and its derived types). | +| enumerationRef | Enumerations for the data type, obtained at run-time from the value of a specified parameter (applies to string and its derived types; @sec:reference-facets). | +| pattern | Patterns for the data type (applies to string and its derived types). Pattern value syntax is the same as for XML Schema regular expressions. See [@XML-Schema-Datatypes, {Section F}]. | +| units | Units for the data type (applies to numeric data types and their derived types). | +| default | Object, factory, implementation or parameter default.\ +- Object defaults apply only to parameters that can be created as a result of an AddObject RPC.\ +- Factory defaults apply to all parameters (if a factory default is specified, it also acts as object default for applicable parameters).\ +- Implementation defaults apply to all parameters (they are informational defaults that are likely after a reset or if no other value is available).\ +- Parameter defaults apply only to command and event arguments. | + It is important to note that the enumeration facet does not necessarily define all the valid values for a data type. This is for the following reasons: -- As specified in Section 3.3, vendors are allowed to add additional +- As specified in @sec:vendor-specific-elements, vendors are allowed to add additional enumeration values. - A future version of a data model may need to add additional - enumerations values. + enumeration values. -#### A.2.3.4 Reference Path Names +#### Reference Path Names -Some description templates (A.2.2.4), and all reference facets -(A.2.3.7), need to specify parameter or object names. It is always +Some description templates (@sec:description-templates), and all reference facets +(@sec:reference-facets), need to specify parameter or object names. It is always possible to specify a full Path Name, but it is frequently necessary or convenient to specify a relative Path Name. For example, it might be necessary to reference another parameter in the current object. Any @@ -1643,13 +1930,24 @@ A Path Name is always associated with a path name scope, which defines the point in the naming hierarchy relative to which the Path Name applies. -Table 5 -- Path Name Scope Definition +: Path Name Scope Definition {#tbl:path-name-scope-definition} + +---------------------------------------------------------------------------------- +Name Description +---------------- ----------------------------------------------------------------- +normal This is a hybrid scope which usually gives the desired behavior:\ + - If the path begins with a "Device" component, it is relative to + the top of the naming hierarchy.\ + - If the path begins with a dot, it is relative to the Root or + Service Object (c.f. scope=model).\ + - Otherwise, the path is relative to the current object (c.f. + scope=object). + +model The path is relative to the Root or Service Object. -| Name | Description | -|--------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| normal | This is a hybrid scope which usually gives the desired behavior:
    - If the path begins with a “Device” component, it is relative to the top of the naming hierarchy.
    - If the path begins with a dot, it is relative to the Root or Service Object (c.f. scope=model).
    - Otherwise, the path is relative to the current object (c.f. scope=object).

    | -| model | The path is relative to the Root or Service Object. | -| object | The path is relative to the current object. | +object The path is relative to the current object. + +---------------------------------------------------------------------------------- Formally, if the path name scope is normal: @@ -1661,15 +1959,15 @@ Formally, if the path name scope is normal: - Otherwise, if the path begins with a dot ("."), it MUST be regarded as a path relative to the Root or Service Object. For example, in - the Device Root Object ".DeviceInfo." means "Dev­ice.­DeviceInfo.", - and in the Device.­Services.­ABC­Service.1 Service Object it means - "Device.­Services.­ABC­Service.­1.­DeviceInfo.". + the Device Root Object ".DeviceInfo." means "Device.DeviceInfo.", + and in the Device.Services.ABCService.1 Service Object it means + "Device.Services.ABCService.1.DeviceInfo.". - Otherwise, it MUST be regarded as a path relative to the current object. Any leading hash characters ("#") cause it to be relative to the parent of the current object (or the parent's parent, and so on) as described below. For example, if the current object is - "Dev­ice.­LAN.", "IPAddress" means "Device.­LAN.­IP­Add­ress", + "Device.LAN.", "IPAddress" means "Device.LAN.IPAddress", "Stats." means "Device.LAN.Stats." and "#.DeviceInfo." means "Device.DeviceInfo" (see below for more "#" examples). @@ -1731,8 +2029,8 @@ Note that the term "Root or Service Object", which is used several times above, means "if within a Service Object instance, the Service Object instance; otherwise, the Root Object". -For example, the pathRef and instanceRef facets (A.2.3.7) have a -target­Parent attribute which specifies the possible parent(s) of the +For example, the pathRef and instanceRef facets (@sec:reference-facets) have a +targetParent attribute which specifies the possible parent(s) of the referenced parameter or object, and a targetParentScope attribute (defaulted to normal) which specifies targetParent's scope. If the current object is within a Service Object instance, setting @@ -1744,7 +2042,7 @@ be in the same object or in a sub-object. #### Null Values and References Each primitive data type has an associated null value that is used, for -example, as the expansion of the {{null}} template (A.2.2.4). These null +example, as the expansion of the {{null}} template (@sec:description-templates). These null values are defined as follows: - **base64, hexBinary, string:** an empty string @@ -1755,8 +2053,7 @@ values are defined as follows: - **boolean:** false -- **dateTime:** 0001-01-01T00:00:00Z (the Unknown Time; see Section - 3.2.1) +- **dateTime:** 0001-01-01T00:00:00Z (the Unknown Time; see @sec:date-and-time-rules) A null reference indicates that a reference parameter is not currently referencing anything. The value that indicates a null reference is the @@ -1768,7 +2065,7 @@ null value for the reference parameter's base data type, i.e.: - **int**: -1 -#### A.2.3.6 Reference Types +#### Reference Types A reference to another parameter or object can be weak or strong: @@ -1778,14 +2075,14 @@ A reference to another parameter or object can be weak or strong: All weak reference parameters MUST be declared as writable. - **strong**: it always either references a valid parameter or object, - or else is a null reference (A.2.3.5). If the referenced parameter + or else is a null reference (@sec:null-values-and-references). If the referenced parameter or object is deleted, the value of the reference parameter is always set to a null reference. -See Section 3.2.3 for normative requirements relating to reference types +See @sec:parameters-that-reference-parameters-or-objects for normative requirements relating to reference types and the associated Agent behavior. -#### A.2.3.7 Reference Facets +#### Reference Facets A reference facet specifies how a parameter can reference another parameter or object. There are three sorts of reference: @@ -1807,38 +2104,73 @@ parameter or object. There are three sorts of reference: When defining a path reference, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 6 -- PathRef Facet Definition - -| Name | Description | -|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| targetParent | An XML list of Path Names that can restrict the set of parameters and objects that can be referenced. If the list is empty (the default), then anything can be referenced. Otherwise, only the immediate children of one of the specified objects can be referenced, A “{i}” placeholder in a Path Name acts as a wild card, e.g. “Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.”. Path Names cannot contain explicit Instance Identifiers. | -| targetParentScope | Specifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object. | -| targetType | Specifies what types of item can be referenced:
    - any: any parameter or object can be referenced (default)
    - parameter: any parameter can be referenced
    - object: any object can be referenced
    - single: any single-instance object can be referenced
    - table: any Multi-Instance Object (table) can be referenced
    - row: any Multi-Instance Object (table) instance (row) can be referenced

    | -| targetDataType | Specifies the valid data types for the referenced parameter. Is relevant only when targetType is any or parameter. Possible values are as follows:
    - any: a parameter of any data type can be referenced (default)
    - base64: only a base64 parameter can be referenced
    - boolean: only a boolean parameter can be referenced
    - dateTime: only a dateTime parameter can be referenced
    - hexBinary: only a hexBinary parameter can be referenced
    - integer: only an integer (int, long, unsignedInt or unsignedLong) parameter can be referenced
    - int: only an int parameter can be referenced
    - long: only a long (or int) parameter can be referenced
    - string: only a string parameter can be referenced
    - unsignedInt: only an unsignedInt parameter can be referenced
    - unsignedLong: only an unsignedLong (or unsignedInt) parameter can be referenced
    - : only a parameter of the named data type can be referenced In addition, a parameter whose data type is derived from the specified data type can be referenced. The built-in type hierarchy (a simplified version of the XML Schema type hierarchy) is as follows:

    any
     base64
     boolean
     dateTime
     hexBinary
     integer
       long
         int
       unsignedLong
         unsignedInt
     string


    Note that any and integer are not valid parameter data types. They are included in order to support “can reference any data type” and “can reference any numeric data type”. | -| refType | Specifies the reference type (A.2.3.6): weak or strong. | +: PathRef Facet Definition {#tbl:pathref-facet-definition} + +| Name | Description | +|-------------------------|-------------------------------------------------------------------------------------------------------------------| +| targetParent | An XML list of Path Names that can restrict the set of parameters and objects that can be referenced. If the list is empty (the default), then anything can be referenced. Otherwise, only the immediate children of one of the specified objects can be referenced.\ +A "{i}" placeholder in a Path Name acts as a wild card, e.g. "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.". Path Names cannot contain explicit Instance Identifiers. | +| targetParentScope | Specifies the point in the naming hierarchy relative to which targetParent applies (@sec:reference-path-names): normal (default), model or object. | +| targetType | Specifies what types of item can be referenced:\ +- **any**: any parameter or object can be referenced (default)\ +- **parameter**: any parameter can be referenced\ +- **object**: any object can be referenced\ +- **single**: any single-instance object can be referenced\ +- **table**: any Multi-Instance Object (table) can be referenced\ +- **row**: any Multi-Instance Object (table) instance (row) can be referenced | +| targetDataType | Specifies the valid data types for the referenced parameter. Is relevant only when targetType is any or parameter.\ +Possible values are as follows:\ +- **any**: a parameter of any data type can be referenced (default)\ +- **base64**: only a base64 parameter can be referenced\ +- **boolean**: only a boolean parameter can be referenced\ +- **dateTime**: only a dateTime parameter can be referenced\ +- **hexBinary**: only a hexBinary parameter can be referenced\ +- **integer**: only an integer (int, long, unsignedInt or unsignedLong) parameter can be referenced\ +- **int**: only an int parameter can be referenced\ +- **long**: only a long (or int) parameter can be referenced\ +- **string**: only a string parameter can be referenced\ +- **unsignedInt**: only an unsignedInt parameter can be referenced\ +- **unsignedLong**: only an unsignedLong (or unsignedInt) parameter can be referenced\ +- **\**: only a parameter of the named data type can be referenced\ +In addition, a parameter whose data type is derived from the specified data type can be referenced. The built-in type hierarchy (a simplified version of the XML Schema type hierarchy) is as follows:\ +`any`\ +\ \ `base64`\ +\ \ `boolean`\ +\ \ `dateTime`\ +\ \ `hexBinary`\ +\ \ `integer`\ +\ \ \ \ `long`\ +\ \ \ \ \ \ `int`\ +\ \ \ \ `unsignedLong`\ +\ \ \ \ \ \ `unsignedInt`\ +\ \ `string`\ +Note that any and integer are not valid parameter data types. They are included in order to support "can reference any data type" and "can reference any numeric data type". | +| refType | Specifies the reference type (@sec:reference-types): weak or strong. | When defining an instance reference, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 7 -- InstanceRef Facet Definition +: InstanceRef Facet Definition {#tbl:instanceref-facet-definition} -| Name | Description | -|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| targetParent | Specifies the Path Name of the Multi-Instance Object (table) of which an instance (row) is being referenced. “{i}” placeholders and explicit Instance Identifiers are not permitted in the Path Name. targetParentScope can be used to specify Path Names relative to the Root or Service Object or the current object. | -| targetParentScope | Specifies the point in the naming hierarchy relative to which targetParent applies (A.2.3.4): normal (default), model or object. | -| refType | Specifies the reference type (A.2.3.6): weak or strong. | +| Name | Description | +|-------------------------|-------------------------------------------------------------------------------------------------------------------| +| targetParent | Specifies the Path Name of the Multi-Instance Object (table) of which an instance (row) is being referenced.\ +"{i}" placeholders and explicit Instance Identifiers are not permitted in the Path Name. targetParentScope can be used to specify Path Names relative to the Root or Service Object or the current object. | +| targetParentScope | Specifies the point in the naming hierarchy relative to which targetParent applies (@sec:reference-path-names): normal (default), model or object. | +| refType | Specifies the reference type (@sec:reference-types): weak or strong. | When defining an enumeration reference, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 8 -- EnumerationRef Facet Definition +: EnumerationRef Facet Definition {#tbl:enumerationref-facet-definition} -| Name | Description | -|------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| targetParam | Specifies the Path Name of the list-valued parameter whose current value indicates the valid enumerations for this parameter. | -| targetParamScope | Specifies the point in the naming hierarchy relative to which targetParam applies (A.2.3.4): normal (default), model or object. | -| nullValue | Specifies the parameter value that indicates that none of the values of the referenced parameter currently apply (if not specified, no such value is designated). Note that if this parameter is list-valued then nullValue is not relevant, because this condition will be indicated by an empty list. | +| Name | Description | +|-------------------------|-------------------------------------------------------------------------------------------------------------------| +| targetParam | Specifies the Path Name of the list-valued parameter whose current value indicates the valid enumerations for this parameter. | +| targetParamScope | Specifies the point in the naming hierarchy relative to which targetParam applies (@sec:reference-path-names): normal (default), model or object. | +| nullValue | Specifies the parameter value that indicates that none of the values of the referenced parameter currently apply (if not specified, no such value is designated).\ +Note that if this parameter is list-valued then nullValue is not relevant, because this condition will be indicated by an empty list. | The following examples illustrate the various possible types of reference. @@ -1929,11 +2261,11 @@ reference. ``` -#### A.2.3.8 Base Type Restriction +#### Base Type Restriction A new data type MUST always be a restriction of its base type, meaning that a valid value of the new data type will always be a valid value for -its base type. This is the case for the examples of A.2.3.1, which +its base type. This is the case for the examples of @sec:named-data-types, which involve three different data types: - string of unlimited length @@ -1945,58 +2277,73 @@ involve three different data types: Clearly a string of length 100 is valid for all three data types, but a string of length 200 is only valid for the first two data types. -The examples of A.2.3.1 considered only the size facet, but in general +The examples of @sec:named-data-types considered only the size facet, but in general all facets that are applicable to the data type have to be considered. The base type restriction requirements for each facet are as follows: -Table 9 -- XML Facet Inheritance Rules - -| Facet | Requirements | -|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| size | The derived data type can define sizes in any way, provided that the new sizes do not permit any values that are not valid for the base type. | -| pathRef | The derived data type can modify the data type in the following ways:
    - By “promoting” status to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed.
    - By changing targetParent to narrow the set of possible parent objects.
    - By changing targetType to narrow the set of possible target types.
    - By changing targetDataType to narrow the set of possible target data types.

    | -| instanceRef | The derived data type can modify the data type in the following ways:
    - By “promoting” status to a “higher” value, as described for pathRef.
    - By changing targetParent to narrow the set of possible parent objects.

    | -| range | The derived data type can define ranges in any way, provided that the new ranges do not permit any values that are not valid for the base type. | -| enumeration | The derived data type can modify existing enumeration values in the following ways:
    - By “promoting” access from readOnly to readWrite.
    - By “promoting” status to a “higher” value, as described for pathRef.
    - By “promoting” optional from False to True.
    - By adding a code, if none was previously specified.
    - By using the action attribute to prefix, extend or replace the description (see below and A.2.12.6). The derived data type can add new enumeration values. | -| enumerationRef | The derived data type can modify the data type by “promoting” status to a “higher” value, as described for pathRef. | -| pattern | The derived data type can modify existing pattern values by changing access, status, optional and description exactly as for enumerations. The derived data type can add new patterns and/or replace existing patterns with new patterns, provided that the new patterns do not permit any values that are not valid for the base type. For example a single pattern “[AB]” could be replaced with “A” and “B”, but “C” could not be added. | -| units | The derived data type can add units if the base type did not specify any. | +: XML Facet Inheritance Rules {#tbl:xml-facet-inheritance-rules} + +| Facet | Requirements | +|-------------------------|-------------------------------------------------------------------------------------------------------------------| +| size | The derived data type can define sizes in any way, provided that the new sizes do not permit any values that are not valid for the base type. | +| pathRef | The derived data type can modify the data type in the following ways:\ +- By "promoting" status to a "higher" value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of @sec:deprecated-and-obsoleted-items MUST be obeyed.\ +- By changing targetParent to narrow the set of possible parent objects.\ +- By changing targetType to narrow the set of possible target types.\ +- By changing targetDataType to narrow the set of possible target data types. | +| instanceRef | The derived data type can modify the data type in the following ways:\ +- By "promoting" status to a "higher" value, as described for pathRef.\ +- By changing targetParent to narrow the set of possible parent objects. | +| range | The derived data type can define ranges in any way, provided that the new ranges do not permit any values that are not valid for the base type. | +| enumeration | The derived data type can modify existing enumeration values in the following ways:\ +- By "promoting" access from readOnly to readWrite or writeOnceReadOnly.\ +- By "promoting" status to a "higher" value, as described for pathRef.\ +- By "promoting" optional from False to True.\ +- By adding a code, if none was previously specified.\ +- By using the action attribute to prefix, extend or replace the description (see below and @sec:description-modifications). +The derived data type can add new enumeration values. | +| enumerationRef | The derived data type can modify the data type by "promoting" status to a "higher" value, as described for pathRef. | +| pattern | The derived data type can modify existing pattern values by changing access, status, optional and description exactly as for enumerations.\ +The derived data type can add new patterns and/or replace existing patterns with new patterns, provided that the new patterns do not permit any values that are not valid for the base type. For example a single pattern "[AB]" could be replaced with "A" and "B", but "C" could not be added. | +| units | The derived data type can add units if the base type did not specify any. | Most of the above requirements are non-normative, because it has to be possible to correct errors. For example, if the base type supports a -range of [-1:4095] but the values 0 and 4095 were included in error, +range of [-1:4095] but the values 0 and 4095 were included in error, it would be permissible for a derived type to support ranges of -[-1:-1] and [1:4094.] Processing tools SHOULD be able to detect and +[-1:-1] and [1:4094]. Processing tools SHOULD be able to detect and warn about such cases. When defining a new data type, if a facet is omitted, the new data type will inherit that facet from its base type. If a facet is present, it MUST be fully specified (except that special rules apply to -descriptions; see below and A.2.12.6). For example, this means that a +descriptions; see below and @sec:description-modifications). For example, this means that a derived type that adds additional enumeration values has also to re-declare the enumeration values of the base type. -For example, in the following, the derived type inherits the units facet -from its parent but it does not inherit the range facet, so the -PacketCounter range is [10:] and the PacketCounter2 range is -[15:20]. - - - - - - - +In the following example, the derived type inherits the units facet from its +parent but it does not inherit the range facet, so the DataBlockSize range is +[0:65535] and the DataBlockSize2 range is [40:1460]. - - - +``` + + + + + + + + + + +``` Similarly, in the following, the enumeration values for ABCD are not A, B, C and D, but are just C and D. This is an error (because the derived type cannot remove enumeration values), and processing tools SHOULD detect and warn about such cases. +``` @@ -2010,17 +2357,19 @@ detect and warn about such cases. +``` A derived data type and any of its facets that support descriptions will inherit those descriptions from the base type. Facet descriptions are inherited regardless of whether the facet is present in the derived type. For any descriptions that are explicitly specified in the derived type, the action attribute controls whether they will be prefixed, -extended or replaced (A.2.12.6). +extended or replaced (@sec:description-modifications). For example, in the following, the description of Z (which is not changed) does not have to be repeated. +``` This is XY. @@ -2048,10 +2397,11 @@ changed) does not have to be repeated. +``` -## 2.4 Glossary, Abbreviations and Bibliography +### Glossary, Abbreviations, Bibliography and Templates -### 2.4.1 Glossary +#### Glossary The glossary is defined using the top-level glossary element, which can contain zero or more item elements. @@ -2059,14 +2409,14 @@ contain zero or more item elements. When defining a new glossary item, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 10 - XML Glossary Items +: XML Glossary Items {#tbl:xml-glossary-items} -| Name | Description | -| :---------- | :---------- | -| id | The glossary item ID. This is the term that is being defined. | -| description | The description of the glossary item. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references. | +| Name | Description | +|--------------------|----------------------------------------------------------------------------------------| +| id | The glossary item ID. This is the term that is being defined. | +| description | The description of the glossary item. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references. | -### 2.4.2 Abbreviations +#### Abbreviations Abbreviations are defined using the top-level abbreviations element, which can contain zero or more item elements. @@ -2074,14 +2424,14 @@ which can contain zero or more item elements. When defining a new abbreviation, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 11 - XML Abbreviation Items +: XML Abbreviation Items {#tbl:xml-abbreviation-items} -| Name | Description | -| :---------- | :---------- | -| id | The abbreviation item ID. This is the abbreviation that is being defined. | -| description | The description of the abbreviation. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references. | +| Name | Description | +|--------------------|----------------------------------------------------------------------------------------| +| id | The abbreviation item ID. This is the abbreviation that is being defined. | +| description | The description of the abbreviation. This can include appropriate markup and template references, e.g. it can include {{bibref}} and {{gloref}} template references. | -### 2.4.3 Bibliography +#### Bibliography The bibliography is defined using the top-level bibliography element, which can contain zero or more (bibliographic) reference elements. @@ -2090,19 +2440,19 @@ When defining a new bibliographic reference, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 12 -- XML Bibliographic References +: XML Bibliographic References {#tbl:xml-bibliographic-references} -| Name | Description | +| Name | Description | |--------------------|----------------------------------------------------------------------------------------| -| id | The bibliographic reference ID. | -| name | The name by which the referenced document is usually known. | -| title | The document title. | -| organization | The organization that published the referenced document, e.g. BBF, IEEE, IETF. | -| category | The document category, e.g. TR (BBF), RFC (IETF). | -| date | The publication date. | -| hyperlink | Hyperlink(s) to the document. | +| id | The bibliographic reference ID. | +| name | The name by which the referenced document is usually known. | +| title | The document title. | +| organization | The organization that published the referenced document, e.g. BBF, IEEE, IETF. | +| category | The document category, e.g. TR (BBF), RFC (IETF). | +| date | The publication date. | +| hyperlink | Hyperlink(s) to the document. | -For BBF standard DM Instances, the C.3.7 rules apply. +For BBF standard DM Instances, the @sec:bibliography-reference-element rules apply. Processing tools SHOULD be lenient when comparing bibliographic reference IDs. Specifically, they SHOULD ignore all whitespace, @@ -2115,7 +2465,37 @@ references, e.g. a reference with the same ID (i.e. an ID that compares as equal) as one that was encountered in a different file, but with a different name or hyperlink. -### A.2.5 Components +#### Templates {#template-elements} + +::: note ::: + +The term "template" is used for both description templates +(@sec:description-templates) such as `{{bibref}}` and (confusingly) +`{{template}}`, and for the template elements described here. + +::: + +Template elements define named blocks of text that can be included (using +`{{template}}` description templates) in descriptions. + +When defining a new template element, the following attributes and elements are +relevant (normative requirements are specified in the schema). + +: XML Template Elements {#tbl:xml-template-elements} + +| Name | Description | +|--------------------|----------------------------------------------------------------------------------------| +| id | The template ID. This identifies the template that is being defined. | +| \ | The template body. | + +When including a template body in a description, processing tools MUST +pre-process the value as for descriptions (@sec:description-pre-processing) and +then replace the `{{template}}` description template with the resulting +text. The template body might contain markup, possibly including further +`{{template}}` description templates, so processing tools MUST then process the +expanded text. + +### Components A component is a way of defining a named set of parameters, objects and/or profiles to be used wherever such a group is needed in more than @@ -2125,16 +2505,16 @@ contain zero or more top-level component elements. When defining a new component, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 13 -- XML Component Definition +: XML Component Definition {#tbl:xml-component-definition} -| Name | Description | +| Name | Description | |-------------------|--------------------------------------------------------------------------------| -| name | The component name. | -| description | The component’s description (A.2.2). | -| component | The other components that are referenced (included) by this component. | -| parameter | The component’s top-level parameter definitions (A.2.7). | -| object | The component’s object definitions (0). | -| profile | The component’s profile definitions (A.2.11). | +| name | The component name. | +| description | The component's description (@sec:descriptions). | +| component | The other components that are referenced (included) by this component. | +| parameter | The component's top-level parameter definitions (@sec:parameters). | +| object | The component's object definitions (@sec:objects). | +| profile | The component's profile definitions (@sec:profiles-1). | Referencing (including) a component can be thought of as textual substitution. A component has no version number and is not tied to a @@ -2142,7 +2522,7 @@ particular Root or Service Object. The following is a simple example of component definition and reference. - +``` Number of bytes sent. @@ -2153,7 +2533,9 @@ The following is a simple example of component definition and reference. +``` +``` @@ -2163,6 +2545,7 @@ The following is a simple example of component definition and reference. ... +``` Here the component is referenced from within an object definition. Components can be referenced from within component, model, object, @@ -2170,7 +2553,7 @@ command and event definitions. Parameter, command, event, object and profile definitions within components are relative to the point of inclusion unless overridden using the path attribute. -### A.2.6 Root and Service Objects +### Root and Service Objects Root and Service Objects are defined using the model element and an associated top-level object element. A DM Instance can contain zero or @@ -2179,72 +2562,92 @@ more top-level model elements. When defining a new model, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 14 -- XML Root and Service Objects +: XML Root and Service Objects {#tbl:xml-root-and-service-objects} -| Name | Description | +| Name | Description | |-------------------|-------------------------------------------------------------------------------------------------------------| -| name | The model name, including its major and minor version numbers. | -| base | The name of the previous version of the model (for use when the model version is greater than 1.0). | -| isService | Whether it is a Service Object. This defaults to False and so can be omitted for Root Objects. | -| description | The model’s description (A.2.2). | -| component | The components that are referenced (included) by the model (A.2.5). | -| parameter | The model’s top-level parameter definitions (A.2.7). | -| object | The model’s top-level and other object definitions (0). | -| profile | The model’s profile definitions (A.2.11). | +| name | The model name, including its major and minor version numbers. | +| base | The name of the previous version of the model (for use when the model version is greater than 1.0). | +| isService | Whether it is a Service Object. This defaults to False and so can be omitted for Root Objects. | +| description | The model's description (@sec:descriptions). | +| component | The components that are referenced (included) by the model (@sec:components). | +| parameter | The model's top-level parameter definitions (@sec:parameters). | +| object | The model's top-level and other object definitions (@sec:objects). | +| profile | The model's profile definitions (@sec:profiles-1). | Once a given version has been defined, it cannot be modified; instead, a new version of the object has to be defined. For example, the following example defines v1.0 and v1.1 of a notional Service Object. +``` +``` +``` +``` -### A.2.7 Parameters +### Parameters Parameters are defined using the parameter element, which can occur within component, model and object elements. When defining a new parameter, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 15 -- XML Parameter Definition +: XML Parameter Definition {#tbl:xml-parameter-definition} -| Name | Description | -|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| name | The parameter name (3.1). | -| access | Whether the parameter can be writable (readWrite) or not (readOnly). | -| status | The parameter’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new parameter. | -| activeNotify | The parameter’s {normal, forceEnabled, forceDefault, canDeny} Active Notification status. This defaults to normal, and so is not often specified for a new parameter. Note that in USP, forceEnabled and forceDefault are equivalent to normal. | -| forcedInform | For CWMP only, the parameter’s Forced Inform status. This defaults to False, and so is not often specified for a new parameter. | -| description | The parameter’s description (A.2.2). | -| syntax | The parameter’s syntax (A.2.7.1). | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| name | The parameter name (@sec:general-notation). | +| access | Whether the parameter is writable (readWrite), read-only (readOnly), or writable once then read-only (writeOnceReadOnly). | +| status | The parameter's {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new parameter. | +| activeNotify | The parameter's {normal, forceEnabled, forceDefault, canDeny} Active Notification status. This defaults to normal, and so is not often specified for a new parameter.\ +Note that in USP, forceEnabled and forceDefault are equivalent to normal. | +| forcedInform | For CWMP only, the parameter's Forced Inform status. This defaults to False, and so is not often specified for a new parameter. | +| description | The parameter's description (@sec:descriptions). | +| syntax | The parameter's syntax (@sec:parameter-syntax). | -#### A.2.7.1 Parameter Syntax +#### Parameter Syntax Parameter syntax is defined using the syntax element, which can occur only within parameter elements. When defining a new parameter, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 16 -- XML Parameter Syntax - -| Name | Description | -|--------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| hidden | Whether the value is hidden on readback. This defaults to False, and so is not often specified for a new parameter. | -| command | For CWMP only, whether setting the parameter triggers an Agent action as opposed to changing the configuration. This defaults to False. Note that this is an CWMP-only attribute (not an element) and is different from the USP-only command element (A.2.8). | -| list minItems maxItems nestedBrackets size | If the parameter is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (A.2.3.3). Note that a list-valued parameter is always a string as far as the protocol is concerned. For a list, the rest of the syntax specification refers to the individual list items, not to the parameter value. | -| base64 boolean dateTime hexBinary int long string unsignedInt unsignedLong | If the parameter is of a primitive data type, specifies a primitive data type reference, e.g. <int/>. If the parameter data type is derived from a primitive data type, specifies an anonymous primitive data type definition (A.2.3.2), e.g. <int><range maxInclusive=“255”/></int>. Each primitive data type element supports only the facets (A.2.3.3) that are appropriate to that data type. | -| dataType | If the parameter is of a named data type, specifies a named data type (A.2.3.1) reference, e.g. <dataType ref=“IPAddress”/>. If the parameter data type is derived from a named data type, specifies an anonymous named data type (A.2.3.2) definition, e.g. <dataType base=“IPAddress”><size maxLength=“15”/></dataType> | +: XML Parameter Syntax {#tbl:xml-parameter-syntax} -### A.2.8 Commands (USP Only) +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| hidden | Whether the value is hidden on readback. This defaults to False, and so is not often specified for a new parameter. | +| command | For CWMP only, whether setting the parameter triggers an Agent action as opposed to changing the configuration. This defaults to False.\ +Note that this is an CWMP-only attribute (not an element) and is different from the USP-only command element (@sec:commands-usp-only). | +| list\ +minItems\ +maxItems\ +nestedBrackets\ +size | If the parameter is list-valued, details of the list value. This allows specification of the maximum and minimum number of items in the list, and of nested list behavior, and also supports a size facet for the list (@sec:data-type-facets).\ +Note that a list-valued parameter is always a string as far as the protocol is concerned. For a list, the rest of the syntax specification refers to the individual list items, not to the parameter value. | +| base64\ +boolean\ +dateTime\ +hexBinary\ +int\ +long\ +string\ +unsignedInt\ +unsignedLong | If the parameter is of a primitive data type, specifies a primitive data type reference, e.g. \. If the parameter data type is derived from a primitive data type, specifies an anonymous primitive data type definition (@sec:anonymous-data-types), e.g. \\\. Each primitive data type element supports only the facets (@sec:data-type-facets) that are appropriate to that data type. | +| dataType | If the parameter is of a named data type, specifies a named data type (@sec:named-data-types) reference, e.g. \.\ +If the parameter data type is derived from a named data type, specifies an anonymous named data type (@sec:anonymous-data-types) definition, e.g. \\\ | + +### Commands (USP Only) Data Model Commands are defined using the command element, which can occur within component and object elements. When defining a new Data @@ -2253,27 +2656,27 @@ Model Command, the following attributes and elements are relevant not apply to CWMP, which uses Objects and/or Parameters to simulate commands. -Table 17 -- XML Command Definition +: XML Command Definition {#tbl:xml-command-definition} -| Name | Description | -|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| -| name | The command name (3.1). | -| async | Whether this command is asynchronous or not. This defaults to false. | -| status | The command’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new command. | -| description | The command’s description (A.2.2). | -| input | The command’s input arguments (can be omitted if there are none). | -| output | The command’s output arguments (can be omitted if there are none). | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| name | The command name (@sec:general-notation). | +| async | Whether this command is asynchronous or not. This defaults to false. | +| status | The command's {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new command. | +| description | The command's description (@sec:descriptions). | +| input | The command's input arguments (can be omitted if there are none). | +| output | The command's output arguments (can be omitted if there are none). | The input / output elements define the command's input / output arguments (respectively). -Table 18 -- XML Command Input / Output Arguments Definition +: XML Command Input / Output Arguments Definition {#tbl:xml-command-input-output-arguments-definition} -| Name | Description | -|-----------------|----------------------------------------------------------------------------------------------------| -| component | The arguments defined by components that are referenced (included) by the command (A.2.5). | -| parameter | The command’s parameter arguments (A.2.7). | -| object | The command’s object arguments (0). | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| component | The arguments defined by components that are referenced (included) by the command (@sec:components). | +| parameter | The command's parameter arguments (@sec:parameters). | +| object | The command's object arguments (@sec:objects). | Command argument parameter / object elements are similar to the corresponding data model parameter / object elements but support @@ -2289,8 +2692,7 @@ object arguments. When a command argument is a table, its instance numbers MUST be 1, 2, 3... (assigned sequentially without gaps). -### A.2.9 Events (USP Only) ------------------ +### Events (USP Only) Data Model Events are defined using the event element, which can occur within component and object elements. When defining a new Data Model @@ -2298,14 +2700,14 @@ Event, the following attributes and elements are relevant (normative requirements are specified in the schema). This concept does not apply to CWMP. -| Name | Description | -|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| -| name | The event name (3.1). | -| status | The event’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new event. | -| description | The event’s description (A.2.2). | -| component | The arguments defined by components that are referenced (included) by the event (A.2.5). | -| parameter | The event’s parameter arguments (A.2.7). | -| object | The event’s object arguments (A.2.10). | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| name | The event name (@sec:general-notation). | +| status | The event's {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new event. | +| description | The event's description (@sec:descriptions). | +| component | The arguments defined by components that are referenced (included) by the event (@sec:components). | +| parameter | The event's parameter arguments (@sec:parameters). | +| object | The event's object arguments (@sec:objects). | Event argument parameter / object elements are similar to the corresponding data model parameter / object elements but support @@ -2321,96 +2723,97 @@ object arguments. When an event argument is a table, its instance numbers MUST be 1, 2, 3... (assigned sequentially without gaps). -### A.2.10 Objects +### Objects Objects are defined using the object element, which can occur within component and model elements. When defining a new object, the following attributes and elements are relevant (normative requirements are specified in the schema). -Table 19 -- XML Object Definition - -| Name | Description | -|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| name | The object name, specified as a partial path (3.1). | -| access | Whether object instances can be Added or Deleted (readWrite) or not (readOnly). Adding or deleting instances is meaningful only for a Multi-Instance Object (table). | -| minEntries | The minimum number of instances of this object (always less than or equal to maxEntries). | -| maxEntries | The maximum number of instances of this object (can be “unbounded”). minEntries and maxEntries allow the object to be placed into one of three categories: · minEntries=0, maxEntries=1: single-instance object which might not be allowed to exist, e.g. because only one of it and another object can exist at the same time. Note that this is not the same thing as an optional object (in a sense, all objects are optional; requirements are specified via profiles). For an object with minEntries=0, maxEntries=1, the description MUST explain why it might not be allowed to exist, e.g. referencing the other objects that constrain it. · minEntries=1, maxEntries=1: single-instance object that is always allowed to exist. · All other cases: Multi-Instance Object (table) (A.2.10.1). | -| mountType | For USP only, denotes whether this object is a Mountable Object , a Mount Point, or none. Possible values are: · mountable: this object is a Mountable Object. Such an object appears only right under the Root Object. · mountPoint: this object is a Mount Point. · none (default): this object is neither a Mountable Object nor a Mount Point. | -| status | The object’s {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new object. | -| description | The object’s description (A.2.2). | -| component | The components that are referenced (included) by the object (A.2.5). | -| parameter | The object’s parameter definitions (A.2.7). | -| command | For USP only, the object’s command definitions (A.2.8). | -| event | For USP only, the object’s event definitions (A.2.9). | +: XML Object Definition {#tbl:xml-object-definition} -#### A.2.10.1 Tables +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| name | The object name, specified as a partial path (@sec:general-notation). | +| access | Whether object instances can be Added or Deleted (readWrite) or not (readOnly). Adding or deleting instances is meaningful only for a Multi-Instance Object (table). | +| minEntries | The minimum number of instances of this object (always less than or equal to maxEntries). | +| maxEntries | The maximum number of instances of this object (can be "unbounded"). minEntries and maxEntries allow the object to be placed into one of three categories:\ +- **minEntries=0, maxEntries=1**: single-instance object which might not be allowed to exist, e.g. because only one of it and another object can exist at the same time. Note that this is not the same thing as an optional object (in a sense, all objects are optional; requirements are specified via profiles). For an object with minEntries=0, maxEntries=1, the description MUST explain why it might not be allowed to exist, e.g. referencing the other objects that constrain it.\ +- **minEntries=1, maxEntries=1**: single-instance object that is always allowed to exist.\ +- **All other cases**: Multi-Instance Object (table) (@sec:tables). | +| mountType | For USP only, denotes whether this object is a Mountable Object, a Mount Point, or none. Possible values are:\ +- **mountable**: this object is a Mountable Object. Such an object appears only right under the Root Object.\ +- **mountPoint**: this object is a Mount Point.\ +- **none (default)**: this object is neither a Mountable Object nor a Mount Point. | +| status | The object's {current, deprecated, obsoleted, deleted} status. This defaults to current, and so is not likely to be specified for a new object. | +| description | The object's description (@sec:descriptions). | +| component | The components that are referenced (included) by the object (@sec:components). | +| parameter | The object's parameter definitions (@sec:parameters). | +| command | For USP only, the object's command definitions (@sec:commands-usp-only). | +| event | For USP only, the object's event definitions (@sec:events-usp-only). | + +#### Tables If an object is a table, several other attributes and elements are relevant (normative requirements are specified in the schema). -Table 20 -- XML Table Definition +: XML Table Definition {#tbl:xml-table-definition} -| Name | Description | -|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| name | For a table, the last part of the name has to be “{i}.” (3.1). | -| numEntriesParameter | The name of the parameter (in the parent object) that contains the number of entries in the table. Such a parameter is needed whenever there is a variable number of entries, i.e. whenever maxEntries is unbounded or is greater than minEntries. | -| enableParameter | For CWMP only, the name of the parameter (in each table entry) that enables and disables that table entry. Such a parameter is needed whenever access is readWrite (so the Controller might be able to create entries) and at least one uniqueKey element that defines a functional key is present. | -| uniqueKey | An element that specifies a unique key by referencing those parameters that constitute the unique key (all of these parameters are single-valued, i.e. not list-valued). In CWMP only, for a non-functional key, or if the table has no enableParameter, the uniqueness requirement always applies; for a functional key, and if the table has an enableParameter, the uniqueness requirement applies only to enabled table entries. | -| discriminatorParameter | The name of the parameter (in the parent object) that selects which of the available objects that are part of the same union to use. Such a discrimination parameter is needed whenever there are multiple alternative sub-objects, i.e. objects where minEntries=0 and maxEntries=1. | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| name | For a table, the last part of the name has to be "{i}." (@sec:general-notation). | +| numEntriesParameter | The name of the parameter (in the parent object) that contains the number of entries in the table. Such a parameter is needed whenever there is a variable number of entries, i.e. whenever maxEntries is unbounded or is greater than minEntries. | +| enableParameter | For CWMP only, the name of the parameter (in each table entry) that enables and disables that table entry. Such a parameter is needed whenever access is readWrite (so the Controller might be able to create entries) and at least one uniqueKey element that defines a functional key is present. | +| uniqueKey | An element that specifies a unique key by referencing those parameters that constitute the unique key (all of these parameters are single-valued, i.e. not list-valued).\ +In CWMP only, for a non-functional key, or if the table has no enableParameter, the uniqueness requirement always applies; for a functional key, and if the table has an enableParameter, the uniqueness requirement applies only to enabled table entries. | +| discriminatorParameter | The name of the parameter (in the parent object) that selects which of the available objects that are part of the same union to use. Such a discrimination parameter is needed whenever there are multiple alternative sub-objects, i.e. objects where minEntries=0 and maxEntries=1. | Each unique key is either functional or non-functional: -- A functional key references at least one parameter that relates to - the purpose (or function) of the table, e.g. a DHCP option tag in a - DHCP option table, or an external port number in a port mapping - table. +- A functional key references at least one parameter that is necessary for the correct operation of the table, e.g., a DHCP option tag in a DHCP option table, or an external port number in a port mapping table. -- A non-functional key references only parameters that do not relate - to the purpose (or function) of the table, e.g. an Alias or Name - parameter. +- A non-functional key references only parameters that are not necessary for the correct operation of the table, e.g., an Alias parameter or (sometimes) a Name parameter. A unique key is assumed to be functional unless explicitly marked as non-functional by setting the unique key's functional attribute to false. -As can be seen from the description in Table 20, in CWMP, non-functional -keys are always required to be unique, regardless of whether the table -has an enableParameter, or is enabled or disabled. Therefore, at most -one entry in a given parent object can exist with a given value for a -non-functional unique key. USP doesn't require any different behavior -for both functional and non-functional keys: all keys are always -required to be unique. +As can be seen from the description in @tbl:xml-table-definition, in CWMP, +non-functional keys are always required to be unique, regardless of whether the +table has an enableParameter, or is enabled or disabled. Therefore, at most one +entry in a given parent object can exist with a given value for a +non-functional unique key. USP doesn't require any different behavior for both +functional and non-functional keys: all keys are always required to be unique. The uniqueness requirement means that the value of the unique key MUST be unique for all instances of a given parent object regardless of how instances got created. -If a parameter (or group of parameters) is not defined as a unique key, +If a parameter (or group of parameters) is not defined as a unique key, an Agent MUST NOT expect or require those parameters to contain a value that is unique within the table. Such parameters MAY subsequently be defined as a vendor-specific data model composite unique key, but that composite unique key definition MUST include at least one vendor-specific parameter. -### A.2.11 Profiles +### Profiles Profiles are defined using the profile element, which can occur within component and model elements. When defining a new profile, the following attributes and elements are always relevant (normative requirements are specified in the schema). -Table 21 -- XML Profile Definition +: XML Profile Definition {#tbl:xml-profile-definition} -| Name | Description | -|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| name | The profile name, including its version number (2.3.3). | -| base | The name of the previous version of the profile (for use when the profile version is greater than 1). | -| extends | A list of the names of the profiles that this profile extends. | -| minVersion | A list of the model names that define the minimum versions for which this profile can be defined. Note that it is only necessary to specify this if the profile is defined within a component element. | -| description | The profile’s description (A.2.2). | -| parameter | The profile’s parameter requirements, which can include descriptions, references to the parameters in question, and the parameter access requirement. | -| object | The profile’s object requirements, which can include descriptions, references to the objects in question, the object access requirements, and requirements for the object’s parameters, commands and events, including requirements for command and event arguments. | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| name | The profile name, including its version number (@sec:profile-versions). | +| base | The name of the previous version of the profile (for use when the profile version is greater than 1). | +| extends | A list of the names of the profiles that this profile extends. | +| minVersion | A list of the model names that define the minimum versions for which this profile can be defined. Note that it is only necessary to specify this if the profile is defined within a component element. | +| description | The profile's description (@sec:descriptions). | +| parameter | The profile's parameter requirements, which can include descriptions, references to the parameters in question, and the parameter access requirement. | +| object | The profile's object requirements, which can include descriptions, references to the objects in question, the object access requirements, and requirements for the object's parameters, commands and events, including requirements for command and event arguments. | Note: @@ -2420,7 +2823,7 @@ Note: - If a command or event specifies argument requirements, it has to list (at least) all its mandatory arguments. -### A.2.12 Modifications +### Modifications New data types, components, models and profiles can be created based on existing items. This does not modify the existing item. @@ -2434,105 +2837,108 @@ the name of the existing item that is to be modified. The syntax for modifying an item is the same as for creating an item, but there are rules. These rules are not specified in the DM Schema. -#### A.2.12.1 Parameter Modifications +#### Parameter Modifications The following rules govern parameter modifications. -Table 22 -- XML Parameter Modification +: XML Parameter Modification {#tbl:xml-parameter-modification} -| Name | Description | -|----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| access | Can be “promoted” from readOnly to readWrite. | -| status | Can be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed. | -| activeNotify | Can be changed from forceEnabled to forceDefault. No other changes are permitted. | -| forcedInform | Cannot be changed. | -| description | Can be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved. | -| syntax/hidden | Cannot be changed. | -| syntax/list | Can add or modify the list element in the following ways: · Can convert a non-list string parameter to a list provided that an empty string was already a valid value with the appropriate meaning. · Can adjust limits on numbers of items, and on the list size, provided that the new rules do not permit any values that were not valid for the previous version of the parameter. | -| syntax/int etc syntax/dataType | Can make any change that follows the base type restriction rules of A.2.3.8, e.g. can add enumerations. | -| syntax/default | A default can be added if the parameter did not already have one. | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| access | Can be "promoted" from readOnly to readWrite or writeOnceReadOnly. | +| status | Can be "promoted" to a "higher" value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of @sec:deprecated-and-obsoleted-items MUST be obeyed. | +| activeNotify | Can be changed from forceEnabled to forceDefault. No other changes are permitted. | +| forcedInform | Cannot be changed. | +| description | Can be prefixed, extended or replaced via use of the action attribute (@sec:description-modifications). When changing the description, behavioral backwards compatibility MUST be preserved. | +| syntax/hidden | Cannot be changed. | +| syntax/list | Can add or modify the list element in the following ways:\ +- Can convert a non-list string parameter to a list provided that an empty string was already a valid value with the appropriate meaning.\ +- Can adjust limits on numbers of items, and on the list size, provided that the new rules do not permit any values that were not valid for the previous version of the parameter. | +| syntax/int etc.\ +syntax/dataType | Can make any change that follows the base type restriction rules of @sec:base-type-restriction, e.g. can add enumerations. | +| syntax/default | A default can be added if the parameter did not already have one. | Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules. -#### 2.12.2 Command Modifications (USP Only) +#### Command Modifications (USP Only) The following rules govern command modifications. -Table 23 -- XML Command Modification +: XML Command Modification {#tbl:xml-command-modification} -| Name | Description | -|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| async | Can be changed. | -| status | Can be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed. | -| description | Can be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved. | -| input | Can modify input arguments according to the rules for modifying data model parameters and objects. Can add new input arguments, either directly or by referencing (including) new components. | -| output | Can modify output arguments according to the rules for modifying data model parameters and objects. Can add new output arguments, either directly or by referencing (including) new components. | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| async | Can be changed. | +| status | Can be "promoted" to a "higher" value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of @sec:deprecated-and-obsoleted-items MUST be obeyed. | +| description | Can be prefixed, extended or replaced via use of the action attribute (@sec:description-modifications). When changing the description, behavioral backwards compatibility MUST be preserved. | +| input | Can modify input arguments according to the rules for modifying data model parameters and objects. Can add new input arguments, either directly or by referencing (including) new components. | +| output | Can modify output arguments according to the rules for modifying data model parameters and objects. Can add new output arguments, either directly or by referencing (including) new components. | Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules. -#### 2.12.3 Event Modifications (USP Only) +#### Event Modifications (USP Only) The following rules govern command modifications. -Table 24 -- XML Event Modification +: XML Event Modification {#tbl:xml-event-modification} -| Name | Description | -|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| status | Can be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed. | -| description | Can be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved. | -| component | Can add new arguments by referencing (including) new components. | -| parameter | Can modify parameter arguments according to the rules for modifying data model parameters. Can add new parameter arguments. | -| object | Can modify object arguments according to the rules for modifying data model objects. Can add new object arguments. | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| status | Can be "promoted" to a "higher" value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of @sec:deprecated-and-obsoleted-items MUST be obeyed. | +| description | Can be prefixed, extended or replaced via use of the action attribute (@sec:description-modifications). When changing the description, behavioral backwards compatibility MUST be preserved. | +| component | Can add new arguments by referencing (including) new components. | +| parameter | Can modify parameter arguments according to the rules for modifying data model parameters. Can add new parameter arguments. | +| object | Can modify object arguments according to the rules for modifying data model objects. Can add new object arguments. | Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of a parameter. Processing tools SHOULD be able to detect and warn when a parameter is modified in a way that contravenes the above rules. -#### A.2.12.4 Object Modifications +#### Object Modifications The following rules govern object modifications. -Table 25 -- XML Object Modification - -| Name | Description | -|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| access | Can be “promoted” from readOnly to readWrite. | -| minEntries | Cannot be changed. | -| maxEntries | Cannot be changed. | -| numEntriesParameter | Cannot be changed, unless was previously missing, in which case can be added. | -| enableParameter | For CWMP only, cannot be changed, unless was previously missing, in which case can be added. | -| status | Can be “promoted” to a “higher” value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed. | -| description | Can be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved. | -| uniqueKey | Cannot be changed, but new unique keys can be added. | -| component | Can reference (include) new components. | -| parameter | Can add new parameters. | -| command | For USP only, can add new commands. | -| event | For USP only, can add new events. | +: XML Object Modification {#tbl:xml-object-modification} + +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| access | Can be "promoted" from readOnly to readWrite. | +| minEntries | Cannot be changed. | +| maxEntries | Cannot be changed. | +| numEntriesParameter | Cannot be changed, unless was previously missing, in which case can be added. | +| enableParameter | For CWMP only, cannot be changed, unless was previously missing, in which case can be added. | +| status | Can be "promoted" to a "higher" value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of @sec:deprecated-and-obsoleted-items MUST be obeyed. | +| description | Can be prefixed, extended or replaced via use of the action attribute (@sec:description-modifications). When changing the description, behavioral backwards compatibility MUST be preserved. | +| uniqueKey | Cannot be changed, but new unique keys can be added. | +| component | Can reference (include) new components. | +| parameter | Can add new parameters. | +| command | For USP only, can add new commands. | +| event | For USP only, can add new events. | Most of the above requirements are non-normative, because it has to be possible to correct errors in a previous version of an object. Processing tools SHOULD be able to detect and warn when an object is modified in a way that contravenes the above rules. -#### A.2.12.5 Profile Modifications +#### Profile Modifications The following rules govern profile modifications. They apply to the profile element, and to its nested parameter, command, event and object elements. -Table 26 -- XML Profile Modification +: XML Profile Modification {#tbl:xml-profile-modification} -| Name | Description | -| ----------- | ------------ | -| status | Can be "promoted" to a "higher" value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of Section 2.4 MUST be obeyed. | -| description | Can be prefixed, extended or replaced via use of the action attribute (A.2.12.6). When changing the description, behavioral backwards compatibility MUST be preserved. | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| status | Can be "promoted" to a "higher" value, where the lowest to highest ordering is: current, deprecated, obsoleted, deleted. For example, current can be changed to deprecated, and obsoleted can be changed to deleted, but deleted cannot be changed back to obsoleted. When promoting status, the deprecation, obsoletion and deletion rules of @sec:deprecated-and-obsoleted-items MUST be obeyed. | +| description | Can be prefixed, extended or replaced via use of the action attribute (@sec:description-modifications). When changing the description, behavioral backwards compatibility MUST be preserved. | Most of the above requirements are non-normative, because it has to be possible to correct errors in a profile. Indeed, since profiles are @@ -2540,21 +2946,25 @@ immutable, the only valid reason for changing a profile is to correct errors. Processing tools SHOULD be able to detect and warn when a profile is modified in a way that contravenes the above rules. -#### A.2.12.6 Description Modifications +#### Description Modifications The following rules govern description modifications. They apply to all description elements. -Table 27 -- XML Description Modification +: XML Description Modification {#tbl:xml-description-modification} -| Name | Description | -|--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| action | Determines how the description will be modified; allowed values are:
    - create: create a new description (this is the default but is of course not permitted when modifying a description).
    - replace: replace the existing description with the new text.
    - append: append the new text to the existing description.
    - prefix: prefix the existing description with the new text.

    | +| Name | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| action | Determines how the description will be modified; allowed values are:\ +- **create**: create a new description (this is the default but is of course not permitted when modifying a description).\ +- **replace**: replace the existing description with the new text.\ +- **append**: append the new text to the existing description.\ +- **prefix**: prefix the existing description with the new text. | In the case of **prefix** and **append**, processing tools SHOULD insert a line break between the existing description and the new text. -## A.3 DM Schema +## DM Schema The normative version of the DM Schema can be found at . Please be @@ -2563,11 +2973,11 @@ time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site. -# Annex B. CWMP Device Type XML Schema +# CWMP Device Type XML Schema {.annex1} -## B.1 Introduction +## Introduction -The CWMP Device Type XML Schema 9, or DT Schema, is used for +The CWMP Device Type XML Schema [@XML-Schema-Primer], or DT Schema, is used for describing a device's supported data model. DT Schema instance documents can contain the following: @@ -2582,7 +2992,7 @@ DT Schema instance documents cannot contain definitions of Root or Service Objects. All such definitions have to reside in DM Schema instance documents. -## B.2 Normative Information +## Normative Information It is possible to create instance documents that conform to the DT Schema but nevertheless are not valid device type specifications. This @@ -2609,7 +3019,7 @@ therefore arises. The answer is as follows: part of the document, this is an error in the DT Schema, and the requirement in the main part of the document takes precedence. -### B.2.1 Importing DM Instances +### Importing DM Instances DM Instances are imported using the top-level import element, which differs from the DM Schema import element in that only data types and @@ -2617,7 +3027,7 @@ models can be imported (components cannot be imported because they are not used in DT Instances). Note -- the rules for importing DM Instances into DT Instances are -consistent with those given in A.2.1 for importing DM Instances into +consistent with those given in @sec:importing-dm-instances for importing DM Instances into other DM Instances. The only difference is an additional rule governing the use, when available, of the DT Instance URL. @@ -2627,14 +3037,14 @@ attribute. The rules governing the file attribute's value and its use for locating the DM Instance are as follows: -- It MUST be a URL adhering to RFC 3986 5. +- It MUST be a URL adhering to RFC 3986 [@RFC3986]. - If the URL includes a scheme, it MUST be http, https or ftp. - If the URL includes an authority, it MUST NOT include credentials. - For standard BBF DM Instances, the rules that apply to the filename - part (final path segment) of the A.2.1.1 BBFURL MUST be applied to + part (final path segment) of the @sec:uri-conventions BBFURL MUST be applied to the filename part of this URL. This means that the corrigendum number can be omitted in order to refer to the latest corrigendum. @@ -2643,37 +3053,35 @@ the DM Instance are as follows: available, the relative reference MUST be interpreted relative to the DT Instance URL. -### B.2.2 Features +### Features The feature element provides a simple way for a DT Instance to indicate whether a given feature is supported. The current set of standard features is as follows: - -| Feature | Description | -|-----------------|-------------------------------------| -| DNSClient | Device contains a DNS client. | -| DNSServer | Device contains a DNS server. | -| Firewall | Device contains a firewall. | -| IPv6 | Device supports IPv6. | -| NAT | Device supports NAT. | -| Router | Device is a router. | +| Feature | Description | +|--------------|----------------------------------| +| DNSClient | Device contains a DNS client. | +| DNSServer | Device contains a DNS server. | +| Firewall | Device contains a firewall. | +| IPv6 | Device supports IPv6. | +| NAT | Device supports NAT. | +| Router | Device is a router. | Vendor-specific features MAY be supported, and if so the feature name MUST begin with `X__`, where `` MUST be as defined in -Section 3.3. +@sec:vendor-specific-elements. This example feature declaration illustrates the use of annotation: +``` - Supports a DNS Server and XYZ. - +``` - -#### B.2.2.1 DT Features Schema +#### DT Features Schema In order to make it easy to add new features, standard feature names are defined in a separate DT Features Schema that is imported by the DT Schema. The DT Features @@ -2689,7 +3097,7 @@ published at any time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site. -## B.3 DT Schema +## DT Schema The normative version of the DT Schema can be found at . Please be @@ -2698,15 +3106,15 @@ time, in which case the version referenced in this document would become out of date. Any conflict MUST be resolved in favor of the normative version on the web site. -# Annex C - Requirements for BBF Standard Data Models +# Requirements for BBF Standard Data Models {.annex1} -## C.1 Introduction +## Introduction This Annex defines requirements that apply to all standard BBF DM Instances. These requirements extend the normative requirements of the -DM Schema (Annex A). +DM Schema (@sec:cwmp-data-model-definition-xml-schema). -## C.2 Character Encoding and Character Set +## Character Encoding and Character Set The file MUST use UTF-8 encoding, indicated by the following Initial line: @@ -2721,7 +3129,7 @@ representation is 10 (`#xA`), 13 (`#xD`) or is in the (inclusive) range 32-126. *Note -- writing LF (LINE FEED) for `#xA` and `CR` (CARRIAGE RETURN) for -`#xD`, section 2.11 of the XML specification* *6 states that XML +`#xD`, the XML specification [@XML, {Section 2.11}] states that XML processors have to behave as if all CR LF sequences, or any CR characters not followed by LF, are translated to LF.* @@ -2735,18 +3143,18 @@ character by using a character reference such as "`è`". Such a character reference will always be replaced with the referenced character before being passed to the application, so use of the reference is no different from direct use of the referenced character -(in this case the letter "è", an "e" with a grave accent).* +(in this case the letter "è", an "e" with a grave accent).* -## C.3 XML Usage +## XML Usage -### C.3.1 Data Model Item Names +### Data Model Item Names All data model item names, i.e. data type, component, data model, object, parameter and profile names, MUST start with an upper-case -letter (or an underscore for an internal data type, component or model -name) and MUST NOT contain hyphens or non-initial underscores. +letter (or an underscore for an internal data type, component, model +or profile) and MUST NOT contain hyphens or non-initial underscores. -### C.3.2 DM and DMR Schema Versions +### DM and DMR Schema Versions The file SHOULD use the most recent approved versions of the DM and DMR Schemas. @@ -2755,23 +3163,25 @@ Schemas. to give hints to processing tools that generate reports from DM Instances.* -### C.3.3 SchemaLocation Attribute +### SchemaLocation Attribute -The top-level `xsi:schemaLocation` attribute defines the location of all -of the referenced BBF-published XML Schemas. All URLs MUST be absolute -ones that reference the published XML Schema on the [BBF web site](https://cwmp-data-models.broadband-forum.org). +The top-level `xsi:schemaLocation` attribute defines the location of all of the +referenced BBF-published XML Schemas. All URLs MUST be absolute ones that +reference the published XML Schema on the +[BBF web site](https://cwmp-data-models.broadband-forum.org). Example: - +``` xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-5 http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-5.xsd urn:broadband-forum-org:cwmp:datamodel-report-0-1 http://www.broadband-forum.org/cwmp/cwmp-datamodel-report.xsd" +``` -### C.3.4 Spec Attribute +### Spec Attribute -The top-level spec attribute (A.2.1.1) indicates the specification with +The top-level spec attribute (@sec:uri-conventions) indicates the specification with which the file is associated. It MUST be of the form "urn:broadband-forum-org:tr-nnn-i-a-c", where nnn is the specification number (including leading zeros), i is the issue number, a is the @@ -2783,11 +3193,13 @@ TR-106 (Issue 1) Amendment 2 Corrigendum 1. Example: +``` spec="urn:broadband-forum-org:tr-181-2-5-0" +``` -### C.3.5 File Attribute +### File Attribute -The top-level file attribute (A.2.1.1) indicates the file name. It MUST +The top-level file attribute (@sec:uri-conventions) indicates the file name. It MUST be of the form "tr-nnn-i-a-c.xml" or "tr-nnn-i-a-c-label.xml", where nnn, i, a and c are the same as in the spec attribute. The label, which MUST NOT begin with a digit, is only needed if more than one DM Instance @@ -2795,15 +3207,26 @@ is associated with a given specification. Example: +``` file="tr-181-2-5-0.xml" +``` -### C.3.6 Import Element +### Import Element The import element's spec and file attributes MUST NOT specify the corrigendum number. This means that an import element always references -the latest corrigendum (A.2.1.1). +the latest corrigendum (@sec:uri-conventions). -### C.3.7 Bibliography Reference Element +### Bibliography Reference Element + +::: note ::: + +Bibliographic references in the `tr-069-biblio.xml` file MUST be grouped by +organization and MUST be sorted "naturally" (more-or-less alphabetically, but +avoiding surprises, e.g., "TR-181a9" would be listed before "TR-181a10"). The +main rule is "follow existing practice". + +::: The bibliography reference id attribute is intended to uniquely identify this reference across all instance documents. Therefore, this attribute @@ -2812,11 +3235,20 @@ MUST obey the following rules: For a BBF Technical Report, it MUST be of the form "TR-nnnixaycz", where TR is the literal "TR", nnn is the Technical Report number (including leading zeros), i, a and c are literal letters, and x, y, and z are the -issue, amendment and corrigendum numbers respectively. The issue number -(ix) is omitted if it is issue 1 and the amendment number (ay) is -omitted if it is amendment 0. For example, "TR-106a2" refers to TR-106 -(Issue 1) Amendment 2. If the corrigendum number (cz) is omitted, the -most recent corrigendum is assumed. +issue, amendment and corrigendum numbers (respectively). +Omitted issue, amendment or corrigendum numbers refer to the most recent issue, +amendment or corrigendum, so "TR-nnn" is the most recent corrigendum of the +most recent amendment of the most recent issue, "TR-nnni2" is the most recent +corrigendum of the most recent amendment of issue 2, etc.. Literal i1, a0 +and/or c0 can be used, if needed, to refer specifically to the initial version. + +::: note ::: + +When using the `{{bibref}}` template to refer to bibliographic references, the +plain "TR-nnn" form SHOULD be used by default; more specific forms can be used +where the reference is to a specific version. + +::: For an IETF RFC, it MUST be of the form "RFCnnn", where RFC is the literal "RFC" and nnn is the RFC number (no leading zeros). @@ -2837,6 +3269,7 @@ Formally, bibliographic reference IDs in instance documents that are published by the BBF and the other organizations mentioned above are defined as follows: +``` ReferenceID = BBFID | RFCID | IEEEID @@ -2848,10 +3281,10 @@ defined as follows: BBFNumber = DIGIT{3,} // including leading zeros, e.g. 069 BBFIssue = "i" - | "" // empty means Issue 1 + | "" // empty means the most recent Issue BBFAmendment = "a" - | "" // empty means Amendment 0 + | "" // empty means the most recent Amendment BBFCorrigendum = "c" | "" // empty means the most recent Corrigendum @@ -2887,8 +3320,9 @@ defined as follows: | "" // can be empty OtherURI = +``` -### C.4 General Formatting +### General Formatting The file MUST use 2 SPACE characters for indentation. @@ -2907,12 +3341,14 @@ All description elements MUST be formatted as follows: - Multi-line descriptions MUST be indented relative to the description element and formatted on separate lines, as in: +``` First line of multi-line description. Second line of multi-line description. +``` -## C.5 Initial XML Comment Formatting +## Initial XML Comment Formatting The Initial Line (the `` line) MUST be immediately followed by an Initial XML comment that consists of the following (separated by blank @@ -2946,7 +3382,7 @@ SPACE characters followed by the section name and a colon. --> ``` -### C.5.1 One-line Summary +### One-line Summary The One-line summary MUST contain a brief description of the reason for the creation of this version. It SHOULD NOT be terminated with a period @@ -2956,18 +3392,16 @@ Example: ``` - ``` -### C.5.2 Summary Section +### Summary Section The Summary section MAY extend the information in the One-line summary. -# Appendix I - HTML Data Model Reports +# HTML Data Model Reports {.appendix1} - -## I.1 Introduction +## Introduction TR-106 Amendment 2 published the first version of the DM Schema. Since then the normative definitions of all CWMP data models have been @@ -2978,7 +3412,7 @@ published. This appendix briefly discusses these HTML reports. -## I.2 Report Types +## Report Types There are two types of HTML reports published for a given version of a data model: @@ -2997,43 +3431,53 @@ from Device:2.11 and earlier (back to Device:2.0 inclusive). The partial report is in tr-181-2-11-0-diffs.html, and only includes the data model definitions added or changed by TR-181 Issue 2 Amendment 11. -## I.3 Report Layout +## Report Layout Each HTML data model report contains the following sections: -| Notice | The legal notice, lifted from the top of the associated XML data model file. | -|---------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Summary | Describes the reason for this data model version. This is lifted from the associated XML data model file’s document description. | -| Table of Contents | Hyperlinks to the various sections within the report, as well as links to each Object and Profile definition within the report. | -| Data Types | Named data type definitions (i.e. not built-in types) that are used to define Parameters within the report. Each data type definition consists of name, type, and description. | -| References | Hyperlinks to external bibliography references cited by Object, Parameter, and Profile descriptions within the report. | -| Data model definition | Object and Parameter definitions. Which Object and Parameter definitions are included depends on whether it is a full or partial (last only) report. | -| Inform and Notification Requirements | Lists those Parameters within the report that are: forced inform parameters, forced active notification parameters, and parameters for which active notification can be denied. | -| Profile Definitions | Profile definitions, showing Object and Parameter requirements. Which Profiles are included depends on whether it is a full or partial (last only) report. | - -## I.4 Data Model Definition - -Parameters make use of a limited subset of the default SOAP data types. The +| | | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| Notice | The legal notice, lifted from the top of the associated XML data model file. | +| Summary | Describes the reason for this data model version. This is lifted from the associated XML data model file's document description. | +| Table of Contents | Hyperlinks to the various sections within the report, as well as links to each Object and Profile definition within the report. | +| Data Types | Named data type definitions (i.e. not built-in types) that are used to define Parameters within the report. Each data type definition consists of name, type, and description. | +| References | Hyperlinks to external bibliography references cited by Object, Parameter, and Profile descriptions within the report. | +| Data model definition | Object and Parameter definitions. Which Object and Parameter definitions are included depends on whether it is a full or partial (last only) report. | +| Inform and Notification Requirements | Lists those Parameters within the report that are: forced inform parameters, forced active notification parameters, and parameters for which active notification can be denied. | +| Profile Definitions | Profile definitions, showing Object and Parameter requirements. Which Profiles are included depends on whether it is a full or partial (last only) report. | + +## Data Model Definition + +Parameters make use of a limited subset of the default SOAP data types [@SOAP]. The notation used to represent these types within the report is listed in the following table. -| Type | Description | -|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| object | A container for parameters and/or other objects. The full Path Name of a parameter is given by the parameter name appended to the full Path Name of the object it is contained within. | -| string | For strings, a minimum and maximum allowed length can be indicated using the form string(Min:Max), where Min and Max are the minimum and maximum string length in characters. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in string(Max). Multiple comma-separated ranges can be specified, in which case the string length will be in one of the ranges. | -| int | Integer in the range –2147483648 to +2147483647, inclusive. For some int types, a value range is given using the form int(Min:Max) or int(Min:Max step Step) where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges. | -| long | Long integer in the range –9223372036854775808 to 9223372036854775807, inclusive. For some long types, a value range is given using the form long(Min:Max) or long(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges. | -| unsignedInt | Unsigned integer in the range 0 to 4294967295, inclusive. For some unsignedInt types, a value range is given using the form unsignedInt(Min:Max) or unsigned(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1.Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges. | -| unsignedLong | Unsigned long integer in the range 0 to 18446744073709551615, inclusive. For some unsignedLong types, a value range is given using the form unsignedLong(Min:Max) or unsignedLong(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges. | -| boolean | Boolean, where the allowed values are “0” or “1” (or equivalently, “true” or “false”). | -| dateTime | The subset of the ISO 8601 date-time format defined by the SOAP dateTime type. | -| base64 | Base64 encoded binary (no line-length limitation). A minimum and maximum allowed length can be indicated using the form base64(Min:Max), where Min and Max are the minimum and maximum length in characters before Base64 encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in base64(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges. | -| hexBinary | Hex encoded binary. A minimum and maximum allowed length can be indicated using the form hexBinary(Min:Max), where Min and Max are the minimum and maximum length in characters before Hex Binary encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in hexBinary(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges. | +| Type | Description | +|-------------------|-------------------------------------------------------------------------------------------------------------| +| object | A container for parameters and/or other objects. The full Path Name of a parameter is given by the parameter name appended to the full Path Name of the object it is contained within. |\ + +| string | For strings, a minimum and maximum allowed length can be indicated using the form string(Min:Max), where Min and Max are the minimum and maximum string length in characters. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in string(Max). Multiple comma-separated ranges can be specified, in which case the string length will be in one of the ranges. |\ + +| int | Integer in the range -2147483648 to +2147483647, inclusive. For some int types, a value range is given using the form int(Min:Max) or int(Min:Max step Step) where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges. |\ + +| long | Long integer in the range -9223372036854775808 to 9223372036854775807, inclusive. For some long types, a value range is given using the form long(Min:Max) or long(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges. |\ + +| unsignedInt | Unsigned integer in the range 0 to 4294967295, inclusive. For some unsignedInt types, a value range is given using the form unsignedInt(Min:Max) or unsigned(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges. |\ + +| unsignedLong | Unsigned long integer in the range 0 to 18446744073709551615, inclusive. For some unsignedLong types, a value range is given using the form unsignedLong(Min:Max) or unsignedLong(Min:Max step Step), where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges. |\ + +| boolean | Boolean, where the allowed values are "0" or "1" (or equivalently, "true" or "false"). |\ + +| dateTime | The subset of the ISO 8601 date-time format defined by the SOAP dateTime type [@SOAP]. |\ + +| base64 | Base64 encoded binary (no line-length limitation). A minimum and maximum allowed length can be indicated using the form base64(Min:Max), where Min and Max are the minimum and maximum length in characters before Base64 encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in base64(Max). Multiple comma-separate ranges can be specified, in which case the length MUST be in one of the ranges. |\ + +| hexBinary | Hex encoded binary. A minimum and maximum allowed length can be indicated using the form hexBinary(Min:Max), where Min and Max are the minimum and maximum length in characters before Hex Binary encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in hexBinary(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges. | Note: A Parameter that is defined to be one of the named data types, is reported as such at the beginning of the Parameter's description via a reference back to the associated data type definition (e.g. -[MacAddress]). However, such parameters still indicate their SOAP +[MacAddress]). However, such parameters still indicate their SOAP data type (as discussed in the table above). -**End of Broadband Forum Technical Report TR-106** +!include back-matter.md diff --git a/support/docs/tr-069-biblio.html b/support/docs/tr-069-biblio.html new file mode 100644 index 0000000..d376c3f --- /dev/null +++ b/support/docs/tr-069-biblio.html @@ -0,0 +1,1775 @@ + + + + + tr-069-biblio.xml + + + +
    + + + + +
    Broadband Forum

        DATA MODEL DEFINITION


    TR-069 Data Model Bibliographic References
    tr-069-biblio.xml

    +
    +

    License

    +Copyright (c) 2009-2019, Broadband Forum
    +

    +The undersigned members have elected to grant the copyright to +their contributed material used in this software:
    +Copyright (c) 2019 ARRIS Enterprises, LLC.
    +

    +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met:
    +

    +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +

    +2. Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following +disclaimer in the documentation and/or other materials +provided with the distribution. +

    +3. Neither the name of the copyright holder nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior written +permission. +

    +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +

    +The above license is used as a license under copyright only. +Please reference the Forum IPR Policy for patent licensing terms +<https://www.broadband-forum.org/ipr-policy>. +

    +Any moral rights which are necessary to exercise under the above +license grant are also deemed granted under this license. +

    + + +

    Summary

    +

    +

      +
    • Added references from versioned files (grouped by category and sorted within category) +
    • Updated references for convention that "TR-nnn" means the latest Amendment and Corrigendum +
    • Added references in support of Device:2.13 DM Instances +
    • Added references for 3GPP 5G standards in support of Device:2.14 DM Instances +
    +

    Table of Contents

    + + + +

    Data Types

    +

    The Parameters defined in this specification make use of a limited subset of the default SOAP data types [SOAP1.1]. These data types and the named data types used by this specification are described below.

    +Note: A Parameter that is defined to be one of the named data types is reported as such at the beginning of the Parameter's description via a reference back to the associated data type definition (e.g. [MacAddress]). However, such parameters still indicate their SOAP data type.

    + + + + + + +
    Data TypeBase TypeDescription
    +

    References

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [3GPP-HSPA]High Speed Packet data Access (HSPA), 3GPP.
    [3GPP-TS.03.03]3GPP TS 03.03, Numbering, Addressing and Identification, 3GPP CT WG4.
    [3GPP-TS.05.05]3GPP TS 05.05, Radio Transmission and Reception, 3GPP GERAN WG1.
    [3GPP-TS.22.011]3GPP TS 22.011, Service accessibility, 3GPP SA WG1.
    [3GPP-TS.22.220]3GPP TS 22.220, Service requirements for Home Node B (HNB) and Home eNode B (HeNB), 3GPP SA WG1.
    [3GPP-TS.23.003]3GPP TS 23.003, Numbering, addressing and identification, 3GPP CT WG4.
    [3GPP-TS.23.032]3GPP TS 23.032, Universal Geographical Area Description (GAD), 3GPP SA WG2.
    [3GPP-TS.23.060]3GPP TS 23.060, General Packet Radio Service (GPRS); Service description; Stage 2, 3GPP SA WG2.
    [3GPP-TS.23.107]3GPP TS 23.107, Quality of Service (QoS) concept and architecture, 3GPP SA WG2.
    [3GPP-TS.23.203]3GPP TS 23.203, Policy and charging control architecture, 3GPP SA WG2.
    [3GPP-TS.23.316]3GPP TS 23.316, Wireless and wireline convergence access support for the 5G System (5GS), 3GPP SA WG2.
    [3GPP-TS.23.401]3GPP TS 23.401, General Packet Radio Service (GPRS) enhancements for Evolved Universal Terrestrial Radio Access Network (E-UTRAN) access, 3GPP SA WG2.
    [3GPP-TS.23.501]3GPP TS 23.501, System architecture for the 5G System (5GS); Stage 2, 3GPP SA WG2.
    [3GPP-TS.24.008]3GPP TS 24.008, Mobile radio interface Layer 3 specification; Core network protocols; Stage 3, 3GPP CT WG1.
    [3GPP-TS.24.301]3GPP TS 24.301, Non-Access-Stratum (NAS) protocol for Evolved Packet System (EPS); Stage 3, 3GPP CT WG1.
    [3GPP-TS.24.501]3GPP TS 24.501, Non-Access-Stratum (NAS) protocol for 5G System (5GS); Stage 3, 3GPP CT WG1.
    [3GPP-TS.24.526]3GPP TS 24.526, User Equipment (UE) policies for 5G System (5GS); Stage 3, 3GPP CT WG1.
    [3GPP-TS.25.104]3GPP TS 25.104, Base Station (BS) radio transmission and reception (FDD), 3GPP RAN WG4.
    [3GPP-TS.25.133]3GPP TS 25.133, Requirements for support of radio resource management (FDD), 3GPP RAN WG4.
    [3GPP-TS.25.171]3GPP TS 25.171, Requirements for support of Assisted Global Positioning System (A-GPS), 3GPP RAN WG4.
    [3GPP-TS.25.214]3GPP TS 25.214, Physical layer procedures (FDD), 3GPP RAN WG1.
    [3GPP-TS.25.304]3GPP TS 25.304, User Equipment (UE) procedures in idle mode and procedures for cell reselection in connected mode, 3GPP RAN WG2.
    [3GPP-TS.25.331]3GPP TS 25.331, Radio Resource Control (RRC); Protocol specification, 3GPP RAN WG2.
    [3GPP-TS.25.401]3GPP TS 25.401, UTRAN overall description, 3GPP RAN WG3.
    [3GPP-TS.25.413]3GPP TS 25.413, UTRAN Iu interface Radio Access Network Application Part (RANAP) signalling, 3GPP RAN WG3.
    [3GPP-TS.25.433]3GPP TS 25.433, UTRAN Iub interface Node B Application Part (NBAP) signalling, 3GPP RAN WG3.
    [3GPP-TS.25.469]3GPP TS 25.469, UTRAN Iuh interface Home Node B Application Part (HNBAP) signalling, 3GPP RAN WG3.
    [3GPP-TS.25.967]3GPP TS 25.967, FDD Home NodeB RF Requirements, 3GPP RAN WG4.
    [3GPP-TS.29.281]3GPP TS 29.281, General Packet Radio System (GPRS) Tunnelling Protocol User Plane (GTPv1-U), 3GPP CT WG4.
    [3GPP-TS.32.300]3GPP TS 32.300, Telecommunication management; Configuration Management (CM); Name convention for Managed Objects, 3GPP SA WG5.
    [3GPP-TS.32.405]3GPP TS 32.405, Telecommunication management; Performance Management (PM); Performance measurements Universal Terrestrial Radio Access Network (UTRAN), 3GPP SA WG5.
    [3GPP-TS.32.452]3GPP TS 32.452, Performance measurements Home Node B(HNB) Subsystem (HNS), 3GPP SA WG5.
    [3GPP-TS.32.453]3GPP TS 32.453, Performance measurements Home Enhanced Node B(HeNB) Subsystem (HeNS), 3GPP SA WG5.
    [3GPP-TS.32.582]3GPP TS 32.582, Telecommunications management; Home Node B (HNB) Operations, Administration, Maintenance and Provisioning (OAM&P); Information model for Type 1 interface HNB to HNB Management System (HMS), 3GPP SA WG5.
    [3GPP-TS.32.584]3GPP TS 32.584, Telecommunications management; Home Node B (HNB) Operations, Administration, Maintenance and Provisioning (OAM&P); XML definitions for Type 1 interface HNB to HNB Management Systems (HMS), 3GPP SA WG5.
    [3GPP-TS.32.592]3GPP TS 32.592, Telecommunications management; Home enhanced Node B (HeNB) Operations, Administration, Maintenance and Provisioning (OAM&P); Information model for Type 1 interface HeNB to HeNB Management System (HeMS), 3GPP SA WG5.
    [3GPP-TS.32.642]3GPP TS 32.642, Telecommunication management; Configuration Management (CM); UTRAN network resources Integration Reference Point (IRP); Network Resource Model (NRM), 3GPP SA WG5.
    [3GPP-TS.33.401]3GPP TS 33.401, 3GPP System Architecture Evolution (SAE); Security architecture, 3GPP SA WG3.
    [3GPP-TS.36.101]3GPP TS 36.101, Evolved Universal Terrestrial Radio Access (E-UTRA); User Equipment (UE) radio transmission and reception, 3GPP RAN WG4.
    [3GPP-TS.36.104]3GPP TS 36.104, Evolved Universal Terrestrial Radio Access (E-UTRA); Base Station (BS) radio transmission and reception, 3GPP RAN WG4.
    [3GPP-TS.36.133]3GPP TS 36.133, Evolved Universal Terrestrial Radio Access (E-UTRA); Requirements for support of radio resource management, 3GPP RAN WG4.
    [3GPP-TS.36.211]3GPP TS 36.211, Evolved Universal Terrestrial Radio Access (E-UTRA); Physical channels and modulation, 3GPP RAN WG1.
    [3GPP-TS.36.212]3GPP TS 36.212, Evolved Universal Terrestrial Radio Access (E-UTRA); Multiplexing and channel coding, 3GPP RAN WG1.
    [3GPP-TS.36.213]3GPP TS 36.213, Evolved Universal Terrestrial Radio Access (E-UTRA); Physical layer procedures, 3GPP RAN WG1.
    [3GPP-TS.36.214]3GPP TS 36.214, Evolved Universal Terrestrial Radio Access (E-UTRA); Physical layer - Measurements, 3GPP RAN WG1.
    [3GPP-TS.36.300]3GPP TS 36.300, Evolved Universal Terrestrial Radio Access (E-UTRA) and Evolved Universal Terrestrial Radio Access Network (E-UTRAN); Overall description; Stage 2, 3GPP RAN WG3.
    [3GPP-TS.36.304]3GPP TS 36.304, Evolved Universal Terrestrial Radio Access (E-UTRA); User Equipment (UE) procedures in idle mode, 3GPP RAN WG2.
    [3GPP-TS.36.314]3GPP TS 36.314, Evolved Universal Terrestrial Radio Access (E-UTRA); Layer 2 - Measurements, 3GPP RAN2 WG2.
    [3GPP-TS.36.321]3GPP TS 36.321, Evolved Universal Terrestrial Radio Access (E-UTRA); Medium Access Control (MAC) protocol specification, 3GPP RAN WG2.
    [3GPP-TS.36.322]3GPP TS 36.322, Evolved Universal Terrestrial Radio Access (E-UTRA); Radio Link Control (RLC) protocol specification, 3GPP RAN WG2.
    [3GPP-TS.36.331]3GPP TS 36.331, Evolved Universal Terrestrial Radio Access (E-UTRA); Radio Resource Control (RRC); Protocol specification, 3GPP RAN WG2.
    [3GPP-TS.36.413]3GPP TS 36.413, Evolved Universal Terrestrial Radio Access Network (E-UTRAN); S1 Application Protocol (S1AP), 3GPP RAN WG3.
    [3GPP-TS.45.005]3GPP TS 45.005, Radio transmission and reception, 3GPP GERAN WG1.
    [3GPP-TS.45.008]3GPP TS 45.008, Radio Access Network; Radio subsystem link control, 3GPP GERAN WG1.
    [3GPP2-A.S0008]A.S0008-C v2.0, Interoperability Specification (IOS) for High Rate Packet Data (HRPD) Radio Access Network Interfaces with Session Control in the Access Network, 3GPP2, January 2009.
    [3GPP2-A.S0009]A.S0009-C v2.0, Interoperability Specification (IOS) for High Rate Packet Data (HRPD) Radio Access Network Interfaces with Session Control in the Packet Control Function, 3GPP2, January 2009.
    [3GPP2-A.S0013]A.S0013-D v2.0, Interoperability Specification (IOS) for CDMA2000 Access Network Interfaces Part 3 Features, 3GPP2, August 2009.
    [3GPP2-A.S0014]A.S0014-D v2.0, Interoperability Specification (IOS) for CDMA2000 Access Network Interfaces Part 4 (A1, A1p, A2, and A5 Interfaces), 3GPP2, August 2009.
    [3GPP2-A.S0024]A.S0024-0 v1.0, Interoperability Specification (IOS) for Femtocell Access Points, 3GPP2, March 2010.
    [3GPP2-C.R1001]C.R1001-G v1.0, Administration of Parameter Value Assignments for CDMA2000 Spread Spectrum Standards - Release G, 3GPP2, June 2009.
    [3GPP2-C.S0005]C.S0005-E v1.0, Upper Layer (Layer 3) Signaling Standard for CDMA2000 Spread Spectrum Systems, 3GPP2, September 2009.
    [3GPP2-C.S0024]C.S0024-B v3.0, CDMA2000 High Rate Packet Data Air Interface Specification, 3GPP2, September 2009.
    [3GPP2-C.S0057]C.S0057-D v1.0, Band Class Specification for CDMA2000 Spread Spectrum Systems, 3GPP2, September 2009.
    [3GPP2-C.S0002-A]3GPP2 C.S0002-A, Physical Layer Standard for CDMA2000 Spread Spectrum Systems, Release A, 3GPP2 TSG-C.
    [3GPP2-C.S0005-A]3GPP2 C.S0005-A, Upper Layer (Layer 3) Signaling Standard for CDMA2000 Spread Spectrum Systems, Release: A, 3GPP2 TSG-C.
    [3GPP2-C.S0024-A]3GPP2 C.S0024-A, CDMA2000 High Rate Packet Data Air Interface Specification, 3GPP2 TSG-C.
    [3GPP2-C.S0024-B]C.S0024-B v3.0, CDMA2000 High Rate Packet Data Air Interface Specification, 3GPP2, September 2009.
    [3GPP2-C.S0057-B]3GPP2 C.S0057-B, Band Class Specification for CDMA2000 Spread Spectrum Systems, 3GPP2 TSG-C.
    [3GPP2-N.S0010]N.S0010-0 v1.0, Advanced Features in Wideband Spread Spectrum Systems, 3GPP2, January 1998.
    [3GPP2-S.S0132]S.S0132-0 v1.0, Femtocell Security Framework, 3GPP2, January 2010.
    [3GPP2-X.S0011]X.S0011-005-C, cdma2000 Wireless IP Network Standard: Accounting Services and 3GPP2 RADIUS VSAs, 3GPP2, August 2003.
    [3GPP2-X.S0059]X.S0059-0 v1.0, CDMA2000 Femtocell Network, 3GPP2, January 2010.
    [3GPP_TS_24.229]3GPP TS 24.229, IP Multimedia Call Control Protocol based on Session Initiation Protocol (SIP) and Session Description Protocol (SDP); Stage 3, 3GPP CT WG1.
    [802.11-2007]IEEE Std 802.11-2007, Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, IEEE, 2007.
    [802.11-2012]IEEE Std 802.11-2012, Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, IEEE, March 2012.
    [802.11-2016]IEEE Std 802.11-2016, Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, IEEE, December 2016.
    [802.11a-1999]IEEE Std 802.11a-1999, High-speed Physical Layer in the 5 GHz band, IEEE, 1999.
    [802.11ac-2013]IEEE Std 802.11ac-2013, Enhancements for Very High Throughput for Operation in Bands below 6 GHz, IEEE, December 2013.
    [802.11ax]IEEE Std 802.11ax, IEEE.
    [802.11b-1999]IEEE Std 802.11b-1999, Higher Speed Physical Layer Extension in the 2.4 GHz band, IEEE, 1999.
    [802.11g-2003]IEEE Std 802.11g-2003, Further Higher Data Rate Extension in the 2.4 GHz Band, IEEE, 2003.
    [802.11h-2003]IEEE Std 802.11h-2003, Spectrum and Transmit Power Management Extensions, IEEE, 2003.
    [802.11n-2009]IEEE Std 802.11n-2009, Amendment 5: Enhancements for Higher Throughput, IEEE, 2009.
    [802.1AB-2009]IEEE Std 802.1AB-2009, Station and Media Access Control Connectivity Discovery, IEEE, 2009.
    [802.1ad-2005]IEEE Std 802.1ad-2005, Virtual Bridged Local Area Networks Amendment 4: Provider Bridges, IEEE, May 2005.
    [802.1AX-2014]IEEE Std 802.1AX-2014, IEEE Standard for Local and metropolitan area networks -- Link Aggregation, IEEE, 2014.
    [802.1D-2004]IEEE Std 802.1D-2004, Media Access Control (MAC) Bridges, IEEE, 2004.
    [802.1Q-2005]IEEE Std 802.1Q-2005, Virtual Bridged Local Area Networks, IEEE, 2006.
    [802.1Q-2011]IEEE Std 802.1Q-2011, MAC Bridges and Virtual Bridge Local Area Networks, IEEE, 2011.
    [802.1x-2004]IEEE Std 802.1x-2004, Standards for Local and Metropolitan Area Networks: Port based Network Access Control, IEEE, 2004.
    [802.3-2012]IEEE Std 802.3-2012, IEEE Standard for Ethernet, IEEE, December 2012.
    [802.3-2015]IEEE Std 802.3-2015, IEEE Standard for Ethernet, IEEE, 2015.
    [802.3-2012_section1]IEEE 802.3-2012 - Section One, IEEE Standard for Ethernet - Section One, IEEE, December 2012.
    [802.3-2012_section2]IEEE 802.3-2012 - Section Two, IEEE Standard for Ethernet - Section Two, IEEE, December 2012.
    [802.3-2012_section3]IEEE 802.3-2012 - Section Three, IEEE Standard for Ethernet - Section Three, IEEE, December 2012.
    [802.3-2012_section4]IEEE 802.3-2012 - Section Four, IEEE Standard for Ethernet - Section Four, IEEE, December 2012.
    [802.3-2012_section5]IEEE 802.3-2012 - Section Five, IEEE Standard for Ethernet - Section Five, IEEE, December 2012.
    [802.3-2012_section6]IEEE 802.3-2012 - Section Six, IEEE Standard for Ethernet - Section Six, IEEE, December 2012.
    [BLUE]Blue, A New Class of Active Queue Management Algorithms.
    [BPF]BPF, Berkeley Packet Filter Syntax, FreeBSD.org, October 2016.
    [DataElements-v1.0]Data Elements Specification, Data Elements Specification Version 1.0, January 2019.
    [DLNA-NDIG]DLNA Networked Device Interoperability Guidelines, DLNA Networked Device Interoperability Guidelines, Volume 2: Media Format Profiles., DLNA, October 2006.
    [DNS-SD]RFC 6763, DNS-Based Service Discovery, IETF, 2013.
    [DSLite]RFC 6333, Dual-Stack Lite Broadband Deployments Following IPv4 Exhaustion, IETF, 2011.
    [DSLite-options]RFC 6334, Dynamic Host Configuation Protocol for IPv6 (DHCPv6) Option for Dual-Stack Lite, IETF, 2011.
    [DVB-TS.102.824]TS 102 824, Digital Video Broadcasting (DVB);Remote Management and Firmware Update System for DVB IP Services, ETSI, July 2008.
    [ETSI_EN_300_444]ETSI EN 300 444, Digital Enhanced Cordless Telecommunications (DECT); Generic Access Profile (GAP), ETSI.
    [ETSI_EN_300_175-5]ETSI EN 300 175-05, Digital Enhanced Cordless Telecommunications (DECT); Common Interface (CI); Part 5: Network (NWK) layer, ETSI.
    [ETSI_EN_300_175-6]ETSI EN 300 175-6, Digital Enhanced Cordless Telecommunications (DECT); Common Interface (CI); Part 6: Identities and addressing, ETSI.
    [ETSI_EN_300_175-7]ETSI 300 175-7, Digital Enhanced Cordless Telecommunications (DECT); Common Interface (CI); Part 7: Security features, ETSI.
    [ETSI_EN_300_175-8]ETSI 300 175-8, Digital Enhanced Cordless Telecommunications (DECT); Common Interface (CI); Part 8: Speech and audio coding and transmission, ETSI.
    [ETSI_ES_201_970]ETSI ES 201 970, Access and Terminals (AT); Public Switched Telephone Network (PSTN); Harmonized specification of physical and electrical characteristics at a 2-wire analogue presented Network Termination Point (NTP), ETSI.
    [ETSI_ES_203_021]ETSI ES 203 021, Access and Terminals (AT); Harmonized basic attachment requirements for Terminals for connection to analogue interfaces of the Telephone Networks, ETSI.
    [ETSI_TR_101_183]ETSI TR 101 183, Public Switched Telephone Network (PSTN); Analogue ringing signals, ETSI.
    [ETSI_TS_102_527-1]ETSI TS 102 527-1, Digital Enhanced Cordless Telecommunications (DECT); New Generation DECT; Part 1: Wideband speech, ETSI.
    [ETSI_TS_102_527-3]ETSI TS 102 527-3, Digital Enhanced Cordless Telecommunications (DECT); New Generation DECT; Part 3: Extended wideband speech services, ETSI.
    [ETSI_TS_102_527-4]ETSI TS 102 527-4, Digital Enhanced Cordless Telecommunications (DECT); New Generation DECT; Part 4: Light Data Services; Software Update Over The Air (SUOTA), content downloading and HTTP based applications, ETSI.
    [ETSI_TS_102_527-5]ETSI TS 102 527-5, Digital Enhanced Cordless Telecommunications (DECT); New Generation DECT; Part 5: Additional feature set nr. 1 for extended wideband speech services, ETSI.
    [ETSI_TS_181_019]ETSI TS 181 019, Telecommunications and Internet converged Services and Protocols for Advanced Networking (TISPAN), ETSI.
    [ETSIBRAN]ETSI EN 301 893, Broadband Radio Access Networks (BRAN); 5 GHz high performance RLAN; Harmonized EN covering the essential requirements of article 3.2 of the RTTE Directive, ETSI.
    [ETSIM2MFA]ETSI TS 102 690 v1.1.6, Machine-to-Machine Communications (M2M Functional Architecture), ETSI, June 2012.
    [ETSIM2MInterfaces]ETSI TS 102 921 v1.1.6, M2M mIa, dIa and mId Interfaces, ETSI, August 2012.
    [FWEREG]draft-allan-5g-fmc-encapsulation, 5G Wireless Wireline Convergence User Plane Encapsulation (5WE), IETF, March 2020.
    [G.988]G.988, ONU management and control interface (OMCI) specification, ITU-T, 2010.
    [G.9701]G.9701, Fast access to subscriber terminals (G.fast)- Physical layer specification, ITU-T, 2014.
    [G.9954]G.9954, Phoneline networking transceivers - Enhanced physical, media access, and link layer specifications (HPNA 3.0 and 3.1), ITU-T, 2007.
    [G.9960]G.9960, Unified high-speed wire-line based home networking transceivers - System architecture and physical layer specification, ITU-T.
    [G.9961]G.9961, Unified high-speed wire-line based home networking transceivers - Data link layer specification, ITU-T.
    [G.9962]G.9962, Unified high-speed wire-line based home networking transceivers - Management specification, ITU-T.
    [G.9964]G.9964, Unified high-speed wire-line based home networking transceivers - Power spectral density specification, ITU-T.
    [G.9973]G.9973, Protocol for identifying home network topology, ITU-T, 2011.
    [G.992.1]G.992.1, Asymmetric digital subscriber line (ADSL) transceivers, ITU-T.
    [G.992.2]G.992.2, Splitterless asymmetric digital subscriber line (ADSL) transceivers, ITU-T.
    [G.992.3]G.992.3, Asymmetric digital subscriber line transceivers 2 (ADSL2), ITU-T.
    [G.992.4]G.992.4, Splitterless asymmetric digital subscriber line transceivers 2 (splitterless ADSL2), ITU-T.
    [G.992.5]G.992.5, Asymmetric Digital Subscriber Line (ADSL) transceivers - Extended bandwidth ADSL2 (ADSL2plus), ITU-T.
    [G.993.1]G.993.1, Very high speed digital subscriber line transceivers, ITU-T.
    [G.993.2]G.993.2, Very high speed digital subscriber line transceivers 2 (VDSL2), ITU-T.
    [G.994.1]G.994.1, Handshake procedures for digital subscriber line (DSL) transceivers, ITU-T.
    [G.996.2]G.996.2, Single-ended line testing for digital subscriber lines (DSL), ITU-T.
    [G.997.1]G.997.1, Physical layer management for digital subscriber line (DSL) transceivers, ITU-T.
    [G.997.2]G.997.2, Physical layer management for FAST transceivers, ITU-T, 2015.
    [G.998.1]G.998.1, ATM-based Multi-Pair Bonding, ITU-T, 2005.
    [G.998.2]G.998.2, Ethernet-based Multi-Pair Bonding, ITU-T, 2005.
    [G.998.3]G.998.3, Multi-Pair Bonding Using Time-Division Inverse Multiplexing, ITU-T, 2005.
    [H.323]H.323, Packet-based multimedia communications systems, ITU-T.
    [H.235.1]H.235.1, H.323 security framework: Baseline security profile, ITU-T.
    [HPAV1.1]HomePlug AV Specification, Version 1.1, HomePlug, 2007.
    [HTML4.01]HTML 4.01 Specification, W3C.
    [I.251.1]I.251.1, Number identification supplementary services : Direct-dialling-In, ITU-T.
    [I.251.2]I.251.2, Number identification supplementary services : Multiple Subscriber Number, ITU-T.
    [I.251.7]I.251.7, Number identification supplementary services : Malicious call Identification, ITU-T.
    [I.252.7]I.252.7, Call offering supplementary services : Explicit call transfer, ITU-T.
    [I.256.2a]I.256.2a, Charging supplementary services : Advice of charge: charging information at call set-up time (AOC-S), ITU-T.
    [I.256.2c]I.256.2c, Charging supplementary services : Advice of charge: charging information at the end of the call (AOC-E), ITU-T.
    [I.256.2b]I.256.2b, Charging supplementary services : Advice of charge: charging information during the call (AOC-D), ITU-T.
    [IANA-portnumbers]IANA Port Numbers, Port Numbers, IANA.
    [IANA-protocolnumbers]IANA Protocol Numbers, Protocol Numbers, IANA.
    [IANA-uri-schemes]IANA Uniform Resource Identifier (URI) Schemes Registry, Uniform Resource Identifier (URI) Schemes, IANA.
    [IANA_Event_Packages]IANA SIP Event packages and Event-template packages Registry, Session Initiation Protocol (SIP) Event Types Namespace, IANA.
    [IANA_SIP_Methods]IANA SIP Methods Registry, Session Initiation Protocol (SIP) Parameters : Methods and Response Codes, IANA.
    [IANAifType]IANAifType, IANAifType-MIB DEFINITIONS, IANA, 2009.
    [IANAProtReg]IANA Protocol Registry, IANA Protocol Registry, IANA.
    [ICSA-Baseline]ICSA Baseline Modular Firewall Certification Criteria, Baseline module - version 4.1, ICSA Labs, 2008.
    [ICSA-Firewall]ICSA Modular Firewall Certification Criteria, Required Services Security Policy - Small/Medium Business (SMB) Category module - version 4.0, ICSA Labs.
    [ICSA-Residential]ICSA Residential Modular Firewall Certification Criteria, Required Services Security Policy - Residential Category module - version 4.1, ICSA Labs, 2008.
    [IEEE1905.1a]IEEE 1905.1a, IEEE Std 1905.1a, Convergent Digital Home Network for Heterogeneous Technologies Amendment 1: Support of new MAC/PHYs and enhancements, IEEE, December 2014., IEEE, December 2014.
    [IEEE_EUI64]Guidelines for 64-bit Global Identifier (EUI-64) Registration Authority, Guidelines for 64-bit Global Identifier (EUI-64) Registration Authority, IEEE, March 1997.
    [IKEv2-params]IKEv2 Parameters, Internet Key Exchange Version 2 (IKEv2) Parameters, IANA.
    [IPDR-FTP]IPDR File Transfer Protocol, IPDR/File Transfer Protocol, TM Forum.
    [IPDR-SP]IPDR Streaming Protocol, IPDR Streaming Protocol (IPDR/SP) Specification, TM Forum.
    [IPDR-XDR]IPDR XDR Encoding Format, IPDR/XDR Encoding Format, TM Forum.
    [IPDR-XML]IPDR XML File Encoding Format, IPDR/XML File Encoding Format, TM Forum.
    [ISO-13818-6:1998]ISO/IEC 13818-6:1998, Information Technology - Generic coding of moving pictures and associated audio information - Part 6: Extensions for DSM-CC, ISO, 1998.
    [ISO3166-1]ISO 3166-1, Codes for the representation of names of countries and their subdivisions - Part 1: Country codes, ISO, 2006.
    [ISO639-1]ISO 639-1, Codes for the representation of names of Languages - Part 1: Alpha-2 code, ISO, 2002.
    [ISO646-1991]ISO/IEC 646-1991, Information Technology - ISO 7-bit coded character set for information interchange, ISO, 1991.
    [ITU-E.118]ITU E.118, The international telecommunication charge card, International Telecommunication Union, May 2006.
    [ITU-E.164]ITU E.164, The international public telecommunication numbering plan, International Telecommunication Union, October 2010.
    [ITU-X.731]ITU X.731, Information Technology - Open Systems Interconnection - Systems Management: State Management Function, International Telecommunication Union, January 1992.
    [ITU-X.733]ITU X.733, Information technology - Open Systems Interconnection - Systems Management: Alarm reporting function, International Telecommunication Union, February 1992.
    [JJ-300.00]JJ-300.00, Home-network Topology Identifying Protocol, TTC, 2011.
    [JJ-300.01]JJ-300.01, The List of Device Categories, TTC, 2011.
    [LIBPCAP]Libpcap, Libpcap File Format, Wireshark, 2015.
    [LMAPIFM]RFC 8193, Information Model for Large-Scale Measurement Platforms (LMAPs), IETF, August 2017.
    [LMAPREG]draft-ietf-ippm-metric-registry-12, Registry for Performance Metrics, IETF, June 30, 2017.
    [MAPv1.0]Multi-AP Specification, Multi-AP Specification Version 1.0, June 2018.
    [MOCA11-MIB]MOCA11-MIB, Remote Management of MoCA Interfaces using SNMP MIB, MoCA Alliance, 2009.
    [MoCAv1.0]MoCA v1.0, MoCA MAC/PHY Specification v1.0, MoCA Alliance, 2009.
    [MoCAv1.1]MoCA v1.1, MoCA MAC/PHY Specification v1.1 Extensions, MoCA Alliance, 2009.
    [MQTT31]MQTT v3.1, MQ Telemetry Transport (MQTT) V3.1 Protocol Specification, 2010.
    [MQTT50]MQTT Version 5.0, MQTT Version 5.0, Candidate OASIS Standard 02., OASIS Message Queuing Telemetry Transport (MQTT) TC, February 2019.
    [MQTT311]MQTT Version 3.1.1, MQTT v3.1.1, OASIS Message Queuing Telemetry Transport (MQTT) TC, October 2014.
    [OUI]Organizationally Unique Identifiers (OUIs).
    [PCPProxy]PCP Proxy Function, Port Control Protocol (PCP) Proxy Function, IETF, September 2015.
    [PKCS7]PKCS #7, Cryptographic Message Syntax Standard.
    [POSIXBase]ISO/IEC/IEEE 9945, Information technology - Portable Operating System Interface (POSIX) Base Specifications, Issue 7, ISO/IEC/IEEE, September 2009.
    [Q.931]Q.931, ISDN user-network interface layer 3 specification for basic call control., ITU-T.
    [RED]References on RED (Random Early Detection) Queue Management.
    [RFC793]RFC 793, Transmission Control Protocol, IETF, September 1981.
    [RFC862]RFC 862, Echo Protocol, IETF, 1983.
    [RFC959]RFC 959, File Transfer Protocol, IETF, 1985.
    [RFC1035]RFC 1035, Domain Names - Implementation and Specification, IETF, 1987.
    [RFC1323]RFC 1323, TCP Extensions for High Performance, IETF, May 1992.
    [RFC1332]RFC 1332, The PPP Internet Protocol Control Protocol (IPCP), IETF, 1992.
    [RFC1350]RFC 1350, The TFTP Protocol (Revision 2), IETF.
    [RFC1378]RFC 1378, The PPP AppleTalk Control Protocol (ATCP), IETF, 1992.
    [RFC1552]RFC 1552, The PPP Internetwork Packet Exchange Control Protocol (IPXCP), IETF, 1993.
    [RFC1661]RFC 1661, The Point-to-Point Protocol (PPP), IETF, 1994.
    [RFC1877]RFC 1877, PPP Internet Protocol Control Protocol Extensions for Name Server Addresses, IETF, 1995.
    [RFC1974]RFC 1974, PPP Stac LZS Compression Protocol, IETF, 1996.
    [RFC2080]RFC 2080, RIPng for IPv6, IETF, 1997.
    [RFC2097]RFC 2097, The PPP NetBIOS Frames Control Protocol (NBFCP), IETF, 1997.
    [RFC2119]RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, IETF.
    [RFC2131]RFC 2131, Dynamic Host Configuration Protocol, IETF.
    [RFC2132]RFC 2132, DHCP Options and BOOTP Vendor Extensions, IETF.
    [RFC2198]RFC 2198, RTP Payload for Redundant Audio Data, IETF.
    [RFC2225]RFC 2225, Classical IP and ARP over ATM, IETF.
    [RFC2228]RFC 2228, FTP Security Extensions, IETF.
    [RFC2326]RFC 2326, Real Time Streaming Protocol (RTSP), IETF.
    [RFC2364]RFC 2364, PPP Over AAL5, IETF, 1998.
    [RFC2474]RFC 2474, Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers, IETF.
    [RFC2516]RFC 2516, A Method for Transmitting PPP Over Ethernet (PPPoE), IETF.
    [RFC2581]RFC 2581, TCP Congestion Control, IETF, April 1999.
    [RFC2582]RFC 2582, The NewReno Modification to TCP's Fast Recovery Algorithm, IETF, April 1999.
    [RFC2616]RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1, IETF, 1999.
    [RFC2634]RFC 2634, Enhanced Security Services for S/MIME, IETF.
    [RFC2662]RFC 2662, Definitions of Managed Objects for the ADSL Lines, IETF.
    [RFC2684]RFC 2684, Multiprotocol Encapsulation over ATM Adaptation Layer 5, IETF.
    [RFC2697]RFC 2697, A Single Rate Three Color Marker, IETF.
    [RFC2698]RFC 2698, A Two Rate Three Color Marker, IETF.
    [RFC2782]RFC 2782, A DNS RR for specifying the location of services (DNS SRV), IETF, 2000.
    [RFC2784]RFC 2784, Generic Routing Encapsulation (GRE), IETF, November 2000.
    [RFC2818]RFC 2818, HTTP Over TLS, IETF, May 2000.
    [RFC2819]RFC 2819, Remote Network Monitoring Management Information Base, IETF, 2000.
    [RFC2863]RFC 2863, The Interfaces Group MIB, IETF, 2000.
    [RFC2865]RFC 2865, Remote Authentication Dial In User Service (RADIUS), IETF, 2000.
    [RFC2866]RFC 2866, RADIUS Accounting, IETF, 2000.
    [RFC2869]RFC 2869, RADIUS Extensions, IETF, 2000.
    [RFC2890]RFC 2890, Key and Sequence Number Extensions to GRE, IETF, November 2000.
    [RFC2898]RFC 2898, PKCS #5: Password-Based Cryptography Specification Version 2.0, IETF.
    [RFC2960]RFC 2960, Stream Control Transmission Protocol (SCTP), IETF.
    [RFC2974]RFC 2974, Session Announcement Protocol, IETF, October 2000.
    [RFC3004]RFC 3004, The User Class Option for DHCP, IETF.
    [RFC3066]RFC 3066, Tags for the Identification of Languages, IETF.
    [RFC3174]RFC 3174, US Secure Hash Algorithm 1 (SHA1), IETF, September, 2001.
    [RFC3232]RFC 3232, "Assigned Numbers: RFC 1700 is Replaced by an On-line Database", IETF, 2002.
    [RFC3261]RFC 3261, SIP: Session Initiation Protocol, IETF, June 2002.
    [RFC3315]RFC 3315, Dynamic Host Configuration Protocol for IPv6 (DHCPv6), IETF, 2003.
    [RFC3339]RFC 3339, Date and Time on the Internet: Timestamps, IETF, July, 2002.
    [RFC3376]RFC 3376, Internet Group Management Protocol (IGMP) Version 3, IETF.
    [RFC3435]RFC 3435, Media Gateway Control Protocol (MGCP) Version 1.0, IETF.
    [RFC3455]RFC 3455, Private Header (P-Header) Extensions to the Session Initiation Protocol (SIP) for the 3rd-Generation Partnership Project (3GPP), IETF, January 2003.
    [RFC3489]RFC 3489, STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs), IETF.
    [RFC3513]RFC 3513, Internet Protocol Version 6 (IPv6) Addressing Architecture, IETF.
    [RFC3550]RFC 3550, RTP: A Transport Protocol for Real-Time Applications, IETF, July 2003.
    [RFC3596]RFC 3596, DDNS Extensions to Support IP Version 6, IETF, 2003.
    [RFC3611]RFC 3611, RTP Control Protocol Extended Reports (RTCP XR), IETF.
    [RFC3633]RFC 3633, IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6, IETF, 2003.
    [RFC3646]RFC 3646, DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6), IETF, 2003.
    [RFC3775]RFC 3775, Mobility Support in IPv6, IETF, 2004.
    [RFC3873]RFC 3873, Stream Control Transmission Protocol (SCTP) Management Information Base (MIB), IETF, September 2004.
    [RFC3925]RFC 3925, Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4), IETF.
    [RFC3926]RFC 3926, FLUTE - File Delivery over Unidirectional Transport, IETF, October 2004.
    [RFC3927]RFC 3927, Dynamic Configuration of IPv4 Link-Local Addresses, IETF, 2005.
    [RFC3931]RFC 3931, Layer Two Tunneling Protocol - Version 3 (L2TPv3), IETF, March 2005.
    [RFC3948]RFC 3948, UDP Encapsulation of IPsec ESP Packets, IETF, January 2005.
    [RFC3986]RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, IETF.
    [RFC4007]RFC 4007, IPv6 Scoped Address Architecture, IETF.
    [RFC4028]RFC 4028, Session Timers in the Session Initiation Protocol (SIP), IETF, April 2005.
    [RFC4078]RFC 4078, The TV-Anytime Content Reference Identifier (CRID), IETF.
    [RFC4122]RFC 4122, A Universally Unique IDentifier (UUID) URN Namespace, IETF, 2005.
    [RFC4180]RFC4180, Common Format and MIME Type for Comma-Separated Values (CSV) Files, IETF, October 2005.
    [RFC4191]RFC 4191, Default Router Preferences and More-Specific Routes, IETF, 2005.
    [RFC4193]RFC 4193, Unique Local IPv6 Unicast Addresses, IETF, 2005.
    [RFC4242]RFC 4242, Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6 (DHCPv6), IETF, 2005.
    [RFC4291]RFC 4291, IP Version 6 Addressing Architecture, IETF, 2006.
    [RFC4292]RFC 4292, IP Forwarding Table MIB, IETF, 2006.
    [RFC4293]RFC 4293, Management Information Base for the Internet Protocol (IP), IETF, 2006.
    [RFC4301]RFC 4301, Security Architecture for the Internet Protocol, IETF, December 2005.
    [RFC4302]RFC 4302, IP Authentication Header, IETF, December 2005.
    [RFC4303]RFC 4303, IP Encapsulating Security Payload (ESP), IETF, December 2005.
    [RFC4307]RFC 4307, Cryptographic Algorithms for Use in the Internet Key Exchange Version 2 (IKEv2), IETF, December 2005.
    [RFC4340]RFC 4340, Datagram Congestion Control Protocol (DCCP), IETF.
    [RFC4389]RFC 4389, Neighbor Discovery Proxies (ND Proxy), IETF, 2006.
    [RFC4585]RFC 4585, Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF), IETF.
    [RFC4588]RFC 4588, RTP Retransmission Packet Format, IETF.
    [RFC4632]RFC 4632, Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan, IETF, 2006.
    [RFC4719]RFC 4719, Transport of Ethernet Frames over Layer 2 Tunneling Protocol Version 3 (L2TPv3), IETF, November 2006.
    [RFC4733]RFC 4733, RTP Payload for DTMF Digits, Telephony Tones and Telephony Signals, IETF.
    [RFC4835]RFC 4835, Cryptographic Algorithm Implementation Requirements for Encapsulating Security Payload (ESP) and Authentication Header (AH), IETF, 2007.
    [RFC4861]RFC 4861, Neighbor Discovery for IP version 6 (IPv6), IETF, 2007.
    [RFC4862]RFC 4862, IPv6 Stateless Address Autoconfiguration, IETF, 2007.
    [RFC4960]RFC 4960, Stream Control Transmission Protocol, IETF, September 2007.
    [RFC5072]RFC 5072, IP Version 6 over PPP, IETF, 2007.
    [RFC5139]RFC 5139, Revised Civic Location Format For Presence Information Data Format Location Object (PIDF-LO), IETF, February 2008.
    [RFC5280]RFC 5280, Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile, IETF, May 2008.
    [RFC5491]RFC 5491, GEOPRIV Presence Information Data Format Location Object (PIDF-LO) Usage Clarification, Considerations, and Recommendations, IETF, March 2009.
    [RFC5625]RFC 5625, DNS Proxy Implementation Guidelines, IETF, 2009.
    [RFC5969]RFC 5969, IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) - Protocol Specification, IETF, 2010.
    [RFC5996]RFC 5996, Internet Key Exchange Protocol Version 2 (IKEv2), IETF, September 2010.
    [RFC6106]RFC 6106, IPv6 Router Advertisement Option for DNS Configuration, IETF, 2010.
    [RFC6120]RFC 6120, Extensible Messaging and Presence Protocol (XMPP) : Core, IETF, 2011.
    [RFC6140]RFC 6140, Registration for Multiple Phone Numbers in the Session Initiation Protocol (SIP), IETF.
    [RFC6234]RFC 6234, US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, May, 2011.
    [RFC6455]RFC 6455, The WebSocket Protocol, IETF, December 2011.
    [RFC6762]RFC 6762, Multicast DNS, IETF, February 2013.
    [RFC6838]RFC 6838, Media Type Specifications and Registration Procedures, IETF, January 2013.
    [RFC6887]RFC 6887, Port Control Protocol (PCP), IETF, 2013.
    [RFC6970]RFC 6970, Universal Plug and Play (UPnP) Internet Gateway Device (IGD) - Port Control Protocol (PCP) Interworking Function, IETF, 2013.
    [RFC7159]RFC7159, The JavaScript Object Notation (JSON) Data Interchange Format, IETF, March 2014.
    [RFC7230]RFC 7230, Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing, IETF, June 2014.
    [RFC7252]RFC 7252, The Constrained Application Protocol (CoAP), IETF, June 2014.
    [RFC7291]RFC 7291, DHCP Options for the Port Control Protocol (PCP), IETF, 2014.
    [RFC7348]RFC 7348, Virtual eXtensible Local Area Network (VXLAN), IETF, August 2014.
    [RFC7395]RFC 7395, An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket, IETF, October 2014.
    [RFC7398]RFC 7398, A Reference Path and Measurement Points for Large-Scale Measurement of Broadband Performance, IETF, February 2015.
    [RFC7468]RFC 7468, Textual Encoding of PKIX, PKCS, and CMS Structures, IETF, April 2015.
    [RFC7594]RFC 7594, A Framework for Large-Scale Measurement of Broadband Performance (LMAP), IETF, September 2015.
    [RFC7597]RFC 7597, Mapping of Address and Port with Encapsulation (MAP), IETF, July 2015.
    [RFC7598]RFC 7598, DHCPv6 Options for configuration of Softwire Address and Port Mapped Clients, IETF, July 2015.
    [RFC7599]RFC 7599, Mapping of Address and Port using Translation (MAP-T), IETF, July 2015.
    [RFC8141]RFC 8141, Uniform Resource Names (URNs), IETF, April 2017.
    [RFC 6335]RFC6335, Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry, IETF, 2011.
    [SOAP1.1]Simple Object Access Protocol (SOAP) 1.1, W3C.
    [SSH-FTP]SSH File Transfer Protocol.
    [STOMP1.2]STOMP Protocol Specification, STOMP Protocol Specification, Version 1.2.
    [T.38]T.38, Procedures for real-time Group 3 facsimile communication over IP networks., ITU-T.
    [TR-064]TR-064 Corrigendum 1, LAN-Side DSL CPE Configuration Specification, Broadband Forum, August 2015.
    [TR-064i2]TR-064 Issue 2, LAN-Side CPE Configuration, Broadband Forum, August 2015.
    [TR-069]TR-069 Amendment 6, CPE WAN Management Protocol, Broadband Forum, April 2018.
    [TR-069a0]TR-069, CPE WAN Management Protocol, Broadband Forum, May 2004.
    [TR-069a1]TR-069 Amendment 1, CPE WAN Management Protocol, Broadband Forum, December 2006.
    [TR-069a2]TR-069 Amendment 2, CPE WAN Management Protocol, Broadband Forum, December 2007.
    [TR-069a3]TR-069 Amendment 3, CPE WAN Management Protocol, Broadband Forum, November 2010.
    [TR-069a4]TR-069 Amendment 4, CPE WAN Management Protocol, Broadband Forum, July 2011.
    [TR-069a5]TR-069 Amendment 5, CPE WAN Management Protocol, Broadband Forum, December 2013.
    [TR-069a6]TR-069 Amendment 6, CPE WAN Management Protocol, Broadband Forum, April 2018.
    [TR-098]TR-098 Amendment 2 Corrigendum 1, Internet Gateway Device Data Model for TR-069, Broadband Forum, December 2014.
    [TR-098a0]TR-098, Internet Gateway Device Data Model for TR-069, Broadband Forum, September 2005.
    [TR-098a1]TR-098 Amendment 1, Internet Gateway Device Data Model for TR-069, Broadband Forum, December 2006.
    [TR-098a2]TR-098 Amendment 2, Internet Gateway Device Data Model for TR-069, Broadband Forum, September 2008.
    [TR-104i2]TR-104 Issue 2, Provisioning Parameters for VoIP CPE, Broadband Forum, March 2014.
    [TR-106]TR-106 Amendment 8, Data Model Template for CWMP Endpoints and USP Agents, Broadband Forum, May 2018.
    [TR-106a0]TR-106, Data Model Template for TR-069-Enabled Devices, Broadband Forum, September 2005.
    [TR-106a1]TR-106 Amendment 1, Data Model Template for TR-069-Enabled Devices, Broadband Forum, November 2006.
    [TR-106a2]TR-106 Amendment 2, Data Model Template for TR-069-Enabled Devices, Broadband Forum, November 2008.
    [TR-106a3]TR-106 Amendment 3, Data Model Template for TR-069-Enabled Devices, Broadband Forum, September 2009.
    [TR-106a4]TR-106 Amendment 4, Data Model Template for TR-069-Enabled Devices, Broadband Forum, February 2010.
    [TR-106a5]TR-106 Amendment 5, Data Model Template for TR-069-Enabled Devices, Broadband Forum, November 2010.
    [TR-106a6]TR-106 Amendment 6, Data Model Template for TR-069-Enabled Devices, Broadband Forum, July 2011.
    [TR-106a7]TR-106 Amendment 7, Data Model Template for TR-069-Enabled Devices, Broadband Forum, September 2013.
    [TR-106a8]TR-106 Amendment 8, Data Model Template for CWMP Endpoints and USP Agents, Broadband Forum, May 2018.
    [TR-124]TR-124 Issue 5, Functional Requirements for Broadband Residential Gateway Devices, Broadband Forum, July 2016.
    [TR-124i2]TR-124 Issue 2, Functional Requirements for Broadband Residential Gateway Devices, Broadband Forum, May 2010.
    [TR-124i5]TR-124 Issue 5, Functional Requirements for Broadband Residential Gateway Devices, Broadband Forum, July 2016.
    [TR-124i6]TR-124 Issue 6, Functional Requirements for Broadband Residential Gateway Devices, Broadband Forum, July 2020.
    [TR-135]TR-135 Amendment 3, Data Model for a TR-069 Enabled STB, Broadband Forum, November 2012.
    [TR-135a0]TR-135, Data Model for a TR-069 Enabled STB, Broadband Forum, December 2007.
    [TR-135a3]TR-135 Amendment 3, Data Model for a TR-069 Enabled STB, Broadband Forum, November 2012.
    [TR-140]TR-140, TR-069 Data Model for Storage Service Devices, Broadband Forum.
    [TR-143]TR-143 Amendment 3, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, May 2017.
    [TR-143a0]TR-143, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, May 2008.
    [TR-143a1]TR-143 Amendment 1, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, December 2014.
    [TR-143a3]TR-143 Amendment 3, Enabling Network Throughput Performance Tests and Statistical Monitoring, Broadband Forum, May 2017.
    [TR-157]TR-157 Amendment 10, Component Objects for CWMP, Broadband Forum, November 2015.
    [TR-157a0]TR-157, Component Object for CWMP, Broadband Forum, March 2009.
    [TR-157a3]TR-157 Amendment 3, Component Objects for CWMP, Broadband Forum, November 2010.
    [TR-157a5]TR-157 Amendment 5, Component Objects for CWMP, Broadband Forum, November 2011.
    [TR-157a10]TR-157 Amendment 10, Component Objects for CWMP, Broadband Forum, November 2015.
    [TR-159]TR-159, Management Framework for xDSL Bonding, Broadband Forum, December 2008.
    [TR-181i1]TR-181 Issue 1, Device Data Model for TR-069, Broadband Forum, February 2010.
    [TR-181i2]TR-181 Issue 2 Amendment 13, Device Data Model, Broadband Forum, September 2019.
    [TR-181i2a0]TR-181 Issue 2, Device Data Model for TR-069, Broadband Forum, May 2010.
    [TR-181i2a1]TR-181 Issue 2 Amendment 1, Device Data Model for TR-069, Broadband Forum, November 2010.
    [TR-181i2a2]TR-181 Issue 2 Amendment 2, Device Data Model for TR-069, Broadband Forum, February 2011.
    [TR-181i2a5]TR-181 Issue 2 Amendment 5, Device Data Model for TR-069, Broadband Forum, 2012.
    [TR-181i2a8]TR-181 Issue 2 Amendment 8, Device Data Model for TR-069, Broadband Forum, September 2014.
    [TR-181i2a12]TR-181 Issue 2 Amendment 12, Device Data Model, Broadband Forum, April 2018.
    [TR-181i2a13]TR-181 Issue 2 Amendment 13, Device Data Model, Broadband Forum, September 2019.
    [TR-196i2]TR-196 Issue 2, Femto Access Point Service Data Model, Broadband Forum, November 2011.
    [TR-232]TR-232, Bulk Data Collection, Broadband Forum, May 2012.
    [TR-262]TR-262, Femto Component Objects, Broadband Forum, November 2011.
    [TR-304]TR-304, Broadband Access Service Attributes and Performance Metrics, Broadband Forum, February 2015.
    [TR-369]TR-369 Issue 1 Corrigendum 2, User Services Platform, Broadband Forum, November 2018.
    [TR-390]TR-390, Performance Measurement from Customer Equipment to IP Edge, Broadband Forum, May 2017.
    [TR-471]TR-471, Maximum IP-Layer Capacity Metric, Related Metrics, and Measurements, Broadband Forum, TBD.
    [UPA-PLC]Universal Powerline Association, UPA.
    [UPnP-DAv1]UPnP Device Architecture, UPnP Device Architecture 1.0, UPnP Forum, April 2008.
    [UPnP-DAv11]UPnP Device Architecture 1.1, UPnP Device Architecture 1.1, UPnP Forum, October, 2008.
    [UPnP-DM:1]UPnP Device Management:1, UPnP Device Management v1.
    [UPnP-IGD:1]UPnP InternetGatewayDevice:1, InternetGatewayDevice:1 Device Template Version 1.01, UPnP, 2001.
    [UPnP-IGD:2]UPnP InternetGatewayDevice:2, InternetGatewayDevice:2 Device Template Version 1.01, UPnP, 2010.
    [USB1.0]USB 1.0, USB 1.0 Specification, USB-IF, January 1996.
    [USB2.0]USB 2.0, USB 2.0 Specification, USB-IF, April 2000.
    [USB3.0]USB 3.0, USB 3.0 Specification, USB-IF, November 2008.
    [WPS 2.0]WSC 2.0, Wi-Fi Simple Configuration Technical Specification Version 2.0.x, Wi-Fi Alliance.
    [WPSv1.0]Wi-Fi Protected Setup Specification Version 1.0h, Wi-Fi Alliance, 2006.
    [Y.1540]Y.1540, IP packet transfer and availability performance parameters, ITU-T.
    [Z-Wave]Z-Wave, Z-Wave website.
    [ZigBee]ZigBee, ZigBee Alliance website.
    [ZigBee2007]ZigBee 2007 Specification, ZigBee 2007 Specification, ZigBee Alliance, October 2007.
    [ZigBeeCluster]ZigBee Cluster Library, ZigBee Cluster Library Specification, ZigBee Alliance, May 2012.
    +

    +


    + Generated by Broadband Forum report.pl#426 (2020-10-21 version) on 2020/11/05 at 09:35:34.
    report.pl --exitcode=fatals --include='' --loglevel=error --allbibrefs --report=html --outfile=tr-069-biblio.html tr-069-biblio.xml

    + + diff --git a/support/docs/tr-106-types.html b/support/docs/tr-106-types.html new file mode 100644 index 0000000..a96dbf6 --- /dev/null +++ b/support/docs/tr-106-types.html @@ -0,0 +1,461 @@ + + + + + tr-106-types.xml + + + + + + + + +
    Broadband Forum

        DATA MODEL DEFINITION


    TR-069 Data Model Data Types
    tr-106-types.xml

    +
    +

    License

    +Copyright (c) 2008-2019, Broadband Forum
    +

    +The undersigned members have elected to grant the copyright to +their contributed material used in this software:
    +Copyright (c) 2017-2018 ARRIS Enterprises, LLC.
    +

    +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met:
    +

    +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +

    +2. Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following +disclaimer in the documentation and/or other materials +provided with the distribution. +

    +3. Neither the name of the copyright holder nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior written +permission. +

    +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +

    +The above license is used as a license under copyright only. +Please reference the Forum IPR Policy for patent licensing terms +<https://www.broadband-forum.org/ipr-policy>. +

    +Any moral rights which are necessary to exercise under the above +license grant are also deemed granted under this license. +

    + + +

    Summary

    +

    +

      +
    • Added datatypes from versioned files +
    • Added CWMP and USP versions of the Alias datatype +
    • Added URI, URL and URL datatypes +
    +

    Table of Contents

    + + + +

    Data Types

    +

    The Parameters defined in this specification make use of a limited subset of the default SOAP data types [SOAP1.1]. These data types and the named data types used by this specification are described below.

    +Note: A Parameter that is defined to be one of the named data types is reported as such at the beginning of the Parameter's description via a reference back to the associated data type definition (e.g. [MacAddress]). However, such parameters still indicate their SOAP data type.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data TypeBase TypeDescription
    base64-

    Base64 encoded binary (no line-length limitation).

    +A minimum and maximum allowed length can be indicated using the form base64(Min:Max), where Min and Max are the minimum and maximum length in characters before Base64 encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in base64(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges.

    boolean-Boolean, where the allowed values are 0 or 1 (or equivalently, true or false).
    dateTime-The subset of the ISO 8601 date-time format defined by the SOAP dateTime type.
    decimal-

    Decimal value.

    +For some decimal types, a value range is given using the form decimal[Min:Max] where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.

    hexBinary-

    Hex encoded binary.

    +A minimum and maximum allowed length can be indicated using the form hexBinary(Min:Max), where Min and Max are the minimum and maximum length in characters before Hex Binary encoding. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in hexBinary(Max). Multiple comma-separated ranges can be specified, in which case the length MUST be in one of the ranges.

    int-

    Integer in the range -2147483648 to +2147483647, inclusive.

    +For some int types, a value range is given using the form int[Min:Max] or int[Min:Max step Step] where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.

    long-

    Long integer in the range -9223372036854775808 to 9223372036854775807, inclusive.

    +For some long types, a value range is given using the form long[Min:Max] or long[Min:Max step Step], where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.

    object-A container for parameters and/or other objects. The full Path Name of a parameter is given by the parameter name appended to the full Path Name of the object it is contained within.
    string-For strings, a minimum and maximum allowed length can be indicated using the form string(Min:Max), where Min and Max are the minimum and maximum string length in characters. If either Min or Max are missing, this indicates no limit, and if Min is missing the colon can also be omitted, as in string(Max). Multiple comma-separated ranges can be specified, in which case the string length will be in one of the ranges.
    unsignedInt-

    Unsigned integer in the range 0 to 4294967295, inclusive.

    +For some unsignedInt types, a value range is given using the form unsignedInt[Min:Max] or unsigned[Min:Max step Step], where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.

    unsignedLong-

    Unsigned long integer in the range 0 to 18446744073709551615, inclusive.

    +For some unsignedLong types, a value range is given using the form unsignedLong[Min:Max] or unsignedLong[Min:Max step Step], where the Min and Max values are inclusive. If either Min or Max are missing, this indicates no limit. If Step is missing, this indicates a step of 1. Multiple comma-separated ranges can be specified, in which case the value will be in one of the ranges.

    Aliasstring(64)

    A non-volatile handle used to reference this instance. Alias provides a mechanism for an ACS to label this instance for future reference.

    +If the CPE supports the Alias-based Addressing feature as defined in [Section 3.6.1/TR-069] and described in [Appendix II/TR-069], the following mandatory constraints MUST be enforced:

    +

      +
    • Its value MUST NOT be empty. +
    • Its value MUST start with a letter. +
    • If its value is not assigned by the ACS, it MUST start with a "cpe-" prefix. +
    • The CPE MUST NOT change the parameter value. +
    Dbm1000intThe value is measured in dBm/1000, i.e. the value divided by 1000 is dB relative to 1 mW. For example, -12345 means -12.345 dBm, 0 means 0 dBm (1 mW) and 12345 means 12.345 dBm.
    DiagnosticsStatestring

    Indicates the availability of diagnostics data. Enumeration of:

    +

      +
    • None (READONLY) +
    • Requested +
    • Canceled (OPTIONAL) +
    • Complete (READONLY) +
    • Error (READONLY, OPTIONAL) +

    +If the ACS sets the value of this parameter to Requested, the CPE MUST initiate the corresponding diagnostic test. When writing, the only allowed values are Requested and Canceled. To ensure the use of the proper test parameters (the writable parameters in this object), the test parameters MUST be set, and any errors or inconsistencies in the test parameters MUST be detected, either prior to or at the same time as (in the same SetParameterValues) setting this parameter to Requested.

    +When requested, the CPE SHOULD wait until after completion of the communication session with the ACS before starting the diagnostic test.

    +When the test is completed, the value of this parameter MUST be either Complete (if the test completed successfully), or one of the Error values listed above.

    +If the value of this parameter is anything other than Complete, the values of the results parameters for this test are indeterminate.

    +When the diagnostic initiated by the ACS is completed (successfully or not), but not if it is canceled for any reason, the CPE MUST establish a new connection to the ACS to allow the ACS to view the results, indicating the Event code 8 DIAGNOSTICS COMPLETE in the Inform message.

    +After the diagnostic is complete, the value of all result parameters (all read-only parameters in this object) MUST be retained by the CPE until either this diagnostic is run again, or the CPE reboots. After a reboot, if the CPE has not retained the result parameters from the most recent test, it MUST set the value of this parameter to None.

    +Modifying any of the writable parameters in this object except for this one MUST result in the value of this parameter being set to None.

    +While the test is in progress, modifying any of the writable parameters in this object except for this one MUST result in the test being terminated and the value of this parameter being set to None.

    +While the test is in progress, setting this parameter to Requested (and possibly modifying other writable parameters in this object) MUST result in the test being terminated and then restarted using the current values of the test parameters.

    +While the test is in progress, setting this parameter to Canceled MUST result in the test being canceled and the value of this parameter being set to None. If the CPE does not support the Canceled value, it MUST return a SPV error with "Invalid Parameter value" (9007) to the ACS instead.

    IEEE_EUI64string(23)

    The IEEE EUI 64-bit identifier as defined in [IEEE_EUI64]. The IEEE defined 64-bit extended unique identifier (EUI-64) is a concatenation of:

    +

      +
    • The 24-bit (OUI-24) or 36-bit (OUI-36) company_id value assigned by the IEEE Registration Authority (IEEE-RA), and +
    • The extension identifier (40 bits for OUI-24 or 28 bits for OUI-36) assigned by the organization with that company_id assignment. +

    +Possible patterns:

    +

      +
    • <Empty> (an empty string) +
    • ([0-9A-Fa-f][0-9A-Fa-f]:){7}([0-9A-Fa-f][0-9A-Fa-f]) +
    IPAddressstring(45)

    IP address, i.e. IPv4 address (or IPv4 subnet mask) or IPv6 address.

    +All IPv4 addresses and subnet masks MUST be represented as strings in IPv4 dotted-decimal notation. Here are some examples of valid IPv4 address textual representations:

    +

      +
    • 216.52.29.100 +
    • 192.168.1.254 +

    +All IPv6 addresses MUST be represented using any of the 3 standard textual representations defined in [RFC4291] Sections 2.2.1, 2.2.2 and 2.2.3. Both lower-case and upper-case letters can be used, but use of lower-case letters is RECOMMENDED. Here are some examples of valid IPv6 address textual representations:

    +

      +
    • 1080:0:0:800:ba98:3210:11aa:12dd +
    • 1080::800:ba98:3210:11aa:12dd +
    • 0:0:0:0:0:0:13.1.68.3 +

    +IPv6 addresses MUST NOT include zone identifiers. Zone identifiers are discussed in [Section 6/RFC4007].

    +Unspecified or inapplicable addresses (or IPv4 subnet masks) MUST be represented as empty strings unless otherwise specified by the parameter definition.

    IPPrefixstring(49)

    IPv4 or IPv6 routing prefix in Classless Inter-Domain Routing (CIDR) notation [RFC4632]. This is specified as an IP address followed by an appended "/n" suffix, where n (the prefix size) is an integer in the range 0-32 (for IPv4) or 0-128 (for IPv6) that indicates the number of (leftmost) '1' bits of the routing prefix.

    +

      +
    • IPv4 example: 192.168.1.0/24 +
    • IPv6 example: 2001:edff:fe6a:f76::/64 +

    +If the IP address part is unspecified or inapplicable, it MUST be an empty string unless otherwise specified by the parameter definition. In this case the IP prefix will be of the form "/n".

    +If the entire IP prefix is unspecified or inapplicable, it MUST be an empty string unless otherwise specified by the parameter definition.

    IPv4AddressIPAddress(15)

    IPv4 address (or subnet mask).

    +Can be any IPv4 address that is permitted by the IPAddress data type. Possible patterns:

    +

      +
    • <Empty> (an empty string) +
    • ((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]) +
    IPv4PrefixIPPrefix(18)

    IPv4 address prefix.

    +Can be any IPv4 prefix that is permitted by the IPPrefix data type. Possible patterns:

    +

      +
    • <Empty> (an empty string) +
    • /(3[0-2]|[012]?[0-9]) +
    • ((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])/(3[0-2]|[012]?[0-9]) +
    IPv6AddressIPAddress(45)

    IPv6 address.

    +Can be any IPv6 address that is permitted by the IPAddress data type.

    IPv6PrefixIPPrefix(49)

    IPv6 address prefix.

    +Can be any IPv6 prefix that is permitted by the IPPrefix data type.

    JSONObjectstringA JSON Object as defined in [Section 4/RFC7159].
    MACAddressstring(17)

    All MAC addresses are represented as strings of 12 hexadecimal digits (digits 0-9, letters A-F or a-f) displayed as six pairs of digits separated by colons. Unspecified or inapplicable MAC addresses MUST be represented as empty strings unless otherwise specified by the parameter definition. Possible patterns:

    +

      +
    • <Empty> (an empty string) +
    • ([0-9A-Fa-f][0-9A-Fa-f]:){5}([0-9A-Fa-f][0-9A-Fa-f]) +
    StatsCounter32unsignedInt

    A 32-bit statistics parameter, e.g. a byte counter.

    +This data type SHOULD NOT be used for statistics parameters whose values might become greater than the maximum value that can be represented as an unsignedInt (i.e. 0xffffffff, referred to below as maxval). StatsCounter64 SHOULD be used for such parameters.

    +The value maxval indicates that no data is available for this parameter. In the unlikely event that the actual value of the statistic is maxval, the CPE SHOULD return maxval - 1.

    +The actual value of the statistic might be greater than maxval. Such values SHOULD wrap around through zero.

    +The term packet is to be interpreted as the transmission unit appropriate to the protocol layer in question, e.g. an IP packet or an Ethernet frame.

    StatsCounter64unsignedLong

    A 64-bit statistics parameter, e.g. a byte counter.

    +This data type SHOULD be used for all statistics parameters whose values might become greater than the maximum value that can be represented as an unsignedInt.

    +The maximum value that can be represented as an unsignedLong (i.e. 0xffffffffffffffff) indicates that no data is available for this parameter.

    +The term packet is to be interpreted as the transmission unit appropriate to the protocol layer in question, e.g. an IP packet or an Ethernet frame.

    URIstring(2048)Uniform Resource Identifier. See [RFC3986].
    URLURI(2048)Uniform Resource Locator. See [RFC3986] (URI), [IANA-uri-schemes], and individual URI scheme RFCs such as [RFC7252] (coap, coaps) and [RFC7230] (http, https).
    URNURI(2048)

    Uniform Resource Name. See [RFC3986] (URI) and [RFC8141] (urn URI scheme). Possible patterns:

    +

      +
    • urn:[A-Za-z0-9][A-Za-z0-9-]{0,30}[A-Za-z0-9]:.+ +
    UUIDstring(36:36)

    Universally Unique Identifier. See [RFC4122]. Possible patterns:

    +

      +
    • [A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12} +
    ZigBeeNetworkAddressstring(4)

    The ZigBee 16-bit network address (NWK) as defined in [ZigBee2007]. The address is assigned to a device by the network layer and used by the network layer for routing messages between devices. Possible patterns:

    +

      +
    • <Empty> (an empty string) +
    • ([0-9A-Fa-f]){4} +
    +

    References

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [IANA-uri-schemes]IANA Uniform Resource Identifier (URI) Schemes Registry, Uniform Resource Identifier (URI) Schemes, IANA.
    [IEEE_EUI64]Guidelines for 64-bit Global Identifier (EUI-64) Registration Authority, Guidelines for 64-bit Global Identifier (EUI-64) Registration Authority, IEEE, March 1997.
    [RFC3986]RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, IETF.
    [RFC4007]RFC 4007, IPv6 Scoped Address Architecture, IETF.
    [RFC4122]RFC 4122, A Universally Unique IDentifier (UUID) URN Namespace, IETF, 2005.
    [RFC4291]RFC 4291, IP Version 6 Addressing Architecture, IETF, 2006.
    [RFC4632]RFC 4632, Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan, IETF, 2006.
    [RFC7159]RFC7159, The JavaScript Object Notation (JSON) Data Interchange Format, IETF, March 2014.
    [RFC7230]RFC 7230, Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing, IETF, June 2014.
    [RFC7252]RFC 7252, The Constrained Application Protocol (CoAP), IETF, June 2014.
    [RFC8141]RFC 8141, Uniform Resource Names (URNs), IETF, April 2017.
    [SOAP1.1]Simple Object Access Protocol (SOAP) 1.1, W3C.
    [TR-069]TR-069 Amendment 6, CPE WAN Management Protocol, Broadband Forum, April 2018.
    [ZigBee2007]ZigBee 2007 Specification, ZigBee 2007 Specification, ZigBee Alliance, October 2007.
    +

    +


    + Generated by Broadband Forum report.pl#426 (2020-10-21 version) on 2020/11/05 at 09:35:35.
    report.pl --exitcode=fatals --include='' --loglevel=error --alldatatypes --report=html --outfile=tr-106-types.html tr-106-types.xml

    + + diff --git a/support/makefile b/support/makefile deleted file mode 100644 index 16bfc8e..0000000 --- a/support/makefile +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2017, Broadband Forum -# -# Redistribution and use in source and binary forms, with or -# without modification, are permitted provided that the following -# conditions are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials -# provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The above license is used as a license under copyright only. -# Please reference the Forum IPR Policy for patent licensing terms -# . -# -# Any moral rights which are necessary to exercise under the above -# license grant are also deemed granted under this license. - -TOPDIR = .. - -include $(TOPDIR)/defs.mk - -REPORTFLAGS += --allbibrefs - -# XXX this is to disable schema validation, because this currently requires -# schema filenames to include the minor version number -REPORTFLAGS += --loglevel=error - -include $(TOPDIR)/rules.mk - -# check bibrefs -# XXX "echo | tr" is used to remove the newline and is to avoid use of -# "echo -n", which isn't always available -BIBREF-CHECK = bibref-check.txt - -bibref-check: $(BIBREF-CHECK) - -$(BIBREF-CHECK): tr-069-biblio.xml - (for i in `grep '' $< | \ - sed -e 's/.*//' -e 's/<\/hyperlink>.*//'`; do \ - echo "$$i: " | tr -d '\012'; \ - curl -IfsS $$i >/dev/null; \ - if [ $$? != 0 ]; then \ - j=$${i/https:/http:}; \ - echo "$$j " | tr -d '\012'; \ - curl -IfsS $$j >/dev/null; \ - fi; \ - echo; \ - done \ - ) 2>&1 | tee $@ diff --git a/support/tr-069-biblio.xml b/support/tr-069-biblio.xml index 4baabf1..605254c 100644 --- a/support/tr-069-biblio.xml +++ b/support/tr-069-biblio.xml @@ -118,6 +118,7 @@ Summary: * Added references from versioned files (grouped by category and sorted within category) * Updated references for convention that "TR-nnn" means the latest Amendment and Corrigendum * Added references in support of Device:2.13 DM Instances + * Added references for 3GPP 5G standards in support of Device:2.14 DM Instances @@ -181,12 +182,24 @@ Summary: 3GPP SA WG2 https://www.3gpp.org/ftp/Specs/html-info/23203.htm + + 3GPP TS 23.316 + Wireless and wireline convergence access support for the 5G System (5GS) + 3GPP SA WG2 + https://www.3gpp.org/ftp/Specs/html-info/23316.htm + 3GPP TS 23.401 General Packet Radio Service (GPRS) enhancements for Evolved Universal Terrestrial Radio Access Network (E-UTRAN) access 3GPP SA WG2 https://www.3gpp.org/ftp/Specs/html-info/23401.htm + + 3GPP TS 23.501 + System architecture for the 5G System (5GS); Stage 2 + 3GPP SA WG2 + https://www.3gpp.org/ftp/Specs/html-info/23501.htm + 3GPP TS 24.008 Mobile radio interface Layer 3 specification; Core network protocols; Stage 3 @@ -200,6 +213,24 @@ Summary: Technical specification https://www.3gpp.org/ftp/Specs/html-info/24229.htm + + 3GPP TS 24.301 + Non-Access-Stratum (NAS) protocol for Evolved Packet System (EPS); Stage 3 + 3GPP CT WG1 + https://www.3gpp.org/ftp/Specs/html-info/24301.htm + + + 3GPP TS 24.501 + Non-Access-Stratum (NAS) protocol for 5G System (5GS); Stage 3 + 3GPP CT WG1 + https://www.3gpp.org/ftp/Specs/html-info/24501.htm + + + 3GPP TS 24.526 + User Equipment (UE) policies for 5G System (5GS); Stage 3 + 3GPP CT WG1 + https://www.3gpp.org/ftp/Specs/html-info/24526.htm + 3GPP TS 25.104 Base Station (BS) radio transmission and reception (FDD) @@ -1200,6 +1231,14 @@ Summary: + + draft-allan-5g-fmc-encapsulation + 5G Wireless Wireline Convergence User Plane Encapsulation (5WE) + IETF + Internet Draft + March 2020 + https://tools.ietf.org/html/draft-allan-5g-fmc-encapsulation + draft-ietf-ippm-metric-registry-12 Registry for Performance Metrics @@ -1725,6 +1764,13 @@ Summary: RFC https://tools.ietf.org/html/rfc3986 + + RFC 4007 + IPv6 Scoped Address Architecture + IETF + RFC + https://tools.ietf.org/html/rfc4007 + RFC 4028 Session Timers in the Session Initiation Protocol (SIP) @@ -2363,6 +2409,13 @@ Summary: TR July 2016 + + TR-124 Issue 6 + Functional Requirements for Broadband Residential Gateway Devices + Broadband Forum + TR + July 2020 + TR-124 Issue 5 Functional Requirements for Broadband Residential Gateway Devices @@ -2574,6 +2627,13 @@ Summary: Technical Report May 2017 + + TR-471 + Maximum IP-Layer Capacity Metric, Related Metrics, and Measurements + Broadband Forum + Technical Report + TBD + diff --git a/support/tr-106-types.xml b/support/tr-106-types.xml index 901915a..26b5aea 100644 --- a/support/tr-106-types.xml +++ b/support/tr-106-types.xml @@ -186,7 +186,7 @@ - The IEEE EUI 64-bit identifier as defined in {{bibref|EUI64}}. The IEEE defined 64-bit extended unique identifier (EUI-64) is a concatenation of: + The IEEE EUI 64-bit identifier as defined in {{bibref|IEEE_EUI64}}. The IEEE defined 64-bit extended unique identifier (EUI-64) is a concatenation of: * The 24-bit (OUI-24) or 36-bit (OUI-36) company_id value assigned by the IEEE Registration Authority (IEEE-RA), and * The extension identifier (40 bits for OUI-24 or 28 bits for OUI-36) assigned by the organization with that company_id assignment. diff --git a/test/makefile b/test/makefile deleted file mode 100644 index 30cf2ea..0000000 --- a/test/makefile +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 2017, Broadband Forum -# -# Redistribution and use in source and binary forms, with or -# without modification, are permitted provided that the following -# conditions are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials -# provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The above license is used as a license under copyright only. -# Please reference the Forum IPR Policy for patent licensing terms -# . -# -# Any moral rights which are necessary to exercise under the above -# license grant are also deemed granted under this license. - -TOPDIR = .. - -include $(TOPDIR)/defs.mk - -DMXML = $(filter-out %-full.xml, $(wildcard *.xml)) -DMFULLXML = $(DMXML:%.xml=%-full.xml) - -DMHTML = $(DMXML:%.xml=%.html) $(DMFULLXML:%.xml=%.html) - -REPORTFLAGS += --nowarnuniquekeys -REPORTFLAGS += --quiet - -# XXX these set the b/g colors for commands, command arguments -# (Input/Output), object arguments, parameter arguments -#REPORTFLAGS += --commandcolor red -#REPORTFLAGS += --commandcolor green -#REPORTFLAGS += --commandcolor salmon -#REPORTFLAGS += --commandcolor palegreen - -REPORTINCLUDES += ../schemas - -TARGETDIR = - -include $(TOPDIR)/rules.mk