foreman_leapp 0.0.5 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -20
- data/app/controllers/api/v2/concerns/api_authorizer.rb +27 -0
- data/app/controllers/api/v2/preupgrade_reports_controller.rb +21 -2
- data/app/controllers/preupgrade_reports_controller.rb +11 -1
- data/app/lib/actions/preupgrade_job.rb +2 -1
- data/app/lib/helpers/job_helper.rb +3 -4
- data/app/models/preupgrade_report.rb +1 -0
- data/app/models/preupgrade_report_entry.rb +1 -0
- data/app/views/api/v2/preupgrade_report_entries/base.json.rabl +1 -1
- data/app/views/api/v2/preupgrade_reports/job_invocation.json.rabl +3 -0
- data/app/views/foreman_leapp/job_templates/leapp_check.erb +15 -0
- data/app/views/foreman_leapp/job_templates/{preupgrade.erb → leapp_preupgrade.erb} +5 -2
- data/app/views/foreman_leapp/job_templates/leapp_remediation.erb +29 -0
- data/app/views/foreman_leapp/job_templates/leapp_upgrade.erb +26 -0
- data/app/views/job_invocations/_leapp_preupgrade_report.html.erb +2 -1
- data/config/routes.rb +2 -1
- data/db/migrate/20200429080939_report_entries_flags.rb +5 -0
- data/db/seeds.d/10_leapp_preupgrade.rb +1 -1
- data/lib/foreman_leapp/engine.rb +7 -6
- data/lib/foreman_leapp/version.rb +1 -1
- data/package.json +3 -2
- data/test/functional/api/v2/preupgrade_reports_controller_test.rb +89 -6
- data/test/functional/preupgrade_reports_controller_test.rb +27 -4
- data/test/unit/actions/preupgrade_job_test.rb +1 -1
- data/test/unit/helpers/job_helper_test.rb +3 -10
- data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +4 -0
- data/webpack/__mocks__/foremanReact/common/I18n.js +1 -1
- data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +2 -0
- data/webpack/__mocks__/foremanReact/components/common/EmptyState.js +1 -0
- data/webpack/components/PreupgradeReports/PreupgradeReports.js +119 -8
- data/webpack/components/PreupgradeReports/PreupgradeReportsActions.js +1 -1
- data/webpack/components/PreupgradeReports/PreupgradeReportsHelpers.js +152 -0
- data/webpack/components/PreupgradeReports/PreupgradeReportsReducer.js +2 -0
- data/webpack/components/PreupgradeReports/PreupgradeReportsSelectors.js +11 -0
- data/webpack/components/PreupgradeReports/__tests__/PreupgradeReports.fixtures.js +72 -2
- data/webpack/components/PreupgradeReports/__tests__/PreupgradeReports.test.js +26 -1
- data/webpack/components/PreupgradeReports/__tests__/PreupgradeReportsHelpers.test.js +78 -0
- data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReports.test.js.snap +60 -5
- data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsHelpers.test.js.snap +489 -0
- data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsReducer.test.js.snap +40 -1
- data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsSelectors.test.js.snap +36 -1
- data/webpack/components/PreupgradeReports/components/EntriesFilter.js +121 -0
- data/webpack/components/PreupgradeReports/components/EntriesFilter.scss +3 -0
- data/webpack/components/PreupgradeReports/components/EntriesFilter.test.js +30 -0
- data/webpack/components/PreupgradeReports/components/FixSelectedButton.js +35 -0
- data/webpack/components/PreupgradeReports/components/FixSelectedButton.test.js +15 -0
- data/webpack/components/PreupgradeReports/components/NoReports.js +35 -0
- data/webpack/components/PreupgradeReports/components/NoReports.test.js +15 -0
- data/webpack/components/PreupgradeReports/components/UpgradeAllButton.js +29 -0
- data/webpack/components/PreupgradeReports/components/UpgradeAllButton.test.js +17 -0
- data/webpack/components/PreupgradeReports/components/__snapshots__/EntriesFilter.test.js.snap +330 -0
- data/webpack/components/PreupgradeReports/components/__snapshots__/FixSelectedButton.test.js.snap +40 -0
- data/webpack/components/PreupgradeReports/components/__snapshots__/NoReports.test.js.snap +19 -0
- data/webpack/components/PreupgradeReports/components/__snapshots__/UpgradeAllButton.test.js.snap +29 -0
- data/webpack/components/PreupgradeReports/index.js +28 -5
- data/webpack/components/PreupgradeReportsList/PreupgradeReportList.scss +37 -0
- data/webpack/components/PreupgradeReportsList/__tests__/PreupgradeReportsList.test.js +28 -2
- data/webpack/components/PreupgradeReportsList/__tests__/__snapshots__/PreupgradeReportsList.test.js.snap +119 -0
- data/webpack/components/PreupgradeReportsList/components/InfoItem.js +1 -1
- data/webpack/components/PreupgradeReportsList/components/InhibitorInfoItem.js +33 -0
- data/webpack/components/PreupgradeReportsList/components/PreupgradeReportEntry.js +50 -6
- data/webpack/components/PreupgradeReportsList/components/PreupgradeReportsListHeader.js +56 -0
- data/webpack/components/PreupgradeReportsList/components/SortableHeaderItem.js +50 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/InhibitorInfoItem.test.js +27 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.fixtures.js +38 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.test.js +2 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportsListHeader.test.js +14 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/SortableHeaderItem.test.js +29 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/InhibitorInfoItem.test.js.snap +32 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/PreupgradeReportEntry.test.js.snap +95 -14
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/PreupgradeReportsListHeader.test.js.snap +113 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/SortableHeaderItem.test.js.snap +36 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/helpers.test.js.snap +191 -29
- data/webpack/components/PreupgradeReportsList/components/__tests__/helpers.test.js +19 -8
- data/webpack/components/PreupgradeReportsList/components/foreman_leapp.scss +15 -0
- data/webpack/components/PreupgradeReportsList/components/helpers.js +177 -21
- data/webpack/components/PreupgradeReportsList/components/images/i_severity-critical.svg +61 -0
- data/webpack/components/PreupgradeReportsList/components/images/i_severity-high.svg +61 -0
- data/webpack/components/PreupgradeReportsList/components/images/i_severity-low.svg +62 -0
- data/webpack/components/PreupgradeReportsList/components/images/i_severity-med.svg +62 -0
- data/webpack/components/PreupgradeReportsList/index.js +48 -10
- data/webpack/csrf.js +4 -0
- metadata +61 -10
- data/app/views/foreman_leapp/job_templates/remediation.erb +0 -17
- data/app/views/foreman_leapp/job_templates/upgrade.erb +0 -16
- data/webpack/components/PreupgradeReportsList/components/StringInfoItem.js +0 -49
- data/webpack/components/PreupgradeReportsList/components/__tests__/StringInfoItem.test.js +0 -13
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/StringInfoItem.test.js.snap +0 -12
@@ -1,16 +1,27 @@
|
|
1
1
|
import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
|
2
2
|
|
3
|
-
import {
|
3
|
+
import {
|
4
|
+
tagInfo,
|
5
|
+
hasRemediations,
|
6
|
+
getTitle,
|
7
|
+
getSeverity,
|
8
|
+
getSummary,
|
9
|
+
getTags,
|
10
|
+
getExternals,
|
11
|
+
getRemediations,
|
12
|
+
} from '../helpers';
|
4
13
|
|
5
|
-
|
6
|
-
title: 'This is title',
|
7
|
-
severity: 'low',
|
8
|
-
id: 5,
|
9
|
-
preupgradeReportId: 6,
|
10
|
-
};
|
14
|
+
import { reportEntry } from './PreupgradeReportEntry.fixtures';
|
11
15
|
|
12
16
|
const fixtures = {
|
13
|
-
'should return
|
17
|
+
'should return tag info': () => tagInfo(reportEntry.tags),
|
18
|
+
'should detect if has remediations': () => hasRemediations(reportEntry),
|
19
|
+
'should return title': () => getTitle(reportEntry),
|
20
|
+
'should return severity': () => getSeverity(reportEntry),
|
21
|
+
'should return summary': () => getSummary(reportEntry),
|
22
|
+
'should return tags': () => getTags(reportEntry),
|
23
|
+
'should return externals': () => getExternals(reportEntry),
|
24
|
+
'should return remediations': () => getRemediations(reportEntry),
|
14
25
|
};
|
15
26
|
|
16
27
|
describe('PreupgradeReportList/helpers', () =>
|
@@ -1,28 +1,184 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
|
2
|
+
import { Grid, ListView, Badge, Icon } from 'patternfly-react';
|
3
3
|
import EmptyInfoItem from './EmptyInfoItem';
|
4
|
-
import
|
4
|
+
import SeverityHigh from './images/i_severity-high.svg';
|
5
|
+
import SeverityMedium from './images/i_severity-med.svg';
|
6
|
+
import SeverityLow from './images/i_severity-low.svg';
|
5
7
|
|
6
8
|
export const itemIteratorId = (entry, ...rest) =>
|
7
9
|
`${entry.id}-${entry.preupgradeReportId}-${rest.join('-')}`;
|
8
10
|
|
9
|
-
export const
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
11
|
+
export const tagInfo = tags =>
|
12
|
+
tags.map(attr => (
|
13
|
+
<Badge key={attr} variant="pill primary">
|
14
|
+
{attr}
|
15
|
+
</Badge>
|
16
|
+
));
|
17
|
+
|
18
|
+
export const getSeverityImg = entry => {
|
19
|
+
const key = itemIteratorId(entry, `sv${entry.id}`);
|
20
|
+
|
21
|
+
switch (entry.severity) {
|
22
|
+
case 'low':
|
23
|
+
return (
|
24
|
+
<img
|
25
|
+
key={key}
|
26
|
+
src={SeverityLow}
|
27
|
+
alt="Low Risk Factor"
|
28
|
+
className="severity-img"
|
29
|
+
/>
|
30
|
+
);
|
31
|
+
case 'medium':
|
32
|
+
return (
|
33
|
+
<img
|
34
|
+
key={key}
|
35
|
+
src={SeverityMedium}
|
36
|
+
alt="Medium Risk Factor"
|
37
|
+
className="severity-img"
|
38
|
+
/>
|
39
|
+
);
|
40
|
+
case 'high':
|
41
|
+
return (
|
42
|
+
<img
|
43
|
+
key={key}
|
44
|
+
src={SeverityHigh}
|
45
|
+
alt="High Risk Factor"
|
46
|
+
className="severity-img"
|
47
|
+
/>
|
48
|
+
);
|
49
|
+
default:
|
50
|
+
return (
|
51
|
+
<img
|
52
|
+
key={key}
|
53
|
+
src={SeverityLow}
|
54
|
+
alt="Low Risk Factor"
|
55
|
+
className="severity-img"
|
56
|
+
/>
|
57
|
+
);
|
58
|
+
}
|
59
|
+
};
|
60
|
+
|
61
|
+
export const hasRemediations = entry => {
|
62
|
+
const key = itemIteratorId(entry, `rm${entry.id}`);
|
63
|
+
if (entry.detail && entry.detail.remediations) {
|
64
|
+
return (
|
65
|
+
<ListView.InfoItem key={key}>
|
66
|
+
<Icon type="pf" name="warning-triangle-o" /> Has Remediation
|
67
|
+
</ListView.InfoItem>
|
68
|
+
);
|
69
|
+
}
|
70
|
+
|
71
|
+
return <EmptyInfoItem key={key} entry={entry} attr="remediation" />;
|
72
|
+
};
|
73
|
+
|
74
|
+
export const getTitle = entry => {
|
75
|
+
if (entry.title) {
|
76
|
+
return (
|
77
|
+
<Grid.Row>
|
78
|
+
<Grid.Col md={1}>
|
79
|
+
<strong>Title</strong>
|
80
|
+
</Grid.Col>
|
81
|
+
<Grid.Col md={8}>{entry.title}</Grid.Col>
|
82
|
+
</Grid.Row>
|
83
|
+
);
|
84
|
+
}
|
85
|
+
return <div />;
|
86
|
+
};
|
87
|
+
|
88
|
+
export const getSeverity = entry => {
|
89
|
+
if (entry.severity) {
|
90
|
+
return (
|
91
|
+
<Grid.Row className="top-padded">
|
92
|
+
<Grid.Col md={1}>
|
93
|
+
<strong>Risk Factor</strong>
|
94
|
+
</Grid.Col>
|
95
|
+
<Grid.Col md={8}>
|
96
|
+
{getSeverityImg(entry)} {entry.severity}
|
97
|
+
</Grid.Col>
|
98
|
+
</Grid.Row>
|
99
|
+
);
|
100
|
+
}
|
101
|
+
return <div />;
|
102
|
+
};
|
103
|
+
|
104
|
+
export const getSummary = entry => {
|
105
|
+
if (entry.summary) {
|
106
|
+
return (
|
107
|
+
<Grid.Row className="top-padded">
|
108
|
+
<Grid.Col md={1}>
|
109
|
+
<strong>Summary</strong>
|
110
|
+
</Grid.Col>
|
111
|
+
<Grid.Col md={8} className="pre-wrap">
|
112
|
+
{entry.summary}
|
113
|
+
</Grid.Col>
|
114
|
+
</Grid.Row>
|
115
|
+
);
|
116
|
+
}
|
117
|
+
return <div />;
|
118
|
+
};
|
119
|
+
|
120
|
+
export const getTags = entry => {
|
121
|
+
if (entry.tags) {
|
122
|
+
return (
|
123
|
+
<Grid.Row className="top-padded">
|
124
|
+
<Grid.Col md={1}>
|
125
|
+
<strong>Tags</strong>
|
126
|
+
</Grid.Col>
|
127
|
+
<Grid.Col md={8}>{tagInfo(entry.tags)}</Grid.Col>
|
128
|
+
</Grid.Row>
|
129
|
+
);
|
130
|
+
}
|
131
|
+
return <div />;
|
132
|
+
};
|
133
|
+
|
134
|
+
export const getExternals = entry => {
|
135
|
+
if (entry.detail && entry.detail.external) {
|
136
|
+
return entry.detail.external.map(attr => {
|
137
|
+
const key = itemIteratorId(entry, attr);
|
138
|
+
return (
|
139
|
+
<Grid.Row className="top-padded" key={key}>
|
140
|
+
<Grid.Col md={1}>
|
141
|
+
<strong>Links</strong>
|
142
|
+
</Grid.Col>
|
143
|
+
<Grid.Col md={8}>
|
144
|
+
<a href={attr.url}>{attr.title}</a>
|
145
|
+
</Grid.Col>
|
146
|
+
</Grid.Row>
|
147
|
+
);
|
148
|
+
});
|
149
|
+
}
|
150
|
+
return <div />;
|
151
|
+
};
|
152
|
+
|
153
|
+
export const getRemediations = entry => {
|
154
|
+
if (entry.detail && entry.detail.remediations) {
|
155
|
+
return entry.detail.remediations.map(attr => {
|
156
|
+
const key = itemIteratorId(entry, attr);
|
157
|
+
if (attr.type === 'hint') {
|
158
|
+
return (
|
159
|
+
<Grid.Row className="top-padded" key={key}>
|
160
|
+
<Grid.Col md={1}>
|
161
|
+
<strong>Hint</strong>
|
162
|
+
</Grid.Col>
|
163
|
+
<Grid.Col md={8}>{attr.context}</Grid.Col>
|
164
|
+
</Grid.Row>
|
165
|
+
);
|
166
|
+
}
|
167
|
+
if (attr.type === 'command') {
|
168
|
+
return (
|
169
|
+
<Grid.Row className="top-padded" key={key}>
|
170
|
+
<Grid.Col md={1}>
|
171
|
+
<strong>Command</strong>
|
172
|
+
</Grid.Col>
|
173
|
+
<Grid.Col md={8}>
|
174
|
+
<code>{attr.context.join(' ')}</code>
|
175
|
+
</Grid.Col>
|
176
|
+
</Grid.Row>
|
177
|
+
);
|
178
|
+
}
|
179
|
+
|
180
|
+
return <div />;
|
181
|
+
});
|
182
|
+
}
|
183
|
+
return <div />;
|
28
184
|
};
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
12
|
+
version="1.1"
|
13
|
+
id="Layer_1"
|
14
|
+
x="0px"
|
15
|
+
y="0px"
|
16
|
+
viewBox="0 0 146 166"
|
17
|
+
style="enable-background:new 0 0 146 166;"
|
18
|
+
xml:space="preserve"
|
19
|
+
sodipodi:docname="i_critical.svg"
|
20
|
+
inkscape:version="0.92.1 r"><metadata
|
21
|
+
id="metadata4612"><rdf:RDF><cc:Work
|
22
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
23
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
24
|
+
id="defs4610" /><sodipodi:namedview
|
25
|
+
pagecolor="#ffffff"
|
26
|
+
bordercolor="#666666"
|
27
|
+
borderopacity="1"
|
28
|
+
objecttolerance="10"
|
29
|
+
gridtolerance="10"
|
30
|
+
guidetolerance="10"
|
31
|
+
inkscape:pageopacity="0"
|
32
|
+
inkscape:pageshadow="2"
|
33
|
+
inkscape:window-width="1920"
|
34
|
+
inkscape:window-height="1055"
|
35
|
+
id="namedview4608"
|
36
|
+
showgrid="false"
|
37
|
+
inkscape:zoom="1.4216867"
|
38
|
+
inkscape:cx="73"
|
39
|
+
inkscape:cy="83"
|
40
|
+
inkscape:window-x="0"
|
41
|
+
inkscape:window-y="1050"
|
42
|
+
inkscape:window-maximized="1"
|
43
|
+
inkscape:current-layer="Layer_1" /><style
|
44
|
+
type="text/css"
|
45
|
+
id="style4593">
|
46
|
+
.st0{fill:#808080;}
|
47
|
+
.st1{fill:#CC0000;}
|
48
|
+
</style><g
|
49
|
+
id="g4605"><path
|
50
|
+
class="st1"
|
51
|
+
d="M114.6,143.3H31c-7.2,0-13-4.8-13-10.6l0,0c0-5.9,5.9-10.6,13-10.6h83.6c7.2,0,13,4.8,13,10.6l0,0 C127.7,138.5,121.8,143.3,114.6,143.3z"
|
52
|
+
id="path4597" /><path
|
53
|
+
class="st1"
|
54
|
+
d="M114.6,110.2H31c-7.2,0-13-4.8-13-10.6l0,0C18,93.7,23.9,89,31,89h83.6c7.2,0,13,4.8,13,10.6l0,0 C127.7,105.4,121.8,110.2,114.6,110.2z"
|
55
|
+
id="path4599" /><path
|
56
|
+
class="st1"
|
57
|
+
d="M115,77.1H31.4c-7.2,0-13-4.8-13-10.6l0,0c0-5.9,5.9-10.6,13-10.6H115c7.2,0,13,4.8,13,10.6l0,0 C128,72.3,122.1,77.1,115,77.1z"
|
58
|
+
id="path4601" /><path
|
59
|
+
class="st1"
|
60
|
+
d="M114.6,44H31c-7.2,0-13-4.8-13-10.6l0,0c0-5.9,5.9-10.7,13-10.7h83.6c7.2,0,13,4.8,13,10.6l0,0 C127.7,39.2,121.8,44,114.6,44z"
|
61
|
+
id="path4603" /></g></svg>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
12
|
+
version="1.1"
|
13
|
+
id="Layer_1"
|
14
|
+
x="0px"
|
15
|
+
y="0px"
|
16
|
+
viewBox="0 0 146 166"
|
17
|
+
style="enable-background:new 0 0 146 166;"
|
18
|
+
xml:space="preserve"
|
19
|
+
sodipodi:docname="i_high.svg"
|
20
|
+
inkscape:version="0.92.1 r"><metadata
|
21
|
+
id="metadata6016"><rdf:RDF><cc:Work
|
22
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
23
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
24
|
+
id="defs6014" /><sodipodi:namedview
|
25
|
+
pagecolor="#ffffff"
|
26
|
+
bordercolor="#666666"
|
27
|
+
borderopacity="1"
|
28
|
+
objecttolerance="10"
|
29
|
+
gridtolerance="10"
|
30
|
+
guidetolerance="10"
|
31
|
+
inkscape:pageopacity="0"
|
32
|
+
inkscape:pageshadow="2"
|
33
|
+
inkscape:window-width="1920"
|
34
|
+
inkscape:window-height="1055"
|
35
|
+
id="namedview6012"
|
36
|
+
showgrid="false"
|
37
|
+
inkscape:zoom="1.4216867"
|
38
|
+
inkscape:cx="73"
|
39
|
+
inkscape:cy="83"
|
40
|
+
inkscape:window-x="0"
|
41
|
+
inkscape:window-y="1050"
|
42
|
+
inkscape:window-maximized="1"
|
43
|
+
inkscape:current-layer="Layer_1" /><style
|
44
|
+
type="text/css"
|
45
|
+
id="style5999">
|
46
|
+
.st0{fill:#808080;}
|
47
|
+
.st1{fill:#F39800;}
|
48
|
+
.st2{fill:#CCCCCC;}
|
49
|
+
</style><path
|
50
|
+
class="st1"
|
51
|
+
d="M114.6,143.3H31c-7.2,0-13-4.8-13-10.6l0,0c0-5.9,5.9-10.6,13-10.6h83.6c7.2,0,13,4.8,13,10.6l0,0 C127.7,138.5,121.8,143.3,114.6,143.3z"
|
52
|
+
id="path6003" /><path
|
53
|
+
class="st1"
|
54
|
+
d="M114.6,110.2H31c-7.2,0-13-4.8-13-10.6l0,0C18,93.7,23.9,89,31,89h83.6c7.2,0,13,4.8,13,10.6l0,0 C127.7,105.4,121.8,110.2,114.6,110.2z"
|
55
|
+
id="path6005" /><path
|
56
|
+
class="st1"
|
57
|
+
d="M115,77.1H31.4c-7.2,0-13-4.8-13-10.6l0,0c0-5.9,5.9-10.6,13-10.6H115c7.2,0,13,4.8,13,10.6l0,0 C128,72.3,122.1,77.1,115,77.1z"
|
58
|
+
id="path6007" /><path
|
59
|
+
class="st2"
|
60
|
+
d="M99.6,40.2H46c-4.6,0-8.4-3.1-8.4-6.8l0,0c0-3.8,3.8-6.9,8.4-6.9h53.7c4.6,0,8.4,3.1,8.4,6.8l0,0 C108.1,37.1,104.3,40.2,99.6,40.2z"
|
61
|
+
id="path6009" /></svg>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
12
|
+
version="1.1"
|
13
|
+
id="Layer_1"
|
14
|
+
x="0px"
|
15
|
+
y="0px"
|
16
|
+
viewBox="0 0 146 166"
|
17
|
+
style="enable-background:new 0 0 146 166;"
|
18
|
+
xml:space="preserve"
|
19
|
+
sodipodi:docname="i_low.svg"
|
20
|
+
inkscape:version="0.92.1 r"><metadata
|
21
|
+
id="metadata6693"><rdf:RDF><cc:Work
|
22
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
23
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
24
|
+
id="defs6691" /><sodipodi:namedview
|
25
|
+
pagecolor="#ffffff"
|
26
|
+
bordercolor="#666666"
|
27
|
+
borderopacity="1"
|
28
|
+
objecttolerance="10"
|
29
|
+
gridtolerance="10"
|
30
|
+
guidetolerance="10"
|
31
|
+
inkscape:pageopacity="0"
|
32
|
+
inkscape:pageshadow="2"
|
33
|
+
inkscape:window-width="1920"
|
34
|
+
inkscape:window-height="1055"
|
35
|
+
id="namedview6689"
|
36
|
+
showgrid="false"
|
37
|
+
inkscape:zoom="1.4216867"
|
38
|
+
inkscape:cx="73"
|
39
|
+
inkscape:cy="83"
|
40
|
+
inkscape:window-x="0"
|
41
|
+
inkscape:window-y="1050"
|
42
|
+
inkscape:window-maximized="1"
|
43
|
+
inkscape:current-layer="Layer_1" /><style
|
44
|
+
type="text/css"
|
45
|
+
id="style6674">
|
46
|
+
.st0{fill:#808080;}
|
47
|
+
.st1{fill:#94D400;}
|
48
|
+
.st2{fill:#CCCCCC;}
|
49
|
+
</style><g
|
50
|
+
id="g6678" /><path
|
51
|
+
class="st1"
|
52
|
+
d="M114.6,143.3H31c-7.2,0-13-4.8-13-10.6l0,0c0-5.9,5.9-10.6,13-10.6h83.6c7.2,0,13,4.8,13,10.6l0,0 C127.7,138.5,121.8,143.3,114.6,143.3z"
|
53
|
+
id="path6680" /><path
|
54
|
+
class="st2"
|
55
|
+
d="M99.6,40.2H46c-4.6,0-8.4-3.1-8.4-6.8l0,0c0-3.8,3.8-6.9,8.4-6.9h53.7c4.6,0,8.4,3.1,8.4,6.8l0,0 C108.1,37.1,104.3,40.2,99.6,40.2z"
|
56
|
+
id="path6682" /><path
|
57
|
+
class="st2"
|
58
|
+
d="M99.6,73.3H46c-4.6,0-8.4-3.1-8.4-6.8l0,0c0-3.8,3.8-6.9,8.4-6.9h53.7c4.6,0,8.4,3.1,8.4,6.8l0,0 C108.1,70.2,104.3,73.3,99.6,73.3z"
|
59
|
+
id="path6684" /><path
|
60
|
+
class="st2"
|
61
|
+
d="M99.6,106.4H46c-4.6,0-8.4-3.1-8.4-6.8l0,0c0-3.8,3.8-6.9,8.4-6.9h53.7c4.6,0,8.4,3.1,8.4,6.8l0,0 C108.1,103.3,104.3,106.4,99.6,106.4z"
|
62
|
+
id="path6686" /></svg>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
12
|
+
version="1.1"
|
13
|
+
id="Layer_1"
|
14
|
+
x="0px"
|
15
|
+
y="0px"
|
16
|
+
viewBox="0 0 146 166"
|
17
|
+
style="enable-background:new 0 0 146 166;"
|
18
|
+
xml:space="preserve"
|
19
|
+
sodipodi:docname="i_med.svg"
|
20
|
+
inkscape:version="0.92.1 r"><metadata
|
21
|
+
id="metadata7574"><rdf:RDF><cc:Work
|
22
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
23
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
24
|
+
id="defs7572" /><sodipodi:namedview
|
25
|
+
pagecolor="#ffffff"
|
26
|
+
bordercolor="#666666"
|
27
|
+
borderopacity="1"
|
28
|
+
objecttolerance="10"
|
29
|
+
gridtolerance="10"
|
30
|
+
guidetolerance="10"
|
31
|
+
inkscape:pageopacity="0"
|
32
|
+
inkscape:pageshadow="2"
|
33
|
+
inkscape:window-width="834"
|
34
|
+
inkscape:window-height="480"
|
35
|
+
id="namedview7570"
|
36
|
+
showgrid="false"
|
37
|
+
inkscape:zoom="1.4216867"
|
38
|
+
inkscape:cx="73"
|
39
|
+
inkscape:cy="83"
|
40
|
+
inkscape:window-x="0"
|
41
|
+
inkscape:window-y="1050"
|
42
|
+
inkscape:window-maximized="0"
|
43
|
+
inkscape:current-layer="Layer_1" /><style
|
44
|
+
type="text/css"
|
45
|
+
id="style7555">
|
46
|
+
.st0{fill:#808080;}
|
47
|
+
.st1{fill:#DEC800;}
|
48
|
+
.st2{fill:#CCCCCC;}
|
49
|
+
</style><g
|
50
|
+
id="g7559" /><path
|
51
|
+
class="st1"
|
52
|
+
d="M114.6,143.3H31c-7.2,0-13-4.8-13-10.6l0,0c0-5.9,5.9-10.6,13-10.6h83.6c7.2,0,13,4.8,13,10.6l0,0 C127.7,138.5,121.8,143.3,114.6,143.3z"
|
53
|
+
id="path7561" /><path
|
54
|
+
class="st1"
|
55
|
+
d="M114.6,110.2H31c-7.2,0-13-4.8-13-10.6l0,0C18,93.7,23.9,89,31,89h83.6c7.2,0,13,4.8,13,10.6l0,0 C127.7,105.4,121.8,110.2,114.6,110.2z"
|
56
|
+
id="path7563" /><path
|
57
|
+
class="st2"
|
58
|
+
d="M99.6,40.2H46c-4.6,0-8.4-3.1-8.4-6.8l0,0c0-3.8,3.8-6.9,8.4-6.9h53.7c4.6,0,8.4,3.1,8.4,6.8l0,0 C108.1,37.1,104.3,40.2,99.6,40.2z"
|
59
|
+
id="path7565" /><path
|
60
|
+
class="st2"
|
61
|
+
d="M99.6,73.3H46c-4.6,0-8.4-3.1-8.4-6.8l0,0c0-3.8,3.8-6.9,8.4-6.9h53.7c4.6,0,8.4,3.1,8.4,6.8l0,0 C108.1,70.2,104.3,73.3,99.6,73.3z"
|
62
|
+
id="path7567" /></svg>
|