skeleton-ui 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0d53c51f764f3c80c7bd2d38515aff1b0148042de3dfacfceed58b42896037a
4
- data.tar.gz: bda89dc3e1e69609fc8c95001d63b1b959bb6356bfd3413cedbcc270bdc501c8
3
+ metadata.gz: b40d3fd6bd334a9a4122b1632dbde1fe9deaab262f5f89189744c29e84df8010
4
+ data.tar.gz: 966ed8720ab46d1e76cb1ed72c548de2c6e241a955538ea7eb3042de4de0cf31
5
5
  SHA512:
6
- metadata.gz: da1ad1ccf9f0a2f303291402a08da1c087230950ee9ce899b578e24d07c0e0312d88edf19073432023289a86eb4ff7262fa0eb1217497027b02a948a71b1f772
7
- data.tar.gz: c5157352b8c2a7392001a9bcf28b09f96dca3145f8514a8e91665b92e1609ec58446726828832a435cbc12238525c425aa395da2d5bb959ee0d281fd447a59a0
6
+ metadata.gz: 4a496ede310c6100a334f6c84966bfa4af6717bd7a240c52ab2f20d35c4ba5dc1d0a11dd3808b25929259c00709c03a150d2c4dcde34cc04242299915127c967
7
+ data.tar.gz: 7b216425c45e74fcd8b342210a25fb8435b317d4f856201e623ffdd98ce1379d7c0426d30bd0bc6f6c6481d1f7f024b4973f7adb11ca6c8aee1eb8e022685663
data/.gitignore CHANGED
@@ -1,10 +1,13 @@
1
1
  .DS_Store
2
- *.lock
3
- *.xcuserdatad
2
+ /.idea/
3
+ /pkg/
4
4
  /PageObjects/
5
5
  /attach/
6
6
  /Attachments/
7
7
  /XCResults/
8
+ *.lock
9
+ *.xcuserdatad
8
10
  *.png
9
- /.idea/
10
- /pkg/
11
+ *.html
12
+ !index.html
13
+ port
@@ -1,7 +1,10 @@
1
1
  require 'sinatra'
2
2
  require_relative '../lib/skeleton/root'
3
3
 
4
- set :port, ARGV[0]
4
+ server_port = ARGV[0]
5
+ set :port, server_port
6
+
7
+ File.open("#{Base::ROOT_DIR}/html/port", 'w+') { |f| f.write(server_port) }
5
8
 
6
9
  get '/:file' do
7
10
  send_file "#{Base::ROOT_DIR}/html/#{params[:file]}"
@@ -77,9 +77,12 @@ module Skeleton
77
77
  end
78
78
 
79
79
  def open_url
80
- url = 'http://localhost:4567/index.html'
80
+ port = File.read("#{Base::ROOT_DIR}/html/port")
81
+ url = "http://localhost:#{port}/index.html"
81
82
  `open #{url}`
82
- @driver.log.info("Look at your pretty page objects: #{url} 😍")
83
+ @driver.log.info("Look at your pretty page objects: \n#{url} 😍")
84
+ rescue Errno::ENOENT => err
85
+ @driver.log.error("Something went wrong with skeleton server 💩\n#{err}")
83
86
  end
84
87
 
85
88
  def ios?
@@ -1,4 +1,4 @@
1
1
  module Skeleton
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.5'
3
3
  GEM_NAME = 'skeleton-ui'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skeleton-ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - a.alterpesotskiy
@@ -162,8 +162,6 @@ files:
162
162
  - docs/untrusted-dev.png
163
163
  - html/index.css
164
164
  - html/index.html
165
- - html/java.html
166
- - html/ruby.html
167
165
  - html/server.rb
168
166
  - html/template.html.erb
169
167
  - lib/skeleton.rb
