isodoc 0.5.9 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/isodoc.gemspec +1 -0
- data/lib/isodoc.rb +2 -0
- data/lib/isodoc/convert.rb +17 -1
- data/lib/isodoc/footnotes.rb +8 -3
- data/lib/isodoc/html.rb +65 -27
- data/lib/isodoc/i18n-en.yaml +1 -1
- data/lib/isodoc/iso/convert.rb +46 -0
- data/lib/isodoc/iso/html/header.html +184 -0
- data/lib/isodoc/iso/html/html_iso_intro.html +34 -0
- data/lib/isodoc/iso/html/html_iso_titlepage.html +32 -0
- data/lib/isodoc/iso/html/htmlstyle.scss +46 -0
- data/lib/isodoc/iso/html/isodoc.scss +679 -0
- data/lib/isodoc/iso/html/scripts.html +174 -0
- data/lib/isodoc/iso/html/style-human.scss +1277 -0
- data/lib/isodoc/iso/html/style-iso.scss +1257 -0
- data/lib/isodoc/iso/html/word_iso_intro.html +72 -0
- data/lib/isodoc/iso/html/word_iso_titlepage.html +58 -0
- data/lib/isodoc/iso/html/wordstyle.scss +1135 -0
- data/lib/isodoc/iso/wordconvert.rb +34 -0
- data/lib/isodoc/iso2wordhtml.rb +17 -23
- data/lib/isodoc/section.rb +1 -1
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/wordconvert/comments.rb +0 -15
- data/lib/isodoc/wordconvert/convert.rb +1 -0
- data/lib/isodoc/wordconvert/footnotes.rb +0 -12
- data/lib/isodoc/wordconvert/postprocess.rb +110 -0
- data/lib/isodoc/wordconvert/wordconvertmodule.rb +18 -130
- data/lib/isodoc/xref_sect_gen.rb +7 -4
- data/spec/assets/scripts.html +3 -1
- data/spec/isodoc/blocks_spec.rb +97 -211
- data/spec/isodoc/cleanup_spec.rb +27 -0
- data/spec/isodoc/footnotes_spec.rb +40 -53
- data/spec/isodoc/i18n_spec.rb +4 -56
- data/spec/isodoc/inline_spec.rb +7 -98
- data/spec/isodoc/iso_spec.rb +89 -0
- data/spec/isodoc/lists_spec.rb +5 -57
- data/spec/isodoc/postproc_spec.rb +43 -79
- data/spec/isodoc/ref_spec.rb +4 -17
- data/spec/isodoc/section_spec.rb +11 -24
- data/spec/isodoc/table_spec.rb +61 -76
- data/spec/isodoc/terms_spec.rb +1 -13
- data/spec/isodoc/xref_spec.rb +21 -164
- data/spec/spec_helper.rb +21 -1
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e18be494066e54a1661baf231c7f7636c2be91d9
|
4
|
+
data.tar.gz: 366c0b7966f513d9dca521cf3f93803b9a1f0adf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4d115c0302d6db04d082e282209333ea47b84f3beca675714d3744ef96a4a0a06cd0bfbd8b5fb50b520ca58ba196e1f8916d211884d62961377437c28a8f6c2
|
7
|
+
data.tar.gz: 441a80cb9e5160483563c7563c839ec9b4630c447042d72a7bf078083dda8acfb53f5614c3bf5d6d79ea6470188efcbe49977bb690d07fa843cb3a83f01529a7
|
data/isodoc.gemspec
CHANGED
@@ -39,6 +39,7 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.add_dependency "html2doc"
|
40
40
|
spec.add_dependency "liquid"
|
41
41
|
spec.add_dependency "roman-numerals"
|
42
|
+
spec.add_dependency "sass"
|
42
43
|
|
43
44
|
spec.add_development_dependency "bundler", "~> 1.15"
|
44
45
|
spec.add_development_dependency "byebug", "~> 9.1"
|
data/lib/isodoc.rb
CHANGED
data/lib/isodoc/convert.rb
CHANGED
@@ -15,6 +15,7 @@ require "isodoc/xref_gen"
|
|
15
15
|
require "isodoc/xref_sect_gen"
|
16
16
|
require "isodoc/html"
|
17
17
|
require "isodoc/i18n"
|
18
|
+
require "sass"
|
18
19
|
|
19
20
|
module IsoDoc
|
20
21
|
class Convert
|
@@ -65,11 +66,26 @@ module IsoDoc
|
|
65
66
|
@files_to_delete = []
|
66
67
|
end
|
67
68
|
|
69
|
+
def html_doc_path(file)
|
70
|
+
File.join(File.dirname(__FILE__), File.join("html", file))
|
71
|
+
end
|
72
|
+
|
73
|
+
def generate_css(filename, stripwordcss, fontheader)
|
74
|
+
stylesheet = File.read(filename, encoding: "UTF-8")
|
75
|
+
stylesheet.gsub!(/(\s|\{)mso-[^:]+:[^;]+;/m, "\\1") if stripwordcss
|
76
|
+
engine = Sass::Engine.new(fontheader + stylesheet, syntax: :scss)
|
77
|
+
outname = File.basename(filename, ".*") + ".css"
|
78
|
+
File.open(outname, "w") { |f| f.write(engine.render) }
|
79
|
+
@files_to_delete << outname
|
80
|
+
outname
|
81
|
+
end
|
82
|
+
|
68
83
|
def convert1(docxml, filename, dir)
|
84
|
+
anchor_names docxml
|
69
85
|
noko do |xml|
|
70
86
|
xml.html do |html|
|
71
87
|
html.parent.add_namespace("epub", "http://www.idpf.org/2007/ops")
|
72
|
-
|
88
|
+
define_head html, filename, dir
|
73
89
|
make_body(html, docxml)
|
74
90
|
end
|
75
91
|
end.join("\n")
|
data/lib/isodoc/footnotes.rb
CHANGED
@@ -23,7 +23,7 @@ module IsoDoc
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def make_table_footnote_text(node, fnid, fnref)
|
26
|
-
attrs = { id: "
|
26
|
+
attrs = { id: "fn:#{fnid}" }
|
27
27
|
noko do |xml|
|
28
28
|
xml.div **attr_code(attrs) do |div|
|
29
29
|
make_table_footnote_target(div, fnid, fnref)
|
@@ -34,7 +34,7 @@ module IsoDoc
|
|
34
34
|
|
35
35
|
def make_generic_footnote_text(node, fnid)
|
36
36
|
noko do |xml|
|
37
|
-
xml.aside **{ id: "
|
37
|
+
xml.aside **{ id: "fn:#{fnid}", class: "footnote" } do |div|
|
38
38
|
node.children.each { |n| parse(n, div) }
|
39
39
|
end
|
40
40
|
end.join("\n")
|
@@ -63,9 +63,14 @@ module IsoDoc
|
|
63
63
|
def footnote_parse(node, out)
|
64
64
|
return table_footnote_parse(node, out) if @in_table || @in_figure
|
65
65
|
fn = node["reference"]
|
66
|
-
|
66
|
+
attrs = { "epub:type": "footnote", rel: "footnote", href: "#fn:#{fn}" }
|
67
|
+
out.a **attrs do |a|
|
67
68
|
a.sup { |sup| sup << fn }
|
68
69
|
end
|
70
|
+
make_footnote(node, fn)
|
71
|
+
end
|
72
|
+
|
73
|
+
def make_footnote(node, fn)
|
69
74
|
return if @seen_footnote.include?(fn)
|
70
75
|
@in_footnote = true
|
71
76
|
@footnotes << make_generic_footnote_text(node, fn)
|
data/lib/isodoc/html.rb
CHANGED
@@ -6,10 +6,15 @@ module IsoDoc
|
|
6
6
|
@files_to_delete.each { |f| system "rm #{f}" }
|
7
7
|
end
|
8
8
|
|
9
|
+
def script_cdata(result)
|
10
|
+
result.gsub(%r{<script>\s*<!\[CDATA\[}m, "<script>").
|
11
|
+
gsub(%r{\]\]>\s*</script>}, "</script>").
|
12
|
+
gsub(%r{<!\[CDATA\[\s*<script>}m, "<script>").
|
13
|
+
gsub(%r{</script>\s*\]\]>}, "</script>")
|
14
|
+
end
|
15
|
+
|
9
16
|
def toHTML(result, filename)
|
10
|
-
result = from_xhtml(html_cleanup(to_xhtml(result)))
|
11
|
-
gsub(%r{<script><!\[CDATA\[}, "<script>").
|
12
|
-
gsub(%r{\]\]></script>}, "</script>")
|
17
|
+
result = script_cdata(from_xhtml(html_cleanup(to_xhtml(result))))
|
13
18
|
result = populate_template(result, :html)
|
14
19
|
File.open("#{filename}.html", "w") do |f|
|
15
20
|
f.write(result)
|
@@ -48,14 +53,43 @@ module IsoDoc
|
|
48
53
|
docxml
|
49
54
|
end
|
50
55
|
|
56
|
+
def html_head()
|
57
|
+
<<~HEAD.freeze
|
58
|
+
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
59
|
+
|
60
|
+
<!--TOC script import-->
|
61
|
+
<script type="text/javascript" src="https://cdn.rawgit.com/jgallen23/toc/0.3.2/dist/toc.min.js"></script>
|
62
|
+
|
63
|
+
<!--Google fonts-->
|
64
|
+
<link href="https://fonts.googleapis.com/css?family=Overpass:300,300i,600,900" rel="stylesheet">
|
65
|
+
<link href="https://fonts.googleapis.com/css?family=Lato:400,400i,700,900" rel="stylesheet">
|
66
|
+
<!--Font awesome import for the link icon-->
|
67
|
+
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.8/css/solid.css" integrity="sha384-v2Tw72dyUXeU3y4aM2Y0tBJQkGfplr39mxZqlTBDUZAb9BGoC40+rdFCG0m10lXk" crossorigin="anonymous">
|
68
|
+
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.8/css/fontawesome.css" integrity="sha384-q3jl8XQu1OpdLgGFvNRnPdj5VIlCvgsDQTQB6owSOHWlAurxul7f+JpUOVdAiJ5P" crossorigin="anonymous">
|
69
|
+
HEAD
|
70
|
+
end
|
71
|
+
|
72
|
+
def html_button()
|
73
|
+
'<button onclick="topFunction()" id="myBtn" '\
|
74
|
+
'title="Go to top">Top</button>'.freeze
|
75
|
+
end
|
76
|
+
|
77
|
+
def html_main(docxml)
|
78
|
+
docxml.at("//head").add_child(html_head())
|
79
|
+
d = docxml.at('//div[@class="WordSection3"]')
|
80
|
+
d.name = "main"
|
81
|
+
d.children.first.previous = html_button()
|
82
|
+
end
|
83
|
+
|
51
84
|
def html_preface(docxml)
|
52
85
|
html_cover(docxml) if @htmlcoverpage
|
53
86
|
html_intro(docxml) if @htmlintropage
|
54
87
|
docxml.at("//body") << mathjax(@openmathdelim, @closemathdelim)
|
55
88
|
if @scripts
|
56
89
|
scripts = File.read(@scripts, encoding: "UTF-8")
|
57
|
-
docxml.at("//body").add_child scripts #scripts.to_xml(encoding: "US-ASCII")
|
90
|
+
a = docxml.at("//body").add_child docxml.create_cdata(scripts) #scripts.to_xml(encoding: "US-ASCII")
|
58
91
|
end
|
92
|
+
html_main(docxml)
|
59
93
|
docxml
|
60
94
|
end
|
61
95
|
|
@@ -120,9 +154,9 @@ module IsoDoc
|
|
120
154
|
next if seen[x["href"]]
|
121
155
|
seen[x["href"]] = true
|
122
156
|
fn = docxml.at(%<//*[@id = '#{x['href'].sub(/^#/, '')}']>) || next
|
123
|
-
x["id"] || x["id"] = "
|
124
|
-
fn.elements.first.children.first.previous =
|
125
|
-
|
157
|
+
x["id"] || x["id"] = "fnref:#{i + 1}"
|
158
|
+
fn.elements.first.children.first.previous = x.dup
|
159
|
+
fn.add_child "<a href='##{x['id']}'>↩</a>"
|
126
160
|
end
|
127
161
|
docxml
|
128
162
|
end
|
@@ -141,28 +175,32 @@ module IsoDoc
|
|
141
175
|
docxml
|
142
176
|
end
|
143
177
|
|
144
|
-
def html_toc1(h, ret, prevname)
|
145
|
-
h["id"] = UUIDTools::UUID.random_create.to_s unless h["id"]
|
146
|
-
li = "<li><a href='##{h["id"]}'>#{header_strip(h)}</a></li>"
|
147
|
-
if h.name == "h1"
|
148
|
-
ret += "</ul>" if prevname == "h2"
|
149
|
-
else
|
150
|
-
ret += "<ul>" if prevname == "h1"
|
151
|
-
end
|
152
|
-
ret + li
|
153
|
-
end
|
178
|
+
#def html_toc1(h, ret, prevname)
|
179
|
+
#h["id"] = UUIDTools::UUID.random_create.to_s unless h["id"]
|
180
|
+
#li = "<li><a href='##{h["id"]}'>#{header_strip(h)}</a></li>"
|
181
|
+
#if h.name == "h1"
|
182
|
+
#ret += "</ul>" if prevname == "h2"
|
183
|
+
#else
|
184
|
+
#ret += "<ul>" if prevname == "h1"
|
185
|
+
#end
|
186
|
+
#ret + li
|
187
|
+
#end
|
188
|
+
#
|
189
|
+
#def html_toc_obsolete(docxml)
|
190
|
+
#return docxml unless @htmlintropage
|
191
|
+
#ret = ""
|
192
|
+
#prevname = ""
|
193
|
+
#docxml.xpath("//h1 | //h2").each do |h|
|
194
|
+
#next if ["toc-contents", "TermNum"].include? h["class"]
|
195
|
+
#ret = html_toc1(h, ret, prevname)
|
196
|
+
#prevname = h.name
|
197
|
+
#end
|
198
|
+
#ret += "<ul>" if prevname == "h2"
|
199
|
+
#docxml.at("//*[@id='toc-list']").replace("<ul>#{ret}</ret>")
|
200
|
+
#docxml
|
201
|
+
#end
|
154
202
|
|
155
203
|
def html_toc(docxml)
|
156
|
-
return docxml unless @htmlintropage
|
157
|
-
ret = ""
|
158
|
-
prevname = ""
|
159
|
-
docxml.xpath("//h1 | //h2").each do |h|
|
160
|
-
next if ["toc-contents", "TermNum"].include? h["class"]
|
161
|
-
ret = html_toc1(h, ret, prevname)
|
162
|
-
prevname = h.name
|
163
|
-
end
|
164
|
-
ret += "<ul>" if prevname == "h2"
|
165
|
-
docxml.at("//*[@id='toc-list']").replace("<ul>#{ret}</ret>")
|
166
204
|
docxml
|
167
205
|
end
|
168
206
|
end
|
data/lib/isodoc/i18n-en.yaml
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
module IsoDoc
|
2
|
+
module Iso
|
3
|
+
class Convert < IsoDoc::Convert
|
4
|
+
|
5
|
+
def default_fonts(options)
|
6
|
+
b = options[:bodyfont] ||
|
7
|
+
(options[:script] == "Hans" ? '"SimSun",serif' :
|
8
|
+
'"Cambria",serif')
|
9
|
+
h = options[:headerfont] ||
|
10
|
+
(options[:script] == "Hans" ? '"SimHei",sans-serif' :
|
11
|
+
'"Cambria",serif')
|
12
|
+
m = options[:monospacefont] || '"Courier New",monospace'
|
13
|
+
"$bodyfont: #{b};\n$headerfont: #{h};\n$monospacefont: #{m};\n"
|
14
|
+
end
|
15
|
+
|
16
|
+
def alt_fonts(options)
|
17
|
+
b = options[:bodyfont] ||
|
18
|
+
(options[:script] == "Hans" ? '"SimSun",serif' :
|
19
|
+
'"Lato",sans-serif')
|
20
|
+
h = options[:headerfont] ||
|
21
|
+
(options[:script] == "Hans" ? '"SimHei",sans-serif' :
|
22
|
+
'"Lato",sans-serif')
|
23
|
+
m = options[:monospacefont] || '"Space Mono",monospace'
|
24
|
+
"$bodyfont: #{b};\n$headerfont: #{h};\n$monospacefont: #{m};\n"
|
25
|
+
end
|
26
|
+
|
27
|
+
def html_doc_path(file)
|
28
|
+
File.join(File.dirname(__FILE__), File.join("html", file))
|
29
|
+
end
|
30
|
+
|
31
|
+
def initialize(options)
|
32
|
+
super
|
33
|
+
if options[:alt]
|
34
|
+
css = generate_css(html_doc_path("style-human.scss"), true, alt_fonts(options))
|
35
|
+
else
|
36
|
+
css = generate_css(html_doc_path("style-iso.scss"), true, default_fonts(options))
|
37
|
+
end
|
38
|
+
@htmlstylesheet = css
|
39
|
+
@htmlcoverpage = html_doc_path("html_iso_titlepage.html")
|
40
|
+
@htmlintropage = html_doc_path("html_iso_intro.html")
|
41
|
+
@scripts = html_doc_path("scripts.html")
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
<html xmlns:v="urn:schemas-microsoft-com:vml"
|
2
|
+
xmlns:o="urn:schemas-microsoft-com:office:office"
|
3
|
+
xmlns:w="urn:schemas-microsoft-com:office:word"
|
4
|
+
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
|
5
|
+
xmlns:mv="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
|
6
|
+
|
7
|
+
<head>
|
8
|
+
<meta name=Title content="">
|
9
|
+
<meta name=Keywords content="">
|
10
|
+
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
|
11
|
+
<meta name=ProgId content=Word.Document>
|
12
|
+
<meta name=Generator content="Microsoft Word 15">
|
13
|
+
<meta name=Originator content="Microsoft Word 15">
|
14
|
+
<link id=Main-File rel=Main-File href="../{{ filename }}.html">
|
15
|
+
<!--[if gte mso 9]><xml>
|
16
|
+
<o:shapedefaults v:ext="edit" spidmax="2049"/>
|
17
|
+
</xml><![endif]-->
|
18
|
+
</head>
|
19
|
+
|
20
|
+
<body lang=EN link=blue vlink="#954F72">
|
21
|
+
|
22
|
+
<div style='mso-element:footnote-separator' id=fs>
|
23
|
+
|
24
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
25
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
26
|
+
|
27
|
+
<hr align=left size=1 width="33%">
|
28
|
+
|
29
|
+
<![endif]></span></span></p>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div style='mso-element:footnote-continuation-separator' id=fcs>
|
34
|
+
|
35
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
36
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
37
|
+
|
38
|
+
<hr align=left size=1>
|
39
|
+
|
40
|
+
<![endif]></span></span></p>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div style='mso-element:endnote-separator' id=es>
|
45
|
+
|
46
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
47
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
48
|
+
|
49
|
+
<hr align=left size=1 width="33%">
|
50
|
+
|
51
|
+
<![endif]></span></span></p>
|
52
|
+
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<div style='mso-element:endnote-continuation-separator' id=ecs>
|
56
|
+
|
57
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
58
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
59
|
+
|
60
|
+
<hr align=left size=1>
|
61
|
+
|
62
|
+
<![endif]></span></span></p>
|
63
|
+
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div style='mso-element:header' id=eha>
|
67
|
+
|
68
|
+
<p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
|
69
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>{{ agency }} {{ docnumber }}:{{ docyear }}(E){{ draftinfo }}</span></p>
|
70
|
+
|
71
|
+
</div>
|
72
|
+
|
73
|
+
<div style='mso-element:header' id=ha>
|
74
|
+
|
75
|
+
<p class=MsoHeader style='margin-bottom:18.0pt'><span lang=EN-GB
|
76
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-weight:normal'>©
|
77
|
+
{{ agency }} {{ docyear }} – All rights reserved</span><span lang=EN-GB
|
78
|
+
style='font-weight:normal'><o:p></o:p></span></p>
|
79
|
+
|
80
|
+
</div>
|
81
|
+
|
82
|
+
<div style='mso-element:footer' id=efa>
|
83
|
+
|
84
|
+
<p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
85
|
+
exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
|
86
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
87
|
+
style='mso-element:field-begin'></span><span
|
88
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
89
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
|
90
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
91
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
|
92
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
93
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
94
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
95
|
+
style='mso-tab-count:1'> </span>©
|
96
|
+
{{ agency }} {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
97
|
+
|
98
|
+
</div>
|
99
|
+
|
100
|
+
<div style='mso-element:header' id=eh2>
|
101
|
+
|
102
|
+
<p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
|
103
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>{{ agency }} {{ docnumber }}:{{ docyear }}(E){{ draftinfo }}</span></p>
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<div style='mso-element:header' id=h2>
|
108
|
+
|
109
|
+
<p class=MsoHeader align=right style='text-align:right;line-height:12.0pt;
|
110
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>{{ agency }} {{ docnumber }}:{{ docyear }}(E){{ draftinfo }}</span></p>
|
111
|
+
|
112
|
+
</div>
|
113
|
+
|
114
|
+
<div style='mso-element:footer' id=ef2>
|
115
|
+
|
116
|
+
<p class=MsoFooter style='line-height:12.0pt;mso-line-height-rule:exactly'><!--[if supportFields]><span
|
117
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
118
|
+
style='mso-element:field-begin'></span><span
|
119
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
120
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
|
121
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
122
|
+
style='mso-no-proof:yes'>ii</span></span><!--[if supportFields]><span
|
123
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
124
|
+
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
125
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
|
126
|
+
1'> </span>©
|
127
|
+
{{ agency }} {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
128
|
+
|
129
|
+
</div>
|
130
|
+
|
131
|
+
<div style='mso-element:footer' id=f2>
|
132
|
+
|
133
|
+
<p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
|
134
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }} {{ docyear }} – All
|
135
|
+
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><span
|
136
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
137
|
+
style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>
|
138
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
|
139
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
140
|
+
style='mso-no-proof:yes'>iii</span></span><!--[if supportFields]><span
|
141
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
142
|
+
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
143
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
144
|
+
|
145
|
+
</div>
|
146
|
+
|
147
|
+
<div style='mso-element:footer' id=ef3>
|
148
|
+
|
149
|
+
<p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
150
|
+
exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
|
151
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
152
|
+
style='mso-element:field-begin'></span><span
|
153
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
154
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
|
155
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
156
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
|
157
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
158
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
159
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
160
|
+
style='mso-tab-count:1'> </span>©
|
161
|
+
{{ agency }} {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
162
|
+
|
163
|
+
</div>
|
164
|
+
|
165
|
+
<div style='mso-element:footer' id=f3>
|
166
|
+
|
167
|
+
<p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
|
168
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }} {{ docyear }} – All
|
169
|
+
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><b
|
170
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
171
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
|
172
|
+
PAGE<span style='mso-spacerun:yes'> </span>\* MERGEFORMAT <span
|
173
|
+
style='mso-element:field-separator'></span></span></b><![endif]--><b
|
174
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
175
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b
|
176
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
177
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
178
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
179
|
+
|
180
|
+
</div>
|
181
|
+
|
182
|
+
</body>
|
183
|
+
|
184
|
+
</html>
|