metanorma-ogc 1.5.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,6 +7,8 @@
7
7
  <xsl:variable name="images" select="document($svg_images)"/>
8
8
  <xsl:param name="basepath"/>
9
9
 
10
+ <xsl:key name="kfn" match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])]" use="@reference"/>
11
+
10
12
  <xsl:variable name="pageWidth" select="215.9"/>
11
13
  <xsl:variable name="pageHeight" select="279.4"/>
12
14
  <xsl:variable name="marginLeftRight1" select="25.4"/>
@@ -384,7 +386,7 @@
384
386
 
385
387
  <xsl:variable name="display">
386
388
  <xsl:choose>
387
- <xsl:when test="$level &gt; 3">false</xsl:when>
389
+ <xsl:when test="$level &gt; $toc_level">false</xsl:when>
388
390
  <xsl:otherwise>true</xsl:otherwise>
389
391
  </xsl:choose>
390
392
  </xsl:variable>
@@ -642,32 +644,6 @@
642
644
  </xsl:if>
643
645
  </xsl:template>
644
646
 
645
- <!--
646
- <fn reference="1">
647
- <p id="_8e5cf917-f75a-4a49-b0aa-1714cb6cf954">Formerly denoted as 15 % (m/m).</p>
648
- </fn>
649
- -->
650
- <xsl:template match="ogc:title//ogc:fn | ogc:name//ogc:fn | ogc:p/ogc:fn[not(ancestor::ogc:table)] | ogc:p/*/ogc:fn[not(ancestor::ogc:table)] | ogc:sourcecode/ogc:fn[not(ancestor::ogc:table)]" priority="2">
651
- <fo:footnote keep-with-previous.within-line="always">
652
- <xsl:variable name="number" select="@reference"/>
653
-
654
- <fo:inline font-size="65%" keep-with-previous.within-line="always" vertical-align="super">
655
- <fo:basic-link internal-destination="footnote_{@reference}" fox:alt-text="footnote {@reference}">
656
- <xsl:value-of select="$number"/><!-- + count(//ogc:bibitem/ogc:note) -->
657
- </fo:basic-link>
658
- </fo:inline>
659
- <fo:footnote-body>
660
- <fo:block font-size="10pt" margin-bottom="12pt" font-weight="normal" text-indent="0" start-indent="0" color="black" text-align="justify">
661
- <fo:inline id="footnote_{@reference}" keep-with-next.within-line="always" font-size="60%" vertical-align="super"> <!-- baseline-shift="30%" padding-right="3mm" font-size="60%" alignment-baseline="hanging" -->
662
- <xsl:value-of select="$number "/><!-- + count(//ogc:bibitem/ogc:note) -->
663
- </fo:inline>
664
- <xsl:for-each select="ogc:p">
665
- <xsl:apply-templates/>
666
- </xsl:for-each>
667
- </fo:block>
668
- </fo:footnote-body>
669
- </fo:footnote>
670
- </xsl:template>
671
647
 
672
648
  <xsl:template match="ogc:fn/ogc:p">
673
649
  <fo:block>
@@ -1596,6 +1572,79 @@
1596
1572
 
1597
1573
  </xsl:attribute-set><xsl:attribute-set name="toc-style">
1598
1574
  <xsl:attribute name="line-height">135%</xsl:attribute>
1575
+ </xsl:attribute-set><xsl:attribute-set name="fn-style">
1576
+ <xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
1577
+ </xsl:attribute-set><xsl:attribute-set name="fn-num-style">
1578
+ <xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+ <xsl:attribute name="font-size">65%</xsl:attribute>
1593
+ <xsl:attribute name="vertical-align">super</xsl:attribute>
1594
+
1595
+
1596
+
1597
+
1598
+ </xsl:attribute-set><xsl:attribute-set name="fn-body-style">
1599
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
1600
+ <xsl:attribute name="font-style">normal</xsl:attribute>
1601
+ <xsl:attribute name="text-indent">0</xsl:attribute>
1602
+ <xsl:attribute name="start-indent">0</xsl:attribute>
1603
+
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+
1611
+
1612
+
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+ <xsl:attribute name="font-size">10pt</xsl:attribute>
1619
+ <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
1620
+ <xsl:attribute name="color">black</xsl:attribute>
1621
+ <xsl:attribute name="text-align">justify</xsl:attribute>
1622
+
1623
+
1624
+
1625
+
1626
+ </xsl:attribute-set><xsl:attribute-set name="fn-body-num-style">
1627
+ <xsl:attribute name="keep-with-next.within-line">always</xsl:attribute>
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+ <xsl:attribute name="font-size">60%</xsl:attribute>
1643
+ <xsl:attribute name="vertical-align">super</xsl:attribute>
1644
+
1645
+
1646
+
1647
+
1599
1648
  </xsl:attribute-set><xsl:variable name="border-block-added">2.5pt solid rgb(0, 176, 80)</xsl:variable><xsl:variable name="border-block-deleted">2.5pt solid rgb(255, 0, 0)</xsl:variable><xsl:template name="OLD_processPrefaceSectionsDefault_Contents">
1600
1649
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='abstract']" mode="contents"/>
1601
1650
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='foreword']" mode="contents"/>
@@ -2547,6 +2596,102 @@
2547
2596
 