@@ -1,172 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <title>Skeleton</title>
5
- <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
8
- <link rel="stylesheet" type="text/css" href="/index.css"/>
9
- </head>
10
- <body class="bg-light">
11
- <div class="container-fluid">
12
- <div class="py-5 text-center">
13
- <img class="d-block mx-auto mb-4" src="https://getbootstrap.com/assets/brand/bootstrap-solid.svg" alt="" width="72" height="72">
14
- <h2>Skeleton</h2>
15
- </div>
16
- <div class="row" style="min-height: 666px;">
17
- <div class="col-md-4 mb-4">
18
- <div class="aside" style="max-height: 666px;">
19
- <div class="aside__img" style="background-image: url(screenshot.png);"></div>
20
- </div>
21
- </div>
22
- <div class="col-md-8">
23
- <h4 class="mb-3">Page Objects:</h4>
24
- <div class="content" id="content">
25
- <pre><code>By myTargetDemo() {
26
- return MobileBy.AccessibilityId("myTarget Demo");
27
- }
28
-
29
- By other1() {
30
- return MobileBy.iOSNsPredicateString("label like 'myTarget Demo'");
31
- }
32
-
33
- By staticText2() {
34
- return MobileBy.iOSNsPredicateString("label like '320x50 and 300x250 banners'");
35
- }
36
-
37
- By staticText3() {
38
- return MobileBy.iOSNsPredicateString("label like 'Fullscreen banners'");
39
- }
40
-
41
- By staticText4() {
42
- return MobileBy.iOSNsPredicateString("label like 'Banners'");
43
- }
44
-
45
- By staticText5() {
46
- return MobileBy.iOSNsPredicateString("label like 'Interstitial Ads'");
47
- }
48
-
49
- By staticText6() {
50
- return MobileBy.iOSNsPredicateString("label like 'Advertisement inside app'");
51
- }
52
-
53
- By staticText7() {
54
- return MobileBy.iOSNsPredicateString("label like 'Instream video ads'");
55
- }
56
-
57
- By staticText8() {
58
- return MobileBy.iOSNsPredicateString("label like 'Native Ads'");
59
- }
60
-
61
- By staticText9() {
62
- return MobileBy.iOSNsPredicateString("label like 'Instream Ads'");
63
- }
64
-
65
- By staticText10() {
66
- return MobileBy.iOSNsPredicateString("label like '55'");
67
- }
68
-
69
- By staticText11() {
70
- return MobileBy.iOSNsPredicateString("label like 'Banner 320x50'");
71
- }
72
-
73
- By staticText12() {
74
- return MobileBy.iOSNsPredicateString("label like '556'");
75
- }
76
-
77
- By staticText13() {
78
- return MobileBy.iOSNsPredicateString("label like 'Banner 320x50'");
79
- }
80
-
81
- By button14() {
82
- return MobileBy.iOSNsPredicateString("label like '×'");
83
- }
84
-
85
- By button15() {
86
- return MobileBy.iOSNsPredicateString("label like '×'");
87
- }
88
-
89
- By staticText16() {
90
- return MobileBy.iOSNsPredicateString("label like 'Ad unit'");
91
- }
92
-
93
- By staticText17() {
94
- return MobileBy.iOSNsPredicateString("label like 'Insert your slotId and ad type'");
95
- }
96
-
97
- </code></pre>
98
- </div>
99
- <br>
100
- </div>
101
- <h4 class="mb-3">Elements Tree:</h4>
102
- <div class="content" id="content">
103
- <pre><code>
104
- t = 1.46s Snapshot accessibility hierarchy for app with pid 75035
105
- t = 1.48s Snapshot accessibility hierarchy for app with pid 75035
106
- Attributes: Application, 0x60000019cb10, pid: 75035, {{0.0, 0.0}, {414.0, 736.0}}, label: 'myTargetDemo'
107
- Element subtree:
108
- →Application, 0x60000019cb10, pid: 75035, {{0.0, 0.0}, {414.0, 736.0}}, label: 'myTargetDemo'
109
- Window, 0x60000019bc70, Main Window, {{0.0, 0.0}, {414.0, 736.0}}
110
- Other, 0x600000185480, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
111
- NavigationBar, 0x60000019c700, traits: 35192962023424, {{0.0, 20.0}, {414.0, 44.0}}, identifier: 'myTarget Demo'
112
- Other, 0x60000019cff0, traits: 8590000128, {{144.3, 31.7}, {125.7, 20.3}}, label: 'myTarget Demo'
113
- Other, 0x60000019cd80, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
114
- Other, 0x60000019d0c0, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
115
- Other, 0x60000019d190, traits: 8589934592, {{0.0, 64.0}, {414.0, 672.0}}
116
- Table, 0x60000019d260, traits: 35192962023424, {{0.0, 64.0}, {414.0, 672.0}}
117
- Other, 0x60000019d330, traits: 8589934592, {{0.0, 64.0}, {414.0, 0.0}}
118
- Cell, 0x60000019c080, traits: 8589934592, {{0.0, 64.0}, {414.0, 280.0}}
119
- StaticText, 0x60000019d400, traits: 8589934656, {{16.0, 297.0}, {108.3, 32.3}}, label: '320x50 and 300x250 banners'
120
- StaticText, 0x60000019c220, traits: 8589934656, {{218.0, 297.0}, {119.3, 16.3}}, label: 'Fullscreen banners'
121
- StaticText, 0x60000019c150, traits: 8589934656, {{16.0, 270.0}, {72.3, 21.0}}, label: 'Banners'
122
- StaticText, 0x60000019d4d0, traits: 8589934656, {{218.0, 270.0}, {124.7, 21.0}}, label: 'Interstitial Ads'
123
- Cell, 0x60000019d5a0, traits: 8589934592, {{0.0, 344.0}, {414.0, 280.0}}
124
- StaticText, 0x60000019d670, traits: 8589934656, {{16.0, 577.0}, {134.0, 32.3}}, label: 'Advertisement inside app's content'
125
- StaticText, 0x60000019d740, traits: 8589934656, {{218.0, 577.0}, {118.3, 16.3}}, label: 'Instream video ads'
126
- StaticText, 0x60000019d810, traits: 8589934656, {{16.0, 550.0}, {92.7, 21.0}}, label: 'Native Ads'
127
- StaticText, 0x60000019d8e0, traits: 8589934656, {{218.0, 550.0}, {113.7, 21.0}}, label: 'Instream Ads'
128
- Cell, 0x60000019d9b0, traits: 8589934592, {{0.0, 624.0}, {414.0, 280.0}}
129
- StaticText, 0x60000019da80, traits: 8589934656, {{10.0, 634.0}, {192.0, 190.0}}, label: '55'
130
- StaticText, 0x60000019db50, traits: 8589934656, {{16.0, 830.0}, {127.3, 21.0}}, label: 'Banner 320x50'
131
- StaticText, 0x60000019dc20, traits: 8589934656, {{212.0, 634.0}, {192.0, 190.0}}, label: '556'
132
- StaticText, 0x60000019dcf0, traits: 8589934656, {{218.0, 830.0}, {127.3, 21.0}}, label: 'Banner 320x50'
133
- Button, 0x60000019ddc0, traits: 8589934593, {{162.0, 634.0}, {40.0, 40.0}}, label: '×'
134
- Button, 0x60000019de90, traits: 8589934593, {{364.0, 634.0}, {40.0, 40.0}}, label: '×'
135
- Cell, 0x60000019df60, traits: 8589934592, {{0.0, 904.0}, {414.0, 280.0}}
136
- StaticText, 0x60000019e030, traits: 8589934656, {{0.0, 64.0}, {62.0, 21.0}}, label: 'Ad unit'
137
- StaticText, 0x60000019e100, traits: 8589934656, {{0.0, 64.0}, {134.7, 32.3}}, label: 'Insert your slotId and ad type'
138
- Other, 0x60000019e1d0, traits: 8589934592, {{0.0, 1184.0}, {414.0, 0.0}}
139
- Window, 0x60000019e2a0, {{0.0, 0.0}, {414.0, 736.0}}
140
- Other, 0x60000019e370, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
141
- Other, 0x60000019e440, traits: 8589934592, {{0.0, 736.0}, {414.0, 226.0}}
142
- Window, 0x60000019e510, {{0.0, 0.0}, {414.0, 736.0}}
143
- StatusBar, 0x60000019e5e0, {{0.0, 0.0}, {414.0, 20.0}}
144
- Other, 0x60000019e6b0, {{0.0, 0.0}, {414.0, 20.0}}
145
- Other, 0x60000019e780, {{0.0, 0.0}, {414.0, 20.0}}
146
- Other, 0x60000019e850, traits: 8388608, {{6.0, 0.0}, {39.0, 20.0}}
147
- Other, 0x60000019e920, traits: 8388608, {{50.0, 0.0}, {14.0, 20.0}}, label: '3 of 3 Wi-Fi bars', value: SSID
148
- Other, 0x60000019e9f0, traits: 8389120, {{182.0, 0.0}, {54.0, 20.0}}, label: '10:21 AM'
149
- Other, 0x60000019eac0, traits: 8388608, {{374.0, 0.0}, {35.0, 20.0}}, label: '-100% battery power'
150
- Path to element:
151
- →Application, 0x60000019cb10, pid: 75035, {{0.0, 0.0}, {414.0, 736.0}}, label: 'myTargetDemo'
152
- Query chain:
153
- →Find: Application "ru.forqa.xctest" 0x6000000ab3a0
154
- Output: {
155
- Application, 0x60000019cb10, pid: 75035, {{0.0, 0.0}, {414.0, 736.0}}, label: 'myTargetDemo'
156
- }
157
-
158
-
159
- </code></pre>
160
- </div>
161
- </div>
162
- <footer class="my-5 pt-5 text-muted text-center text-small">
163
- <p class="mb-1">© 2018-2033 forqa</p>
164
- <ul class="list-inline">
165
- <li class="list-inline-item"><a href="#">Privacy</a></li>
166
- <li class="list-inline-item"><a href="#">Terms</a></li>
167
- <li class="list-inline-item"><a href="#">Support</a></li>
168
- </ul>
169
- </footer>
170
- </div>
171
- </body>
172
- </html>
@@ -1,168 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <title>Skeleton</title>
5
- <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
8
- <link rel="stylesheet" type="text/css" href="/index.css"/>
9
- </head>
10
- <body class="bg-light">
11
- <div class="container-fluid">
12
- <div class="py-5 text-center">
13
- <h2>Skeleton</h2>
14
- </div>
15
- <div class="row" style="min-height: 666px;">
16
- <div class="col-md-4 mb-4">
17
- <div class="aside" style="max-height: 666px;">
18
- <div class="aside__img" style="background-image: url(screenshot.png);"></div>
19
- </div>
20
- </div>
21
- <div class="col-md-8">
22
- <h4 class="mb-3">Page Objects:</h4>
23
- <div class="content" id="content">
24
- <pre><code>def my_target_demo
25
- return :accessibility_id, "myTarget Demo"
26
- end
27
-
28
- def other1
29
- return :predicate, "label like 'myTarget Demo'"
30
- end
31
-
32
- def static_text2
33
- return :predicate, "label like '320x50 and 300x250 banners'"
34
- end
35
-
36
- def static_text3
37
- return :predicate, "label like 'Fullscreen banners'"
38
- end
39
-
40
- def static_text4
41
- return :predicate, "label like 'Banners'"
42
- end
43
-
44
- def static_text5
45
- return :predicate, "label like 'Interstitial Ads'"
46
- end
47
-
48
- def static_text6
49
- return :predicate, "label like 'Advertisement inside app'"
50
- end
51
-
52
- def static_text7
53
- return :predicate, "label like 'Instream video ads'"
54
- end
55
-
56
- def static_text8
57
- return :predicate, "label like 'Native Ads'"
58
- end
59
-
60
- def static_text9
61
- return :predicate, "label like 'Instream Ads'"
62
- end
63
-
64
- def static_text10
65
- return :predicate, "label like '55'"
66
- end
67
-
68
- def static_text11
69
- return :predicate, "label like 'Banner 320x50'"
70
- end
71
-
72
- def static_text12
73
- return :predicate, "label like '556'"
74
- end
75
-
76
- def static_text13
77
- return :predicate, "label like 'Banner 320x50'"
78
- end
79
-
80
- def button14
81
- return :predicate, "label like '×'"
82
- end
83
-
84
- def button15
85
- return :predicate, "label like '×'"
86
- end
87
-
88
- def static_text16
89
- return :predicate, "label like 'Ad unit'"
90
- end
91
-
92
- def static_text17
93
- return :predicate, "label like 'Insert your slotId and ad type'"
94
- end
95
-
96
- </code></pre>
97
- </div>
98
- <br>
99
- </div>
100
- <h4 class="mb-3">Elements Tree:</h4>
101
- <div class="content" id="content">
102
- <pre><code>
103
- t = 1.46s Snapshot accessibility hierarchy for app with pid 75035
104
- t = 1.48s Snapshot accessibility hierarchy for app with pid 75035
105
- Attributes: Application, 0x60000019cb10, pid: 75035, {{0.0, 0.0}, {414.0, 736.0}}, label: 'myTargetDemo'
106
- Element subtree:
107
- →Application, 0x60000019cb10, pid: 75035, {{0.0, 0.0}, {414.0, 736.0}}, label: 'myTargetDemo'
108
- Window, 0x60000019bc70, Main Window, {{0.0, 0.0}, {414.0, 736.0}}
109
- Other, 0x600000185480, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
110
- NavigationBar, 0x60000019c700, traits: 35192962023424, {{0.0, 20.0}, {414.0, 44.0}}, identifier: 'myTarget Demo'
111
- Other, 0x60000019cff0, traits: 8590000128, {{144.3, 31.7}, {125.7, 20.3}}, label: 'myTarget Demo'
112
- Other, 0x60000019cd80, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
113
- Other, 0x60000019d0c0, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
114
- Other, 0x60000019d190, traits: 8589934592, {{0.0, 64.0}, {414.0, 672.0}}
115
- Table, 0x60000019d260, traits: 35192962023424, {{0.0, 64.0}, {414.0, 672.0}}
116
- Other, 0x60000019d330, traits: 8589934592, {{0.0, 64.0}, {414.0, 0.0}}
117
- Cell, 0x60000019c080, traits: 8589934592, {{0.0, 64.0}, {414.0, 280.0}}
118
- StaticText, 0x60000019d400, traits: 8589934656, {{16.0, 297.0}, {108.3, 32.3}}, label: '320x50 and 300x250 banners'
119
- StaticText, 0x60000019c220, traits: 8589934656, {{218.0, 297.0}, {119.3, 16.3}}, label: 'Fullscreen banners'
120
- StaticText, 0x60000019c150, traits: 8589934656, {{16.0, 270.0}, {72.3, 21.0}}, label: 'Banners'
121
- StaticText, 0x60000019d4d0, traits: 8589934656, {{218.0, 270.0}, {124.7, 21.0}}, label: 'Interstitial Ads'
122
- Cell, 0x60000019d5a0, traits: 8589934592, {{0.0, 344.0}, {414.0, 280.0}}
123
- StaticText, 0x60000019d670, traits: 8589934656, {{16.0, 577.0}, {134.0, 32.3}}, label: 'Advertisement inside app's content'
124
- StaticText, 0x60000019d740, traits: 8589934656, {{218.0, 577.0}, {118.3, 16.3}}, label: 'Instream video ads'
125
- StaticText, 0x60000019d810, traits: 8589934656, {{16.0, 550.0}, {92.7, 21.0}}, label: 'Native Ads'
126
- StaticText, 0x60000019d8e0, traits: 8589934656, {{218.0, 550.0}, {113.7, 21.0}}, label: 'Instream Ads'
127
- Cell, 0x60000019d9b0, traits: 8589934592, {{0.0, 624.0}, {414.0, 280.0}}
128
- StaticText, 0x60000019da80, traits: 8589934656, {{10.0, 634.0}, {192.0, 190.0}}, label: '55'
129
- StaticText, 0x60000019db50, traits: 8589934656, {{16.0, 830.0}, {127.3, 21.0}}, label: 'Banner 320x50'
130
- StaticText, 0x60000019dc20, traits: 8589934656, {{212.0, 634.0}, {192.0, 190.0}}, label: '556'
131
- StaticText, 0x60000019dcf0, traits: 8589934656, {{218.0, 830.0}, {127.3, 21.0}}, label: 'Banner 320x50'
132
- Button, 0x60000019ddc0, traits: 8589934593, {{162.0, 634.0}, {40.0, 40.0}}, label: '×'
133
- Button, 0x60000019de90, traits: 8589934593, {{364.0, 634.0}, {40.0, 40.0}}, label: '×'
134
- Cell, 0x60000019df60, traits: 8589934592, {{0.0, 904.0}, {414.0, 280.0}}
135
- StaticText, 0x60000019e030, traits: 8589934656, {{0.0, 64.0}, {62.0, 21.0}}, label: 'Ad unit'
136
- StaticText, 0x60000019e100, traits: 8589934656, {{0.0, 64.0}, {134.7, 32.3}}, label: 'Insert your slotId and ad type'
137
- Other, 0x60000019e1d0, traits: 8589934592, {{0.0, 1184.0}, {414.0, 0.0}}
138
- Window, 0x60000019e2a0, {{0.0, 0.0}, {414.0, 736.0}}
139
- Other, 0x60000019e370, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
140
- Other, 0x60000019e440, traits: 8589934592, {{0.0, 736.0}, {414.0, 226.0}}
141
- Window, 0x60000019e510, {{0.0, 0.0}, {414.0, 736.0}}
142
- StatusBar, 0x60000019e5e0, {{0.0, 0.0}, {414.0, 20.0}}
143
- Other, 0x60000019e6b0, {{0.0, 0.0}, {414.0, 20.0}}
144
- Other, 0x60000019e780, {{0.0, 0.0}, {414.0, 20.0}}
145
- Other, 0x60000019e850, traits: 8388608, {{6.0, 0.0}, {39.0, 20.0}}
146
- Other, 0x60000019e920, traits: 8388608, {{50.0, 0.0}, {14.0, 20.0}}, label: '3 of 3 Wi-Fi bars', value: SSID
147
- Other, 0x60000019e9f0, traits: 8389120, {{182.0, 0.0}, {54.0, 20.0}}, label: '10:21 AM'
148
- Other, 0x60000019eac0, traits: 8388608, {{374.0, 0.0}, {35.0, 20.0}}, label: '-100% battery power'
149
- Path to element:
150
- →Application, 0x60000019cb10, pid: 75035, {{0.0, 0.0}, {414.0, 736.0}}, label: 'myTargetDemo'
151
- Query chain:
152
- →Find: Application "ru.forqa.xctest" 0x6000000ab3a0
153
- Output: {
154
- Application, 0x60000019cb10, pid: 75035, {{0.0, 0.0}, {414.0, 736.0}}, label: 'myTargetDemo'
155
- }
156
-
157
-
158
- </code></pre>
159
- </div>
160
- </div>
161
- <footer class="my-5 pt-5 text-muted text-center text-small">
162
- <p class="mb-1">© 2018-2033 forqa</p>
163
- <ul class="list-inline">
164
- </ul>
165
- </footer>
166
- </div>
167
- </body>
168
- </html>