isodoc 0.5.9 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|