2548
2597
  </xsl:template><xsl:template match="*[local-name()='table']/*[local-name()='note']/*[local-name()='name']" mode="process"/><xsl:template match="*[local-name()='table']/*[local-name()='note']/*[local-name()='p']" mode="process">
2549
2598
  <xsl:apply-templates/>
2599
+ </xsl:template><xsl:template match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])]" priority="2" name="fn">
2600
+
2601
+ <!-- list of footnotes to calculate actual footnotes number -->
2602
+ <xsl:variable name="p_fn_">
2603
+ <xsl:choose>
2604
+ <xsl:when test="@current_fn_number"> <!-- for BSI, footnote reference number calculated already -->
2605
+ <fn gen_id="{generate-id(.)}">
2606
+ <xsl:copy-of select="@*"/>
2607
+ <xsl:copy-of select="node()"/>
2608
+ </fn>
2609
+ </xsl:when>
2610
+ <xsl:otherwise>
2611
+ <!-- itetation for:
2612
+ footnotes in bibdata/title
2613
+ footnotes in bibliography
2614
+ footnotes in document's body (except table's head/body/foot and figure text)
2615
+ -->
2616
+ <xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']/*[local-name() = 'note'][@type='title-footnote']">
2617
+ <fn gen_id="{generate-id(.)}">
2618
+ <xsl:copy-of select="@*"/>
2619
+ <xsl:copy-of select="node()"/>
2620
+ </fn>
2621
+ </xsl:for-each>
2622
+ <xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='preface']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='sections']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='annex'] | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibliography']/*">
2623
+ <xsl:sort select="@displayorder" data-type="number"/>
2624
+ <xsl:for-each select=".//*[local-name() = 'bibitem'][ancestor::*[local-name() = 'references']]/*[local-name() = 'note'] | .//*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])][generate-id(.)=generate-id(key('kfn',@reference)[1])]">
2625
+ <!-- copy unique fn -->
2626
+ <fn gen_id="{generate-id(.)}">
2627
+ <xsl:copy-of select="@*"/>
2628
+ <xsl:copy-of select="node()"/>
2629
+ </fn>
2630
+ </xsl:for-each>
2631
+ </xsl:for-each>
2632
+ </xsl:otherwise>
2633
+ </xsl:choose>
2634
+ </xsl:variable>
2635
+ <xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
2636
+
2637
+ <xsl:variable name="gen_id" select="generate-id(.)"/>
2638
+ <xsl:variable name="lang" select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibdata']//*[local-name()='language'][@current = 'true']"/>
2639
+ <xsl:variable name="reference" select="@reference"/>
2640
+ <!-- fn sequence number in document -->
2641
+ <xsl:variable name="current_fn_number">
2642
+ <xsl:choose>
2643
+ <xsl:when test="@current_fn_number"><xsl:value-of select="@current_fn_number"/></xsl:when> <!-- for BSI -->
2644
+ <xsl:otherwise>
2645
+ <xsl:value-of select="count($p_fn//fn[@reference = $reference]/preceding-sibling::fn) + 1"/>
2646
+ </xsl:otherwise>
2647
+ </xsl:choose>
2648
+ </xsl:variable>
2649
+ <xsl:variable name="current_fn_number_text">
2650
+ <xsl:value-of select="$current_fn_number"/>
2651
+
2652
+
2653
+ </xsl:variable>
2654
+
2655
+ <xsl:variable name="ref_id" select="concat('footnote_', $lang, '_', $reference, '_', $current_fn_number)"/>
2656
+ <xsl:variable name="footnote_inline">
2657
+ <fo:inline xsl:use-attribute-sets="fn-num-style">
2658
+
2659
+ <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
2660
+ <xsl:value-of select="$current_fn_number_text"/>
2661
+ </fo:basic-link>
2662
+ </fo:inline>
2663
+ </xsl:variable>
2664
+ <!-- DEBUG: p_fn=<xsl:copy-of select="$p_fn"/>
2665
+ gen_id=<xsl:value-of select="$gen_id"/> -->
2666
+ <xsl:choose>
2667
+ <xsl:when test="normalize-space(@skip_footnote_body) = 'true'">
2668
+ <xsl:copy-of select="$footnote_inline"/>
2669
+ </xsl:when>
2670
+ <xsl:when test="$p_fn//fn[@gen_id = $gen_id] or normalize-space(@skip_footnote_body) = 'false'">
2671
+ <fo:footnote xsl:use-attribute-sets="fn-style">
2672
+ <xsl:copy-of select="$footnote_inline"/>
2673
+ <fo:footnote-body>
2674
+
2675
+ <fo:block-container text-indent="0" start-indent="0">
2676
+
2677
+
2678
+ <fo:block xsl:use-attribute-sets="fn-body-style">
2679
+
2680
+
2681
+ <fo:inline id="{$ref_id}" xsl:use-attribute-sets="fn-body-num-style">
2682
+
2683
+ <xsl:value-of select="$current_fn_number_text"/>
2684
+ </fo:inline>
2685
+ <xsl:apply-templates/>
2686
+ </fo:block>
2687
+ </fo:block-container>
2688
+ </fo:footnote-body>
2689
+ </fo:footnote>
2690
+ </xsl:when>
2691
+ <xsl:otherwise>
2692
+ <xsl:copy-of select="$footnote_inline"/>
2693
+ </xsl:otherwise>
2694
+ </xsl:choose>
2550
2695
  </xsl:template><xsl:template name="fn_display">
2551
2696
  <xsl:variable name="references">
2552
2697
 
@@ -2755,6 +2900,8 @@
2755
2900
 
2756
2901
  </fo:basic-link>
2757
2902
  </fo:inline>
2903
+ </xsl:template><xsl:template match="*[local-name()='fn']/text()[normalize-space() != '']">
2904
+ <fo:inline><xsl:value-of select="."/></fo:inline>
2758
2905
  </xsl:template><xsl:template match="*[local-name()='fn']/*[local-name()='p']">
2759
2906
  <fo:inline>
2760
2907
  <xsl:apply-templates/>
@@ -3748,22 +3895,6 @@
3748
3895
  <xsl:if test="not(preceding-sibling::*[local-name() = 'p'])"><xsl:value-of select="$callout"/></xsl:if>
3749
3896
  <xsl:apply-templates/>
3750
3897
  </fo:inline>
3751
- </xsl:template><xsl:template match="*[local-name() = 'modification']">
3752
- <xsl:variable name="title-modified">
3753
-
3754
-
3755
- <xsl:call-template name="getTitle">
3756
- <xsl:with-param name="name" select="'title-modified'"/>
3757
- </xsl:call-template>
3758
-
3759
- </xsl:variable>
3760
-
3761
- <xsl:variable name="text"><xsl:apply-templates/></xsl:variable>
3762
- <xsl:choose>
3763
- <xsl:when test="$lang = 'zh'"><xsl:text>、</xsl:text><xsl:value-of select="$title-modified"/><xsl:if test="normalize-space($text) != ''"><xsl:text>—</xsl:text></xsl:if></xsl:when>
3764
- <xsl:otherwise><xsl:text>, </xsl:text><xsl:value-of select="$title-modified"/><xsl:if test="normalize-space($text) != ''"><xsl:text> — </xsl:text></xsl:if></xsl:otherwise>
3765
- </xsl:choose>
3766
- <xsl:apply-templates/>
3767
3898
  </xsl:template><xsl:template match="*[local-name() = 'xref']">
3768
3899
  <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
3769
3900
 
@@ -5044,62 +5175,69 @@
5044
5175
  <xsl:variable name="termsource_text">
5045
5176
  <xsl:apply-templates/>
5046
5177
  </xsl:variable>
5047
-
5048
- <xsl:choose>
5178
+ <xsl:copy-of select="$termsource_text"/>
5179
+ <!-- <xsl:choose>
5049
5180
  <xsl:when test="starts-with(normalize-space($termsource_text), '[')">
5050
- <!-- <xsl:apply-templates /> -->
5051
5181
  <xsl:copy-of select="$termsource_text"/>
5052
5182
  </xsl:when>
5053
5183
  <xsl:otherwise>
5054
-
5055
-
5184
+ <xsl:if test="$namespace = 'bsi'">
5185
+ <xsl:choose>
5186
+ <xsl:when test="$document_type = 'PAS' and starts-with(*[local-name() = 'origin']/@citeas, '[')"><xsl:text>{</xsl:text></xsl:when>
5187
+ <xsl:otherwise><xsl:text>[</xsl:text></xsl:otherwise>
5188
+ </xsl:choose>
5189
+ </xsl:if>
5190
+ <xsl:if test="$namespace = 'gb' or $namespace = 'iso' or $namespace = 'iec' or $namespace = 'itu' or $namespace = 'unece' or $namespace = 'unece-rec' or $namespace = 'nist-cswp' or $namespace = 'nist-sp' or $namespace = 'ogc-white-paper' or $namespace = 'csa' or $namespace = 'csd' or $namespace = 'm3d' or $namespace = 'iho' or $namespace = 'bipm' or $namespace = 'jcgm'">
5056
5191
  <xsl:text>[</xsl:text>
5057
-
5058
- <!-- <xsl:apply-templates /> -->
5192
+ </xsl:if>
5059
5193
  <xsl:copy-of select="$termsource_text"/>
5060
-
5061
-
5194
+ <xsl:if test="$namespace = 'bsi'">
5195
+ <xsl:choose>
5196
+ <xsl:when test="$document_type = 'PAS' and starts-with(*[local-name() = 'origin']/@citeas, '[')"><xsl:text>}</xsl:text></xsl:when>
5197
+ <xsl:otherwise><xsl:text>]</xsl:text></xsl:otherwise>
5198
+ </xsl:choose>
5199
+ </xsl:if>
5200
+ <xsl:if test="$namespace = 'gb' or $namespace = 'iso' or $namespace = 'iec' or $namespace = 'itu' or $namespace = 'unece' or $namespace = 'unece-rec' or $namespace = 'nist-cswp' or $namespace = 'nist-sp' or $namespace = 'ogc-white-paper' or $namespace = 'csa' or $namespace = 'csd' or $namespace = 'm3d' or $namespace = 'iho' or $namespace = 'bipm' or $namespace = 'jcgm'">
5062
5201
  <xsl:text>]</xsl:text>
5063
-
5202
+ </xsl:if>
5064
5203
  </xsl:otherwise>
5065
- </xsl:choose>
5204
+ </xsl:choose> -->
5066
5205
  </fo:block>
5067
5206
  </xsl:template><xsl:template match="*[local-name() = 'termsource']/text()">
5068
5207
  <xsl:if test="normalize-space() != ''">
5069
5208
  <xsl:value-of select="."/>
5070
5209
  </xsl:if>
5071
- </xsl:template><xsl:variable name="localized.source">
5072
- <xsl:call-template name="getLocalizedString">
5073
- <xsl:with-param name="key">source</xsl:with-param>
5074
- </xsl:call-template>
5075
- </xsl:variable><xsl:template match="*[local-name() = 'origin']">
5210
+ </xsl:template><xsl:template match="*[local-name() = 'termsource']/*[local-name() = 'strong'][1][following-sibling::*[1][local-name() = 'origin']]/text()">
5211
+ <fo:inline>
5212
+
5213
+
5214
+ <xsl:value-of select="."/>
5215
+ </fo:inline>
5216
+ </xsl:template><xsl:template match="*[local-name() = 'origin']">
5076
5217
  <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
5077
5218
  <xsl:if test="normalize-space(@citeas) = ''">
5078
5219
  <xsl:attribute name="fox:alt-text"><xsl:value-of select="@bibitemid"/></xsl:attribute>
5079
5220
  </xsl:if>
5080
-
5081
-
5082
- <fo:inline>
5083
-
5084
-
5085
-
5086
-
5087
-
5088
-
5089
-
5090
- <xsl:call-template name="getTitle">
5091
- <xsl:with-param name="name" select="'title-source'"/>
5092
- </xsl:call-template>
5093
- <xsl:text>: </xsl:text>
5094
-
5095
-
5096
- </fo:inline>
5097
-
5098
5221
  <fo:inline xsl:use-attribute-sets="origin-style">
5099
5222
  <xsl:apply-templates/>
5100
5223
  </fo:inline>
5224
+ </fo:basic-link>
5225
+ </xsl:template><xsl:template match="*[local-name() = 'modification']">
5226
+ <xsl:variable name="title-modified">
5101
5227
 
5102
- </fo:basic-link>
5228
+
5229
+ <xsl:call-template name="getTitle">
5230
+ <xsl:with-param name="name" select="'title-modified'"/>
5231
+ </xsl:call-template>
5232
+
5233
+ </xsl:variable>
5234
+
5235
+ <xsl:variable name="text"><xsl:apply-templates/></xsl:variable>
5236
+ <xsl:choose>
5237
+ <xsl:when test="$lang = 'zh'"><xsl:text>、</xsl:text><xsl:value-of select="$title-modified"/><xsl:if test="normalize-space($text) != ''"><xsl:text>—</xsl:text></xsl:if></xsl:when>
5238
+ <xsl:otherwise><xsl:text>, </xsl:text><xsl:value-of select="$title-modified"/><xsl:if test="normalize-space($text) != ''"><xsl:text> — </xsl:text></xsl:if></xsl:otherwise>
5239
+ </xsl:choose>
5240
+ <xsl:apply-templates/>
5103
5241
  </xsl:template><xsl:template match="*[local-name() = 'modification']/*[local-name() = 'p']">
5104
5242
  <fo:inline><xsl:apply-templates/></fo:inline>
5105
5243
  </xsl:template><xsl:template match="*[local-name() = 'modification']/text()">
@@ -5849,7 +5987,31 @@
5849
5987
  <fo:block-container border="1pt solid black" width="50%">
5850
5988
  <fo:block> </fo:block>
5851
5989
  </fo:block-container>
5852
- </xsl:template><xsl:template match="*[local-name() = 'toc']">
5990
+ </xsl:template><xsl:variable name="toc_level">
5991
+ <xsl:choose>
5992
+ <xsl:when test="1 = 2"/> <!-- to do https://github.com/metanorma/mn-native-pdf/issues/337: if there is value in xml -->
5993
+ <xsl:otherwise><!-- default value -->
5994
+
5995
+
5996
+
5997
+
5998
+
5999
+
6000
+
6001
+
6002
+
6003
+
6004
+
6005
+
6006
+
6007
+
6008
+ 3
6009
+
6010
+
6011
+
6012
+ </xsl:otherwise>
6013
+ </xsl:choose>
6014
+ </xsl:variable><xsl:template match="*[local-name() = 'toc']">
5853
6015
  <xsl:param name="colwidths"/>
5854
6016
  <xsl:variable name="colwidths_">
5855
6017
  <xsl:choose>
@@ -6489,4 +6651,14 @@
6489
6651
  </xsl:otherwise>
6490
6652
  </xsl:choose>
6491
6653
  </xsl:if>
6654
+ </xsl:template><xsl:template name="setAltText">
6655
+ <xsl:param name="value"/>
6656
+ <xsl:attribute name="fox:alt-text">
6657
+ <xsl:choose>
6658
+ <xsl:when test="normalize-space($value) != ''">
6659
+ <xsl:value-of select="$value"/>
6660
+ </xsl:when>
6661
+ <xsl:otherwise>_</xsl:otherwise>
6662
+ </xsl:choose>
6663
+ </xsl:attribute>
6492
6664
  </xsl:template></xsl:stylesheet>
@@ -213,6 +213,14 @@ module IsoDoc
213
213
  roman_upper)[(idx - 1) % 5]
214
214
  end
215
215
 
216
+ def termsource1(elem)
217
+ mod = elem.at(ns("./modification")) and
218
+ termsource_modification(mod)
219
+ elem.children = l10n("[<strong>#{@i18n.source}:</strong> "\
220
+ "#{elem.children.to_xml.strip}]")
221
+ elem&.next_element&.name == "termsource" and elem.next = "; "
222
+ end
223
+
216
224
  include Init
217
225
  end
218
226
  end
@@ -114,7 +114,7 @@ module IsoDoc
114
114
 
115
115
  def preserve_in_nested_table?(node)
116
116
  return true if %w(recommendation requirement permission
117
- table).include?(node.name)
117
+ table ol dl ul).include?(node.name)
118
118
 
119
119
  false
120
120
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Ogc
3
- VERSION = "1.5.3".freeze
3
+ VERSION = "1.5.4".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-ogc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-29 00:00:00.000000000 Z
11
+ date: 2021-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: iso-639
@@ -286,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
286
286
  - !ruby/object:Gem::Version
287
287
  version: '0'
288
288
  requirements: []
289
- rubygems_version: 3.2.22
289
+ rubygems_version: 3.2.32
290
290
  signing_key:
291
291
  specification_version: 4
292
292
  summary: Metanorma for the Open Geospatial Consortium.