commit c2dc4346202ffdced2295dbc56e12f6f4972fb32
parent 603902851ba8b8f74d02c1b76250b6d440193eda
Author: mauricefisher64 <92736594+mauricefisher64@users.noreply.github.com>
Date: Wed, 5 Apr 2023 11:42:57 -0400
(MINOR) SVG support (#226)
Diffstat:
10 files changed, 823 insertions(+), 6 deletions(-)
diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml
@@ -61,6 +61,7 @@ ciborium = "0.2.0"
conv = "0.3.3"
coset = "0.3.1"
extfmt = "0.1.1"
+fast-xml = "0.23.1"
hex = "0.4.3"
img-parts = "0.3.0"
log = "0.4.8"
@@ -68,7 +69,6 @@ lazy_static = "1.4.0"
multibase = "0.9.0"
multihash = "0.11.4"
png_pong = "0.8.2"
-quick-xml = "0.20.0"
range-set = "0.0.9"
ring = "0.16.20"
riff = "1.0.1"
diff --git a/sdk/src/asset_handlers/mod.rs b/sdk/src/asset_handlers/mod.rs
@@ -16,4 +16,5 @@ pub mod c2pa_io;
pub mod jpeg_io;
pub mod png_io;
pub mod riff_io;
+pub mod svg_io;
pub mod tiff_io;
diff --git a/sdk/src/asset_handlers/svg_io.rs b/sdk/src/asset_handlers/svg_io.rs
@@ -0,0 +1,763 @@
+// Copyright 2023 Adobe. All rights reserved.
+// This file is licensed to you under the Apache License,
+// Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+// or the MIT license (http://opensource.org/licenses/MIT),
+// at your option.
+
+// Unless required by applicable law or agreed to in writing,
+// this software is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or
+// implied. See the LICENSE-MIT and LICENSE-APACHE files for the
+// specific language governing permissions and limitations under
+// each license.
+
+use std::{
+ fs::{File, OpenOptions},
+ io::{BufReader, Cursor, Seek, SeekFrom, Write},
+ path::Path,
+};
+
+use conv::ValueFrom;
+use fast_xml::{
+ events::{BytesText, Event},
+ Reader, Writer,
+};
+use tempfile::Builder;
+
+use crate::{
+ asset_io::{
+ AssetIO,
+ AssetPatch,
+ CAIRead,
+ CAIReadWrite,
+ CAIReader,
+ CAIWriter, //RemoteRefEmbedType,
+ HashBlockObjectType,
+ //HashBlockObjectType,
+ HashObjectPositions,
+ RemoteRefEmbed,
+ },
+ error::{Error, Result},
+};
+
+static SUPPORTED_TYPES: [&str; 7] = [
+ "svg",
+ "application/svg+xml",
+ "xhtml",
+ "xml",
+ "application/xhtml+xml",
+ "application/xml",
+ "text/xml",
+];
+
+const SVG: &str = "svg";
+const METADATA: &str = "metadata";
+const MANIFEST: &str = "c2pa:manifest";
+const MANIFEST_NS: &str = "xmlns:c2pa";
+const MANIFEST_NS_VAL: &str = "http://c2pa.org/manifest";
+
+pub struct SvgIO {}
+
+impl CAIReader for SvgIO {
+ fn read_cai(&self, reader: &mut dyn CAIRead) -> Result<Vec<u8>> {
+ let (decoded_manifest_opt, _detected_tag_location, _insertion_point) =
+ detect_manifest_location(reader)?;
+
+ match decoded_manifest_opt {
+ Some(decoded_manifest) => {
+ if !decoded_manifest.is_empty() {
+ Ok(decoded_manifest)
+ } else {
+ Err(Error::JumbfNotFound)
+ }
+ }
+ None => Err(Error::JumbfNotFound),
+ }
+ }
+
+ // Get XMP block
+ fn read_xmp(&self, _asset_reader: &mut dyn CAIRead) -> Option<String> {
+ None
+ }
+}
+
+impl AssetIO for SvgIO {
+ fn new(_asset_type: &str) -> Self {
+ SvgIO {}
+ }
+
+ fn get_handler(&self, asset_type: &str) -> Box<dyn AssetIO> {
+ Box::new(SvgIO::new(asset_type))
+ }
+
+ fn get_reader(&self) -> &dyn CAIReader {
+ self
+ }
+
+ fn asset_patch_ref(&self) -> Option<&dyn AssetPatch> {
+ Some(self)
+ }
+
+ fn get_writer(&self, asset_type: &str) -> Option<Box<dyn CAIWriter>> {
+ Some(Box::new(SvgIO::new(asset_type)))
+ }
+
+ fn read_cai_store(&self, asset_path: &Path) -> Result<Vec<u8>> {
+ let mut f = File::open(asset_path)?;
+ self.read_cai(&mut f)
+ }
+
+ fn save_cai_store(&self, asset_path: &std::path::Path, store_bytes: &[u8]) -> Result<()> {
+ let mut input_stream = std::fs::OpenOptions::new()
+ .read(true)
+ .open(asset_path)
+ .map_err(Error::IoError)?;
+
+ let mut temp_file = Builder::new()
+ .prefix("c2pa_temp")
+ .rand_bytes(5)
+ .tempfile()?;
+
+ self.write_cai(&mut input_stream, &mut temp_file, store_bytes)?;
+
+ // copy temp file to asset
+ std::fs::rename(temp_file.path(), asset_path)
+ // if rename fails, try to copy in case we are on different volumes
+ .or_else(|_| std::fs::copy(temp_file.path(), asset_path).and(Ok(())))
+ .map_err(Error::IoError)
+ }
+
+ fn get_object_locations(
+ &self,
+ asset_path: &std::path::Path,
+ ) -> Result<Vec<HashObjectPositions>> {
+ let mut input_stream =
+ std::fs::File::open(asset_path).map_err(|_err| Error::EmbeddingError)?;
+
+ self.get_object_locations_from_stream(&mut input_stream)
+ }
+
+ fn remove_cai_store(&self, asset_path: &Path) -> Result<()> {
+ let mut input_file = File::open(asset_path)?;
+
+ let mut temp_file = Builder::new()
+ .prefix("c2pa_temp")
+ .rand_bytes(5)
+ .tempfile()?;
+
+ self.remove_cai_store_from_stream(&mut input_file, &mut temp_file)?;
+
+ // copy temp file to asset
+ std::fs::rename(temp_file.path(), asset_path)
+ // if rename fails, try to copy in case we are on different volumes
+ .or_else(|_| std::fs::copy(temp_file.path(), asset_path).and(Ok(())))
+ .map_err(Error::IoError)
+ }
+
+ fn remote_ref_writer_ref(&self) -> Option<&dyn RemoteRefEmbed> {
+ None
+ }
+
+ fn supported_types(&self) -> &[&str] {
+ &SUPPORTED_TYPES
+ }
+}
+
+// create manifest entry
+fn create_manifest_tag(data: &[u8], with_meta: bool) -> Result<Vec<u8>> {
+ let mut output: Vec<u8> = Vec::with_capacity(data.len() + 256);
+ let mut writer = Writer::new(Cursor::new(output));
+
+ let encoded = base64::encode(data);
+
+ if with_meta {
+ writer
+ .create_element(METADATA)
+ .write_inner_content(|writer| {
+ writer
+ .create_element(MANIFEST)
+ .with_attribute((MANIFEST_NS, MANIFEST_NS_VAL))
+ .write_text_content(BytesText::from_plain_str(&encoded))?;
+ Ok(())
+ })
+ .map_err(|_e| Error::XmlWriteError)?;
+ } else {
+ writer
+ .create_element(MANIFEST)
+ .with_attribute((MANIFEST_NS, MANIFEST_NS_VAL))
+ .write_text_content(BytesText::from_plain_str(&encoded))
+ .map_err(|_e| Error::XmlWriteError)?;
+ }
+
+ output = writer.into_inner().into_inner();
+
+ Ok(output)
+}
+
+enum DetectedTagsDepth {
+ Metadata,
+ Manifest,
+ Empty,
+}
+
+// returns tuple of found manifest, where in the XML hierarchy the manifest needs to go, and the manifest insertion point
+fn detect_manifest_location(
+ input_stream: &mut dyn CAIRead,
+) -> Result<(Option<Vec<u8>>, DetectedTagsDepth, usize)> {
+ input_stream.rewind()?;
+
+ let mut buf = Vec::new();
+
+ let buf_reader = BufReader::new(input_stream);
+
+ let mut xml_reader = Reader::from_reader(buf_reader);
+
+ let mut xml_path: Vec<String> = Vec::new();
+
+ let mut detected_level = DetectedTagsDepth::Empty;
+ let mut insertion_point = 0;
+
+ let mut output: Option<Vec<u8>> = None;
+
+ loop {
+ match xml_reader.read_event(&mut buf) {
+ Ok(Event::Start(ref e)) => {
+ let name = String::from_utf8_lossy(e.name()).into_owned();
+ xml_path.push(name);
+
+ if xml_path.len() == 2 && xml_path[0] == SVG && xml_path[1] == METADATA {
+ detected_level = DetectedTagsDepth::Metadata;
+ insertion_point = xml_reader.buffer_position();
+ }
+
+ if xml_path.len() == 3
+ && xml_path[0] == SVG
+ && xml_path[1] == METADATA
+ && xml_path[2] == MANIFEST
+ {
+ detected_level = DetectedTagsDepth::Manifest;
+ insertion_point = xml_reader.buffer_position();
+
+ let mut temp_buf = Vec::new();
+ let s = xml_reader
+ .read_text(e.name(), &mut temp_buf)
+ .map_err(|_e| {
+ Error::InvalidAsset("XML manifest tag invalid content".to_string())
+ })?;
+
+ output = Some(base64::decode(s.into_bytes()).map_err(|_e| {
+ Error::InvalidAsset("XML bad base64 encoding".to_string())
+ })?);
+ }
+
+ if xml_path.len() == 1 && xml_path[0] == SVG {
+ detected_level = DetectedTagsDepth::Empty;
+ insertion_point = xml_reader.buffer_position();
+ }
+ }
+ Ok(Event::End(_)) => {
+ let _p = xml_path.pop();
+ }
+ Ok(Event::Eof) => break,
+ Err(_) => return Err(Error::InvalidAsset("XML invalid".to_string())),
+ _ => (),
+ }
+ }
+
+ Ok((output, detected_level, insertion_point))
+}
+
+fn add_required_segs_to_stream(
+ input_stream: &mut dyn CAIRead,
+ output_stream: &mut dyn CAIReadWrite,
+) -> Result<()> {
+ let (encoded_manifest_opt, _detected_tag_location, _insertion_point) =
+ detect_manifest_location(input_stream)?;
+
+ let need_manifest = if let Some(encoded_manifest) = encoded_manifest_opt {
+ encoded_manifest.is_empty()
+ } else {
+ true
+ };
+
+ if need_manifest {
+ // add some data
+ let data: &str = "placeholder manifest";
+
+ let svg = SvgIO::new("svg");
+ let svg_writer = svg.get_writer("svg").ok_or(Error::UnsupportedType)?;
+
+ svg_writer.write_cai(input_stream, output_stream, data.as_bytes())?;
+ } else {
+ // just clone
+ input_stream.rewind()?;
+ output_stream.rewind()?;
+ std::io::copy(input_stream, output_stream)?;
+ }
+
+ Ok(())
+}
+
+impl CAIWriter for SvgIO {
+ fn write_cai(
+ &self,
+ input_stream: &mut dyn CAIRead,
+ output_stream: &mut dyn CAIReadWrite,
+ store_bytes: &[u8],
+ ) -> Result<()> {
+ input_stream.rewind()?;
+ let (_encoded_manifest, detected_tag_location, _insertion_point) =
+ detect_manifest_location(input_stream)?;
+
+ input_stream.rewind()?;
+ let buf_reader = BufReader::new(input_stream);
+ let mut reader = Reader::from_reader(buf_reader);
+
+ output_stream.rewind()?;
+ let mut writer = Writer::new(output_stream);
+
+ let mut buf = Vec::new();
+ let mut xml_path: Vec<String> = Vec::new();
+
+ match detected_tag_location {
+ DetectedTagsDepth::Metadata => {
+ // add manifest case
+ let manifest_data = create_manifest_tag(store_bytes, false)?;
+
+ loop {
+ match reader.read_event(&mut buf) {
+ Ok(Event::Start(e)) => {
+ let name = String::from_utf8_lossy(e.name()).into_owned();
+ xml_path.push(name);
+
+ // writes the event to the writer
+ writer
+ .write_event(Event::Start(e))
+ .map_err(|_e| Error::XmlWriteError)?;
+
+ // add manifest data
+ if xml_path.len() == 2 && xml_path[0] == SVG && xml_path[1] == METADATA
+ {
+ writer
+ .write(&manifest_data)
+ .map_err(|_e| Error::XmlWriteError)?;
+ }
+ }
+ Ok(Event::Eof) => break,
+ Ok(Event::End(e)) => {
+ let _p = xml_path.pop();
+ writer
+ .write_event(Event::End(e))
+ .map_err(|_e| Error::XmlWriteError)?;
+ }
+ Ok(e) => writer.write_event(&e).map_err(|_e| Error::XmlWriteError)?,
+ Err(_e) => return Err(Error::InvalidAsset("XML invalid".to_string())),
+ }
+ buf.clear();
+ }
+ }
+ DetectedTagsDepth::Manifest => {
+ // replace manifest case
+ let encoded = base64::encode(store_bytes);
+
+ loop {
+ match reader.read_event(&mut buf) {
+ Ok(Event::Start(e)) => {
+ let name = String::from_utf8_lossy(e.name()).into_owned();
+ xml_path.push(name);
+
+ // writes the event to the writer
+ writer
+ .write_event(Event::Start(e))
+ .map_err(|_e| Error::XmlWriteError)?;
+ }
+ Ok(Event::Text(e)) => {
+ // add manifest data
+ if xml_path.len() == 3
+ && xml_path[0] == SVG
+ && xml_path[1] == METADATA
+ && xml_path[2] == MANIFEST
+ {
+ writer
+ .write(encoded.as_bytes())
+ .map_err(|_e| Error::XmlWriteError)?;
+ } else {
+ writer
+ .write_event(Event::Text(e))
+ .map_err(|_e| Error::XmlWriteError)?; // pass Event through
+ }
+ }
+ Ok(Event::Eof) => break,
+ Ok(Event::End(e)) => {
+ let _p = xml_path.pop();
+ writer
+ .write_event(Event::End(e))
+ .map_err(|_e| Error::XmlWriteError)?;
+ }
+ Ok(e) => writer.write_event(&e).map_err(|_e| Error::XmlWriteError)?,
+ Err(_e) => return Err(Error::InvalidAsset("XML invalid".to_string())),
+ }
+ buf.clear();
+ }
+ }
+ DetectedTagsDepth::Empty => {
+ //add metadata & manifest case
+ let manifest_data = create_manifest_tag(store_bytes, true)?;
+
+ loop {
+ match reader.read_event(&mut buf) {
+ Ok(Event::Start(e)) => {
+ let name = String::from_utf8_lossy(e.name()).into_owned();
+ xml_path.push(name);
+
+ // writes the event to the writer
+ writer
+ .write_event(Event::Start(e))
+ .map_err(|_e| Error::XmlWriteError)?;
+
+ // add manifest data
+ if xml_path.len() == 1 && xml_path[0] == SVG {
+ writer
+ .write(&manifest_data)
+ .map_err(|_e| Error::XmlWriteError)?;
+ }
+ }
+ Ok(Event::Eof) => break,
+ Ok(Event::End(e)) => {
+ let _p = xml_path.pop();
+ writer
+ .write_event(Event::End(e))
+ .map_err(|_e| Error::XmlWriteError)?;
+ }
+ Ok(e) => writer.write_event(&e).map_err(|_e| Error::XmlWriteError)?,
+ Err(_e) => return Err(Error::InvalidAsset("XML invalid".to_string())),
+ }
+ buf.clear();
+ }
+ }
+ }
+
+ Ok(())
+ }
+
+ fn get_object_locations_from_stream(
+ &self,
+ input_stream: &mut dyn CAIRead,
+ ) -> Result<Vec<HashObjectPositions>> {
+ let output: Vec<u8> = Vec::new();
+ let mut output_stream = Cursor::new(output);
+
+ add_required_segs_to_stream(input_stream, &mut output_stream)?;
+
+ let mut positions: Vec<HashObjectPositions> = Vec::new();
+
+ let (decoded_manifest_opt, _detected_tag_location, manifest_pos) =
+ detect_manifest_location(&mut output_stream)?;
+
+ let decoded_manifest = decoded_manifest_opt.ok_or(Error::JumbfNotFound)?;
+ let encoded_manifest_len = base64::encode(decoded_manifest).len();
+
+ positions.push(HashObjectPositions {
+ offset: manifest_pos,
+ length: encoded_manifest_len,
+ htype: HashBlockObjectType::Cai,
+ });
+
+ // add hash of chunks before cai
+ positions.push(HashObjectPositions {
+ offset: 0,
+ length: manifest_pos,
+ htype: HashBlockObjectType::Other,
+ });
+
+ // add position from cai to end
+ let end = manifest_pos + encoded_manifest_len;
+ let length = usize::value_from(input_stream.seek(SeekFrom::End(0))?)
+ .map_err(|_err| Error::InvalidAsset("value out of range".to_string()))?
+ - end;
+ positions.push(HashObjectPositions {
+ offset: end,
+ length,
+ htype: HashBlockObjectType::Other,
+ });
+
+ Ok(positions)
+ }
+
+ fn remove_cai_store_from_stream(
+ &self,
+ input_stream: &mut dyn CAIRead,
+ output_stream: &mut dyn CAIReadWrite,
+ ) -> Result<()> {
+ let buf_reader = BufReader::new(input_stream);
+ let mut reader = Reader::from_reader(buf_reader);
+
+ output_stream.rewind()?;
+ let mut writer = Writer::new(output_stream);
+
+ let mut buf = Vec::new();
+ let mut xml_path: Vec<String> = Vec::new();
+
+ loop {
+ match reader.read_event(&mut buf) {
+ Ok(Event::Start(e)) => {
+ let name = String::from_utf8_lossy(e.name()).into_owned();
+ xml_path.push(name);
+
+ if xml_path.len() == 3
+ && xml_path[0] == SVG
+ && xml_path[1] == METADATA
+ && xml_path[2] == MANIFEST
+ {
+ // skip the manifest
+ continue;
+ } else {
+ writer
+ .write_event(Event::Start(e))
+ .map_err(|_e| Error::XmlWriteError)?; // pass Event through
+ }
+ }
+ Ok(Event::Text(e)) => {
+ if xml_path.len() == 3
+ && xml_path[0] == SVG
+ && xml_path[1] == METADATA
+ && xml_path[2] == MANIFEST
+ {
+ // skip the manifest
+ continue;
+ } else {
+ writer
+ .write_event(Event::Text(e))
+ .map_err(|_e| Error::XmlWriteError)?; // pass Event through
+ }
+ }
+ Ok(Event::Eof) => break,
+ Ok(Event::End(e)) => {
+ if xml_path.len() == 3
+ && xml_path[0] == SVG
+ && xml_path[1] == METADATA
+ && xml_path[2] == MANIFEST
+ {
+ // skip the manifest
+ let _p = xml_path.pop();
+ continue;
+ } else {
+ let _p = xml_path.pop();
+ writer
+ .write_event(Event::End(e))
+ .map_err(|_e| Error::XmlWriteError)?; // pass Event through
+ }
+ }
+ Ok(e) => writer.write_event(&e).map_err(|_e| Error::XmlWriteError)?,
+ Err(_e) => return Err(Error::InvalidAsset("XML invalid".to_string())),
+ }
+ buf.clear();
+ }
+
+ Ok(())
+ }
+}
+
+impl AssetPatch for SvgIO {
+ fn patch_cai_store(&self, asset_path: &std::path::Path, store_bytes: &[u8]) -> Result<()> {
+ let mut input_file = OpenOptions::new()
+ .write(true)
+ .read(true)
+ .create(false)
+ .open(asset_path)?;
+
+ let (asset_manifest_opt, _detected_tag_location, insertion_point) =
+ detect_manifest_location(&mut input_file)?;
+ let encoded_store_bytes = base64::encode(store_bytes);
+
+ if let Some(manifest_bytes) = asset_manifest_opt {
+ // base 64 encode
+ let encoded_manifest_bytes = base64::encode(manifest_bytes);
+ // can patch if encoded lengths are ==
+ if encoded_store_bytes.len() == encoded_manifest_bytes.len() {
+ input_file.seek(SeekFrom::Start(insertion_point as u64))?;
+ input_file.write_all(encoded_store_bytes.as_bytes())?;
+ Ok(())
+ } else {
+ Err(Error::InvalidAsset(
+ "patch_cai_store store size mismatch.".to_string(),
+ ))
+ }
+ } else {
+ Err(Error::InvalidAsset(
+ "patch_cai_store store size mismatch.".to_string(),
+ ))
+ }
+ }
+}
+
+#[cfg(test)]
+pub mod tests {
+ #![allow(clippy::expect_used)]
+ #![allow(clippy::panic)]
+ #![allow(clippy::unwrap_used)]
+
+ use std::io::Read;
+
+ use tempfile::tempdir;
+
+ use super::*;
+ use crate::utils::{
+ hash_utils::vec_compare,
+ test::{fixture_path, temp_dir_path},
+ };
+
+ #[test]
+ fn test_write_svg_no_meta() {
+ let more_data = "some more test data".as_bytes();
+ let source = fixture_path("sample1.svg");
+
+ let mut success = false;
+ if let Ok(temp_dir) = tempdir() {
+ let output = temp_dir_path(&temp_dir, "sample1.svg");
+
+ if let Ok(_size) = std::fs::copy(source, &output) {
+ let svg_io = SvgIO::new("svg");
+
+ if let Ok(()) = svg_io.save_cai_store(&output, more_data) {
+ if let Ok(read_test_data) = svg_io.read_cai_store(&output) {
+ assert!(vec_compare(more_data, &read_test_data));
+ success = true;
+ }
+ }
+ }
+ }
+ assert!(success)
+ }
+
+ #[test]
+ fn test_write_svg_with_meta() {
+ let more_data = "some more test data".as_bytes();
+ let source = fixture_path("sample2.svg");
+
+ let mut success = false;
+ if let Ok(temp_dir) = tempdir() {
+ let output = temp_dir_path(&temp_dir, "sample2.svg");
+
+ if let Ok(_size) = std::fs::copy(source, &output) {
+ let svg_io = SvgIO::new("svg");
+
+ if let Ok(()) = svg_io.save_cai_store(&output, more_data) {
+ if let Ok(read_test_data) = svg_io.read_cai_store(&output) {
+ assert!(vec_compare(more_data, &read_test_data));
+ success = true;
+ }
+ }
+ }
+ }
+ assert!(success)
+ }
+
+ #[test]
+ fn test_write_svg_with_manifest() {
+ let more_data = "some more test data into existing manifest".as_bytes();
+ let source = fixture_path("sample3.svg");
+
+ let mut success = false;
+ if let Ok(temp_dir) = tempdir() {
+ let output = temp_dir_path(&temp_dir, "sample3.svg");
+
+ if let Ok(_size) = std::fs::copy(source, &output) {
+ let svg_io = SvgIO::new("svg");
+
+ if let Ok(()) = svg_io.save_cai_store(&output, more_data) {
+ if let Ok(read_test_data) = svg_io.read_cai_store(&output) {
+ assert!(vec_compare(more_data, &read_test_data));
+ success = true;
+ }
+ }
+ }
+ }
+ assert!(success)
+ }
+
+ #[test]
+ fn test_patch_write_svg() {
+ let test_data = "some test data".as_bytes();
+ let source = fixture_path("sample1.svg");
+
+ let mut success = false;
+ if let Ok(temp_dir) = tempdir() {
+ let output = temp_dir_path(&temp_dir, "sample1.svg");
+
+ if let Ok(_size) = std::fs::copy(source, &output) {
+ let svg_io = SvgIO::new("svg");
+
+ if let Ok(()) = svg_io.save_cai_store(&output, test_data) {
+ if let Ok(source_data) = svg_io.read_cai_store(&output) {
+ // create replacement data of same size
+ let mut new_data = vec![0u8; source_data.len()];
+ new_data[..test_data.len()].copy_from_slice(test_data);
+ svg_io.patch_cai_store(&output, &new_data).unwrap();
+
+ let replaced = svg_io.read_cai_store(&output).unwrap();
+
+ assert_eq!(new_data, replaced);
+
+ success = true;
+ }
+ }
+ }
+ }
+ assert!(success)
+ }
+
+ #[test]
+ fn test_remove_c2pa() {
+ let source = fixture_path("sample4.svg");
+
+ let temp_dir = tempdir().unwrap();
+ let output = temp_dir_path(&temp_dir, "sample4.svg");
+
+ std::fs::copy(source, &output).unwrap();
+ let svg_io = SvgIO::new("svg");
+
+ svg_io.remove_cai_store(&output).unwrap();
+
+ // read back in asset, JumbfNotFound is expected since it was removed
+ match svg_io.read_cai_store(&output) {
+ Err(Error::JumbfNotFound) => (),
+ _ => unreachable!(),
+ }
+ }
+
+ #[test]
+ fn test_get_object_location() {
+ let more_data = "some more test data into existing manifest".as_bytes();
+ let source = fixture_path("sample1.svg");
+
+ let mut success = false;
+ if let Ok(temp_dir) = tempdir() {
+ let output = temp_dir_path(&temp_dir, "sample1.svg");
+
+ if let Ok(_size) = std::fs::copy(source, &output) {
+ let svg_io = SvgIO::new("svg");
+
+ if let Ok(()) = svg_io.save_cai_store(&output, more_data) {
+ if let Ok(locations) = svg_io.get_object_locations(&output) {
+ for op in locations {
+ if op.htype == HashBlockObjectType::Cai {
+ let mut of = File::open(&output).unwrap();
+
+ let mut manifests_buf: Vec<u8> = vec![0u8; op.length];
+ of.seek(SeekFrom::Start(op.offset as u64)).unwrap();
+ of.read_exact(manifests_buf.as_mut_slice()).unwrap();
+
+ let decoded_data = base64::decode(&manifests_buf).unwrap();
+ if vec_compare(more_data, &decoded_data) {
+ success = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ assert!(success)
+ }
+}
diff --git a/sdk/src/error.rs b/sdk/src/error.rs
@@ -235,6 +235,9 @@ pub enum Error {
#[error("could not parse ECDSA signature")]
InvalidEcdsaSignature,
+ #[error("could not generate XML")]
+ XmlWriteError,
+
// --- third-party errors ---
#[error(transparent)]
IoError(#[from] std::io::Error),
diff --git a/sdk/src/jumbf_io.rs b/sdk/src/jumbf_io.rs
@@ -23,7 +23,7 @@ use lazy_static::lazy_static;
use crate::{
asset_handlers::{
bmff_io::BmffIO, c2pa_io::C2paIO, jpeg_io::JpegIO, png_io::PngIO, riff_io::RiffIO,
- tiff_io::TiffIO,
+ svg_io::SvgIO, tiff_io::TiffIO,
},
asset_io::{AssetIO, CAIRead, CAIReadWrite, CAIReader, CAIWriter, HashObjectPositions},
error::{Error, Result},
@@ -33,11 +33,12 @@ use crate::{
lazy_static! {
static ref ASSET_HANDLERS: HashMap<String, Box<dyn AssetIO>> = {
let handlers: Vec<Box<dyn AssetIO>> = vec![
- Box::new(C2paIO::new("")),
Box::new(BmffIO::new("")),
+ Box::new(C2paIO::new("")),
Box::new(JpegIO::new("")),
Box::new(PngIO::new("")),
Box::new(RiffIO::new("")),
+ Box::new(SvgIO::new("")),
Box::new(TiffIO::new("")),
];
let mut handler_map = HashMap::new();
@@ -58,11 +59,12 @@ lazy_static! {
lazy_static! {
static ref CAI_WRITERS: HashMap<String, Box<dyn CAIWriter>> = {
let handlers: Vec<Box<dyn AssetIO>> = vec![
- Box::new(C2paIO::new("")),
Box::new(BmffIO::new("")),
+ Box::new(C2paIO::new("")),
Box::new(JpegIO::new("")),
Box::new(PngIO::new("")),
Box::new(RiffIO::new("")),
+ Box::new(SvgIO::new("")),
Box::new(TiffIO::new("")),
];
let mut handler_map = HashMap::new();
@@ -304,6 +306,7 @@ pub mod tests {
Box::new(PngIO::new("")),
Box::new(RiffIO::new("")),
Box::new(TiffIO::new("")),
+ Box::new(SvgIO::new("")),
];
// build handler map
@@ -324,6 +327,7 @@ pub mod tests {
Box::new(PngIO::new("")),
Box::new(RiffIO::new("")),
Box::new(TiffIO::new("")),
+ Box::new(SvgIO::new("")),
];
// build handler map
@@ -384,5 +388,6 @@ pub mod tests {
assert!(supported.iter().any(|s| s == "tif"));
assert!(supported.iter().any(|s| s == "tiff"));
assert!(supported.iter().any(|s| s == "dng"));
+ assert!(supported.iter().any(|s| s == "svg"));
}
}
diff --git a/sdk/src/utils/xmp_inmemory_utils.rs b/sdk/src/utils/xmp_inmemory_utils.rs
@@ -13,11 +13,11 @@
use std::io::Cursor;
-use log::error;
-use quick_xml::{
+use fast_xml::{
events::{BytesEnd, BytesStart, Event},
Reader, Writer,
};
+use log::error;
use crate::{
asset_io::CAIRead, jumbf_io::get_cailoader_handler, utils::hash_utils::vec_compare, Error,
diff --git a/sdk/tests/fixtures/sample1.svg b/sdk/tests/fixtures/sample1.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg enable-background="new 0 0 2014 1674.641" version="1.1" viewBox="0 0 2014 1674.641" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <path d="m44.883 1173.3c0 169.58 92.136 317.37 229.08 396.59v-793.53c-136.94 79.216-229.08 227.37-229.08 396.94z"/>
+ <path d="m1496.5 173.21c-338.54-181.18-640.46-181.19-978.98 0-115.34 61.726-232.1 201.31-232.1 348.66v1048h125.99v-1048c0-100.78 121.24-229.18 225.54-272.38 280.15-116.04 460-116.04 740.11 0 104.3 43.203 225.54 171.6 225.54 272.38v1048h125.99v-1048c0-147.36-116.76-286.94-232.1-348.66z"/>
+ <path d="m1740 776.38v793.53c136.94-79.214 229.08-227 229.08-396.59 1e-3 -169.57-92.133-317.73-229.08-396.94z"/>
+ <path d="m541.72 709.03h-70.645c-27.201 0-49.252 22.051-49.252 49.253v829.79c0 27.201 22.05 49.252 49.252 49.252h70.645c27.201 0 49.252-22.051 49.252-49.252v-829.79c0-27.202-22.05-49.253-49.252-49.253z"/>
+ <path d="m1542 709.03h-70.646c-27.2 0-49.252 22.051-49.252 49.253v829.79c0 27.201 22.052 49.252 49.252 49.252h70.646c27.2 0 49.252-22.051 49.252-49.252v-829.79c-1e-3 -27.202-22.052-49.253-49.252-49.253z"/>
+ <path d="m595.97 1132.8c4.322-0.219 8.643-0.184 12.965 0 0.197 4.557 3.624 24.404 4.471 95.602 0 1.438 0.298 2.849 0.728 4.225 0.691 13.2-0.668 21.337 0.868 26.298 0.386 12.904 0.053 25.834 0.158 38.746h10.467c10.735-37.493 8.785-86.788 9.941-115.01 1.07-3.103 0.614-6.426 0.868-9.634 0.615-2.041 1.597-9.992 1.753-11.519 0.368 0.377 1.113 1.131 1.481 1.508 0.079 4.827 0.295 5.098 2.007 12.833 0.342 0 1.034-9e-3 1.376-9e-3 0.421-1.771 0.877-3.515 1.315-5.277l0.657-9e-3c0.202 4.611-0.719 9.38 0.684 13.859 0.491 4.374-0.508 8.889 0.85 13.149 0.114 1.683 0.175 3.357 0.263 5.049 0.552-0.92 1.122-1.85 1.692-2.77 0.052-13.129 0.408 0.674 0.894-17.479 0.307 0.552 0.92 1.657 1.227 2.209 0.316 0.018 0.938 0.044 1.245 0.061 2.638-11.892 2.56-18.294 3.647-51.86 8.152-0.21 16.314-0.263 24.466 0.044 0.018 2.314-0.018 4.681 0.78 6.89 0.677 13.255 1.433 10.704 2.016 18.926 1.554 2.913 2.279 3.212 5.295 20.714 0.394 0 1.183 0 1.578 9e-3 0.454-9.931 0.998-1.96 0.964-13.184l0.868 9e-3c0.096 3.734-0.561 7.609 0.684 11.229 0.298 3.498-0.307 7.127 0.868 10.519 0.307 3.498-0.307 7.135 0.877 10.519 0.307 3.498-0.307 7.127 0.877 10.519 0.368 3.787-0.394 7.714 0.868 11.387 0.438 4.085-0.465 8.319 0.877 12.281 0.298 3.498-0.298 7.127 0.868 10.519 0.949 15.108 1.515 17.226 2.858 21.626 0.421-0.412 1.262-1.227 1.692-1.639-0.187-3.823 0.79-9.648 3.98-14.937 0.701 1.157 1.411 2.332 2.13 3.498 0.018 0.412 0.053 1.236 0.07 1.648 0.894 1.657 1.815 3.357 3.261 4.629 0.52-4.824 0.271-3.677 1.525-8.757 0.155-0.87 1.114-8.042 1.552-15.709 1.21-3.691 0.491-7.609 0.85-11.405 1.341-3.962 0.43-8.196 0.877-12.272 0 0 6.76-64.946 7.004-68.375 1.008-2.77 0.728-5.742 0.728-8.617 1.727 0 3.471 0 5.225-9e-3 0 3.173-0.377 6.443 0.701 9.494 0.152 3.522 0.148 41.365 1.753 46.478 0.447 4.076-0.473 8.31 0.877 12.272 0.289 3.498-0.281 7.118 0.85 10.51 0.612 11.986 0.925 9.898 2.016 17.383 0.43 0.403 1.289 1.21 1.718 1.613 0.386-0.395 1.157-1.175 1.543-1.569 1.113-3.427 2.27-6.908 2.06-10.572 0.351 0.377 1.043 1.122 1.394 1.49 0.307 0.982 0.631 1.972 0.982 2.954 9e-3 0.824 0.035 1.648 0.07 2.472 0.736 0.912 1.499 1.841 2.279 2.744 1.695-6.242 1.537-5.465 2.367-9.923 0.394-0.377 1.175-1.122 1.569-1.499-0.026 1.455-0.035 2.928-0.044 4.392 0.43 0.386 1.28 1.148 1.709 1.534 2.593-15.316 1.515-32.185 4.646-59.933h0.517c0.257 2.44 0.455 5.251 2.656 12.053 0.04 1.752 2.071 29.42 6.46 44.391 0.377-0.386 1.131-1.166 1.508-1.56 2.511-20.088 0.17 17.604 5.33-78.561l0.622 9e-3c0.403 1.569 0.842 3.13 1.28 4.699 0.395-0.377 1.175-1.148 1.569-1.534 0.153-5.981 0.067-4.293 1.201-9.362 6.539-0.281 13.079-0.289 19.627-0.018 1.093 6.281 3.062 17.853 3.831 24.948 0.403-0.377 1.219-1.14 1.631-1.525 0.133-3.59 1.852-14.417 2.919-17.453 0.377 0.377 1.14 1.122 1.516 1.499-0.034 12.962 0.097 3.675 0.947 13.657 0.421 9e-3 1.253 9e-3 1.674 9e-3 0-1.762 9e-3 -3.524 0.026-5.277h1.718c0.237 4.602-0.701 9.371 0.71 13.85 0.386 3.787-0.412 7.732 0.877 11.405 0.298 3.498-0.298 7.127 0.859 10.519 0.455 8.447 1.972 19.645 2.595 21.906-0.347 7.057 9.094 35.294 9.888 54.043 0.429-0.395 1.28-1.192 1.709-1.587 0.061-1.42 0.14-2.84 0.263-4.252 0.885-2.831 0.675-5.829 0.85-8.748 1.131-3.401 0.561-7.022 0.859-10.519 1.166-3.393 0.561-7.022 0.876-10.519 1.157-3.392 0.57-7.022 0.877-10.528 0.697-2.038 1.719-16.578 1.78-17.532 0.086-0.331 0.978-5.454 1.788-8.924 2.042-3.033 3.515-6.399 5.26-9.599 0.324 0.368 0.964 1.122 1.289 1.499 2.896 10.614 5.277 40.7 5.277 40.701 1.101 16.794 2.417 23.952 2.866 28.779 0.412 0.394 1.245 1.175 1.657 1.569 0.071-0.869 8.706-77.968 8.959-86.556 0.561-1.779 1.105-3.559 1.727-5.312 0.412 0.394 1.227 1.183 1.639 1.578 9e-3 0.57 0.017 1.701 0.017 2.27 0.403 0 1.219-9e-3 1.622-9e-3 1.24-7.203 1.236-3.14 2.121-13.342 1.017-3.41 0.5-7.013 0.798-10.51 0.666-1.929 0.745-3.971 0.85-5.987 1.981-0.017 3.98-0.017 5.987-0.061 0.738 15.014 3.226 81.388 5.452 98.881 2.794-5.344 3.327-18.194 3.313-23.046 0.526 0.92 1.061 1.841 1.604 2.779 1.005 8.595 1.291 4.766 1.955 12.124 0.412-0.386 1.236-1.166 1.657-1.56 0.07-1.131 0.167-2.253 0.29-3.375 3.077-10.573 4.023-80.044 5.303-85.767 11.203-0.333 22.415-0.307 33.618-0.026 2.519 9.333-0.185 1.64 3.165 10.651 1.008-0.035 2.025-0.07 3.059-0.105 3.706 11.86 4.661 36.592 6.136 41.086 0.237 3.743-0.228 7.618 1.324 11.159 1.832-0.973 3.532-4.164 5.768-2.27 0.311 1.769 1.139 5.743 1.674 7.74 0.096 1.99 0.052 4.006 0.342 5.987 0.955 1.779 3.182 1.078 4.839 1.35 2.515 9.18 4.175 17.629 4.865 22.318 3.942-2.424 4.424-5.052 6.049-11.527 1.105-1.981 2.621-3.682 4.252-5.251-9e-3 -1.131-9e-3 -2.262 9e-3 -3.384 0.386 0.377 1.149 1.131 1.534 1.508 0.333 1.797 0.754 3.577 1.21 5.365 0.359-0.386 1.087-1.166 1.446-1.552 0.649-2.376 1.403-4.716 2.183-7.048 0.316 0.377 0.947 1.148 1.262 1.525 1.645 7.111 0.322 3.568 2.06 21.065 0.429-0.395 1.271-1.175 1.692-1.56 0.026-1.999 0.07-3.997 0.21-5.987 1.481-4.83 0.263-9.949 0.868-14.902 1.639-6.285 0.123-12.877 0.877-19.285 1.683-7.451 0.07-15.218 0.877-22.792 1.674-7.451 0.07-15.227 0.868-22.8 1.219-3.62 0.596-7.495 0.684-11.229h4.979c2.486 11.696-0.075 13.584 1.867 20.004 0.438 4.076-0.456 8.31 0.859 12.281 0.71 13.915 2.152 15.948 2.875 21.74 0.403 0.395 1.201 1.192 1.604 1.587 2.183-6.047-0.403-11.103 3.024-22.283 0.316 0 0.964-9e-3 1.289-9e-3 0.07 1.339 1.748 15.516 3.112 20.688 3.189-6.785 3.21-47.072 3.2-54.051 9.432-0.307 18.882-0.272 28.323 0.026 0.079 1.105 0.202 2.297 0.833 3.27 1.219-0.359 1.613-2.13 1.201-3.226 0.684 0 2.042 0.017 2.726 0.017 0.193 1.701 0.421 3.401 0.912 5.049 0.745 6.11-0.754 12.422 0.877 18.417 0.622 4.944-0.64 10.081 0.885 14.902 0.438 4.076-0.464 8.31 0.859 12.272 0.587 5.786-0.649 11.747 1.157 17.392 0.342 0.359 1.017 1.087 1.35 1.455 0.973-1.806 2.025-3.576 3.296-5.207 2.899 9.94 3.548 20.233 4.146 30.129 2.753-4.301 1.495-7.983 6.198-43.26 1.07-1.122 2.156-2.227 3.261-3.331 1.546-13.203 1.281-18.245 4.804-28.139 0.719 1.183 1.42 2.384 2.139 3.594 6.049 34.545 2.934 63.483 10.432 89.607-0.114 5.067 1.359 9.993 1.052 15.06-0.079 2.016 0.035 4.059 0.719 5.978 0.359 6.487 0.088 12.991 0.131 19.496-0.026 3.813 1.113 7.53 1.017 11.361h1.639c0.973-2.533 1.026-5.233 0.991-7.898-0.096-2.682 0.728-5.26 0.842-7.907 0.149-3.305-0.272-6.627 0.342-9.897 1.052-4.874 0.254-9.879 0.719-14.806 1.306-3.962 0.421-8.188 0.859-12.264 1.069-3.103 0.631-6.426 0.885-9.634 0.71-2.034 0.736-4.199 0.763-6.329 0.535-0.92 1.087-1.841 1.657-2.753 9e-3 0.693 9e-3 2.078 9e-3 2.77 0.421 0.394 1.254 1.192 1.674 1.595 1.881-6.653 1.973-16.337 2.025-17.208 1.324-3.962 0.421-8.188 0.868-12.273 1.508-4.821 0.263-9.949 0.885-14.902 1.534-5.119 0.21-10.537 0.868-15.779 1.438-4.777 0.43-9.836 0.684-14.736l0.579 9e-3c4.58 20.94-1.764 21.194 8.003 57.654 0.035 3.743 0.315 7.477 1.14 11.133 0.771 1.227 1.56 2.446 2.375 3.664 2.187-18.959 0.397-16.093 1.254-24.413 1.525-5.119 0.228-10.537 0.876-15.779 1.525-5.119 0.219-10.537 0.876-15.779 1.482-5.155 0.351-10.607 0.728-15.884 3.781-1.853 5.985-19.261 6.241-23.449 11.896-0.298 23.809-0.289 35.704 0 0.018 2.314-0.044 4.69 0.789 6.899 1.385 15.795 1.043 17.456 1.034 20.679 0.438-0.386 1.297-1.14 1.727-1.525 0.313-2.188-1e-3 -0.959 1.21-4.953h1.157c7.495 34.264 1.885 96.567 10.537 107.57 4.66-9.896 5.508-48.83 5.75-50.764 0.339-1.036 7.792-66.458 7.846-67.323h0.719c0.315 5.479-0.815 11.133 0.701 16.48 0.219 3.217-0.175 6.522 0.833 9.634 0.096 1.35 0.175 2.709 0.263 4.076 1.113 1.78 2.262 3.55 3.349 5.356 0.07 1.85 0.202 3.717 0.806 5.487 0.237 3.208-0.21 6.539 0.877 9.643 0.438 4.076-0.456 8.301 0.868 12.264 0.64 5.233-0.666 10.659 0.868 15.779 0.666 5.531-0.693 11.238 0.877 16.656 0.617 10.342-0.612 22.781 0.868 27.175 0.123 1.99 0.167 3.989 0.21 5.987 0.429 0.394 1.28 1.183 1.7 1.578 3.526-23.595 3.006-33.165 5.417-44.234l0.526 0.026c2.215 9.395 0.757 4.828 3.042 12.623 0.377-0.377 1.14-1.14 1.517-1.516 2.464-9.857 5.395-72.486 5.408-73.354l0.71 9e-3c0.044 0.447 0.131 1.341 0.167 1.779 0.605-0.018 1.814-0.07 2.411-0.088 2.367 8.449 6.032 43.591 6.075 43.725 0.517 4.348-1.026 10.134 3.296 12.982 12.367-46.276 9.589-65.188 12.904-92.683 11.51-0.228 23.028-0.228 34.547-0.018 0.316 1.131 0.649 2.253 1.008 3.375 0 1e-3 5.242 57.934 5.242 57.935 2.528 35.686-1.458 8.139 4.62 49.809 0.412 0.395 1.227 1.175 1.639 1.56 0.117-0.869 4.225-26.319 4.576-34.135 3.883 7.547 1.348 7.067 5.198 13.465 0.955-0.395 1.964-0.64 3.016-0.745 0.631 0.833 1.245 1.701 1.832 2.604 0.465 0.044 1.394 0.131 1.859 0.175 0.631-1.087 1.262-2.165 1.92-3.243 1.331-5.87 3.349-16.952 3.752-22.327l0.71 0.018c0.324 6.355-0.877 12.877 0.666 19.11 0.64 5.242-0.666 10.659 0.885 15.788 0.281 3.498-0.272 7.109 0.842 10.511 0.105 1.525 0.175 3.059 0.263 4.593h1.683c0.03-0.868 2.321-25.659 4.655-35.354 0.359 0.368 1.069 1.113 1.42 1.481 0.018 2.183 0.026 4.409 0.763 6.496 0.184 2.928-0.088 5.943 0.894 8.766 0.257 4.097-0.504 3.463 2.165 21.81 1.771-3.524 1.604-7.469 1.744-11.299 1.411-4.55 0.307-9.362 0.868-14.026 1.604-5.996 0.149-12.299 0.877-18.409 1.63-6.285 0.114-12.877 0.868-19.285 1.587-5.698 0.158-11.711 0.868-17.532 1.56-6.399 0.324-13.114 0.693-19.645 0.429-0.377 1.28-1.14 1.709-1.525-0.026 2.393-0.105 4.856 0.728 7.153 0.193 2.919-0.096 5.943 0.885 8.757 0.456 4.076-0.473 8.319 0.877 12.281 0.447 4.076-0.473 8.31 0.877 12.264 0.368 3.796-0.386 7.723 0.868 11.405 1.036 17.235 1.642 16.652 2.972 21.792 0.43 0.438 1.297 1.306 1.727 1.736 0.815-1.21 1.63-2.419 2.446-3.638 2.923-13.017 5.323-15.63 6.426-33.039 1.186-4.545 6.856-57.745 6.873-58.619 13.114-0.333 26.237-0.298 39.351 0-0.07 25.539-0.242 25.33 0.701 27.92 0.701 5.83-0.737 11.843 0.868 17.541 0.622 4.944-0.64 10.072 0.885 14.902 0.491 4.374-0.517 8.898 0.859 13.158 0.545 12.053 0.783 6.687 1.964 16.629 1.858 1.052 3.901 1.981 5.076 3.892 10.959-1.859 6.983-29.405 13.724-64.092v-42.917c-0.174-0.927-0.341-1.93-0.488-3.102-0.544-0.947-1.069-1.885-1.578-2.823-3.578-19.889-0.465-3.857-2.901-38.229-0.302-0.87-2.483-19.751-2.542-20.46-0.701-0.894-1.359-1.788-2.051-2.665-2.62 8.857-4.816 32.1-4.97 37.869-0.885-1.192-1.736-2.411-2.56-3.62v-1.63c-0.991-1.744-1.946-3.489-2.928-5.216-0.438 0.517-1.306 1.543-1.745 2.06-0.955 0-1.885-9e-3 -2.796-9e-3 -0.71-0.71-1.394-1.42-2.069-2.13-0.827-5.187-0.922-3.934-1.999-19.093-1.271-3.673-0.465-7.609-0.877-11.405-1.201-3.384-0.535-7.013-0.877-10.51-0.824-2.7-0.728-5.54-1.166-8.293-0.21-0.359-0.622-1.078-0.833-1.438-0.622-3.147-0.456-6.373-0.631-9.555-1.056-2.973-1.705-15.787-1.762-16.656-1.704-4.872-1.165-33.567-5.321-44.54l-0.377 9e-3c-0.237 0.579-0.701 1.736-0.938 2.323-0.401 3.921-11.044 109.35-11.711 112.52l-0.71 9e-3c-0.251-7.498 9e-3 -3.82-1.201-9.651h-1.236c-1.98 7.546-1.844 6.61-2.121 9.073-0.254 0.622-0.771 1.867-1.026 2.481-1.078-0.421-2.121-0.85-3.156-1.271-3.451 12.972-2.154 26.149-5.549 58.154-5.163 0.21-10.326 0.272-15.472 9e-3 -2.367-4.585 0.263-10.046-1.674-14.788-5.048-49.685-2.675-22.48-9.038-64.474-0.368 0.368-1.096 1.104-1.464 1.473-3.2 24.397-3.796 53.375-3.866 54.244-0.902 2.444-0.812 2.981-0.71 23.546-4.628 0.21-9.257 0.202-13.877 9e-3 -0.062-1.098-0.753-10.145-3.41-19.96-1.609-6.088-2.241-34.338-5.531-45.399-0.386 0.403-1.157 1.218-1.543 1.622 0 2e-3 -2.428 17.821-2.428 17.821-1.87 7.96-2.043 7.751-2.209 12.123-0.894 1.359-1.823 2.682-2.779 3.989-1.026-0.78-2.016-1.552-3.024-2.297-4.94 16.27-1.404 25.036-3.831 32.049-1.745 9e-3 -3.48 0.018-5.198 0.07-0.149-4.059 0.605-8.249-0.693-12.176-0.596-4.664 0.579-9.494-0.877-14.026-0.543-4.365 0.509-8.897-0.868-13.149-0.245-2.98-0.219-5.97-0.184-8.959h-0.798c-0.097 1.525-0.175 3.051-0.281 4.585-1.043 3.042-0.675 6.285-0.666 9.441h-0.885c-0.454-35.146-2.288-72.71-9.792-140.65-0.693-1.175-1.359-2.332-2.043-3.489-1.043 1.411-2.042 2.84-2.954 4.33-0.744 4.308-0.526 3.106-1.56 7.153-3.447 12.335-8.898 66.727-8.898 66.727-0.359 3.498 0.307 7.135-0.877 10.519-2.297 22.912 0.443 23.804-2.604 35.932-0.184 2.639-0.044 5.347-0.894 7.89-0.228 3.051-0.158 6.101-0.368 9.152-1.499 4.83-0.237 9.949-0.877 14.902-1.569 5.409-0.167 11.124-0.877 16.647-0.517 1.683-0.728 3.427-0.912 5.172-6.645 0.202-13.289 0.254-19.925-0.044 0.064-10.529-0.526-4.443-0.973-12.334l-0.701 9e-3c-0.965 7.442-1.078 2.9-0.973 12.272-1.183-9e-3 -2.349-9e-3 -3.506 0 0.078-9.359-1.521-16.3-2.042-19.811-3.15 1.808-4.963 16.633-5.119 19.899-5.987 0.254-11.974 0.228-17.953-0.035-2.68-8.301 0.155-12.807-1.885-20.022-0.649-4.944 0.631-10.072-0.877-14.902-0.28-3.629-0.088-7.276-0.35-10.905-0.735-2.102-1.517-17.095-2.06-19.715-1.139-4.529-1.144-4.594-1.289-6.811-0.833-1.219-1.674-2.428-2.533-3.62-0.026-0.394-0.088-1.192-0.114-1.587-1.131-2.095-2.358-4.129-3.813-6.005-0.894 0.955-1.762 1.911-2.63 2.875-0.491 0-1.473-9e-3 -1.964-9e-3 -0.281 0.579-0.833 1.744-1.113 2.323-0.044 2.393 0.018 4.839-0.78 7.127-0.517 8.012 0.14 16.051-0.359 24.054-1.709 4.69 0.307 9.827-1.403 14.517-0.175 2.288-0.202 4.585-0.193 6.881-0.43 0.377-1.297 1.131-1.727 1.516 9e-3 -2.682 0.245-5.453-0.71-8.012-0.596-4.655 0.57-9.485-0.877-14.026-0.438-5.382 0.079-10.782-0.359-16.165-1.587-5.698-0.149-11.712-0.876-17.532-1.394-4.251-0.333-8.784-0.868-13.149-0.903-2.358-0.754-4.909-0.728-7.381-0.429-0.368-1.297-1.122-1.727-1.49-0.272 4.699 0.71 9.564-0.701 14.131-0.421 3.787 0.385 7.723-0.877 11.396-0.552 4.366 0.526 8.898-0.877 13.149-0.368 4.506 0.018 9.029-0.35 13.535-1.438 4.769-0.421 9.818-0.701 14.709h-0.868c-9e-3 -2.867 0.289-5.829-0.71-8.573-0.245-3.34-0.123-6.688-0.351-10.028-1.349-3.85-2.513-33.865-5.347-39.938-4.096 0.324-4.685-1.352-7.083-16.191-0.859-3.445-0.482-7.022-0.675-10.528-5.99-19.969-5.779-31.074-8.74-43.006-0.412 0.377-1.236 1.14-1.648 1.516-4.042 68.84-13.256 161-13.438 161.87-6.241 0.263-12.483 0.281-18.724-0.018-2.084-7.236 0.044-0.063-2.472-11.072-1.704 1.184-2.333 2.852-3.27 11.072-6.54 0.281-13.088 0.272-19.627 0.035-0.289-0.605-0.859-1.815-1.148-2.419-0.438-5.567 0.754-11.308-0.745-16.752-0.657-4.953 0.623-10.081-0.885-14.902-0.316-3.918-0.044-7.863-0.351-11.781-1.175-3.384-0.543-7.013-0.868-10.519-1.201-3.375-0.543-7.013-0.877-10.519-1.105-3.094-0.622-6.426-0.885-9.634-0.991-2.823-0.675-5.838-0.885-8.766-0.64-1.823-0.737-3.752-0.807-5.654-0.412-0.377-1.236-1.122-1.648-1.49-0.023 1.517 0.6 9.192-2.016 20.118-2.092-3.749-2.373-11.288-2.568-14.727-0.728-2.095-0.719-4.33-0.728-6.513-0.412-0.377-1.236-1.122-1.648-1.49-0.017 2.384 0.105 4.839-0.745 7.118-1.625 13.049-1.923 57.246-2.113 60.871-1.254 3.524 9e-3 7.513-2.086 10.808-3.055-13.191-3.982-41.883-4.041-42.752-0.195-0.562-2.542-23.345-2.577-24.352h-0.684c-0.074 0.87-1.059 13.181-1.639 14.709-0.324 3.927-0.052 7.863-0.359 11.79-1.806 5.26 0.403 10.993-1.403 16.261-0.333 4.444-0.14 8.906-0.175 13.359l-0.85-0.026c-9e-3 -2.402-0.035-4.804-0.21-7.197-1.955-6.715 0.561-13.929-1.394-20.644-0.421-5.093 0.061-10.212-0.359-15.297-1.534-5.119-0.202-10.546-0.877-15.779-1.341-3.962-0.386-8.196-0.868-12.272-1.473-4.856-0.368-10.02-0.745-15.007-0.281-0.587-0.85-1.753-1.131-2.332l-0.342-0.026c-2.383 6.384-1.846 9.872-4.725 15.043-1.087-0.053-2.156-0.097-3.217-0.14-0.297 2.566-0.568 6.574-3.226 12.614-1.078-0.456-2.139-0.912-3.173-1.385-0.903 1.043-1.753 2.121-2.568 3.226-1.541 14.346-1.612 25.276-6.522 59.863-0.64 1.394-1.613 2.568-2.902 3.384-0.643-9.977-2.268-14.232-2.901-20.381-0.395-0.368-1.192-1.113-1.587-1.482-3.995 25.967-3.614 31.519-5.628 38.86l-0.526 9e-3c-5.004-29.024-4.245-32.066-6.592-40.692-1.964 0.307-3.165 1.56-3.463 3.506-1.455 1.648-2.858 3.34-4.068 5.172-0.113 0.869-5.441 26.261-5.242 38.194-7.206 0.316-14.42 0.281-21.626 0-1.59-6.96-1.588-22.528-4.032-40.043-2.449 4.247-1.567 9.163-3.401 17.199h-0.622c-0.096-1.999-0.167-4.024-0.798-5.943-0.193-2.463-0.228-4.935-0.403-7.398-0.214-0.596-2.541-21.185-2.551-21.389-0.342-0.368-1.034-1.096-1.376-1.464-2.624 7.092-1.98 15.125-3.936 40.762-0.943 2.679-1.212 14.307-2.463 18.251l-0.579-9e-3c-0.263-0.587-0.797-1.762-1.069-2.349-0.044-2.393 0.018-4.839-0.798-7.127-0.482-4.076 0.456-8.31-0.877-12.264-0.543-4.374 0.526-8.906-0.876-13.149-0.272-3.629-0.088-7.276-0.351-10.905-2.209-6.347 1.236-13.623-2.226-19.618-1.659 10.114-0.922 6.007-1.289 12.115-1.324 3.962-0.395 8.196-0.868 12.272-1.648 4.401 0.228 9.24-1.394 13.64-0.263 3.27-0.202 6.557-0.184 9.835l-0.859 9e-3c0-2.7 9e-3 -5.409-0.202-8.091 0 0-1.894-14.814-3.559-26.64-1.025 2.161-2.494 6.353-3.419 11.457-0.71 1.201-1.42 2.411-2.148 3.603-3.406-7.194-4.001-15.55-4.295-17.699-5.625-12.505-4.562-25.342-7.67-33.671h-0.403c-3.503 9.782 0.435 1.884-6.005 38.317-0.184 0.359-0.552 1.087-0.728 1.446-0.324 1.727-0.57 3.463-0.841 5.198-0.947 3.717-0.395 7.583-0.719 11.361-1.289 3.664-0.473 7.6-0.885 11.396-0.594 1.9-1.634 10.122-1.718 10.993-1.122 0.745-2.244 1.473-3.349 2.218-0.386 5.626 0.13 1.269-1.175 7.714-3.953 0.175-7.907 0.175-11.852 0.044-0.105-2.051-0.158-4.129-0.842-6.075-0.412-3.796 0.395-7.732-0.885-11.396-0.333-3.498 0.307-7.127-0.859-10.51-0.491-6.548 0.123-13.123-0.368-19.671 0 0-5.516-54.514-8.845-67.306h-1.473c0.015 4.792-0.944 14.581-1.595 16.463-0.351 3.498 0.307 7.136-0.877 10.519-0.491 4.076 0.465 8.31-0.877 12.272-0.491 4.076 0.456 8.31-0.877 12.272-0.28 3.629-0.079 7.276-0.35 10.905-1.262 3.673-0.465 7.609-0.868 11.396-1.289 3.664-0.473 7.6-0.877 11.396-1.289 3.664-0.482 7.6-0.877 11.387-1.429 4.243-0.351 8.784-0.894 13.149-0.517 1.683-0.728 3.427-0.912 5.163-3.629 0.123-7.249 0.123-10.861 9e-3 -0.359-1.131-0.719-2.253-1.078-3.357-0.554-15.475 0.663-21.354-0.815-25.474-0.498-7.528-0.096-59.18-5.654-78.719-6.429-1.051-3.223-11.691-7.057-21.424l-0.438 0.018c-4.443 43.319-2.365 60.076-3.857 78.211-1.63 4.401 0.21 9.231-1.385 13.64-0.184 2.463-0.219 4.935-0.395 7.399-0.666 2.007-0.736 4.138-0.824 6.241-0.245 0.64-0.745 1.928-0.99 2.568-0.351-0.359-1.061-1.096-1.411-1.455-0.134-6.652-0.225-0.761-1.166-13-1.403-3.839 0.079-8.056-1.359-11.887-0.342-4.436-0.149-8.897-0.184-13.342h-1.622c-0.042 0.869-1.142 13.049-1.709 14.709-0.246 3.34-0.114 6.688-0.351 10.028-1.402 4.243-0.342 8.775-0.877 13.14-1.473 4.541-0.281 9.371-0.885 14.026-0.999 2.761-0.728 5.724-0.71 8.599-0.438-9e-3 -1.297-9e-3 -1.736-0.018-0.091-1.768-2.814-61.555-2.814-61.555-0.038-0.109-5.456-50.812-6.908-56.26-0.359 0.386-1.078 1.148-1.446 1.534-1.054 4.726-0.995 2.579-1.157 9.371-0.298-0.026-0.885-0.07-1.183-0.096-0.938-1.324-1.928-2.612-2.919-3.892-2.823 14.314-4.439 36.549-5.97 44.873-0.184 0.359-0.552 1.078-0.736 1.438-0.281 1.359-0.526 2.735-0.754 4.103h-0.657c0.028-7.733-1.59-17.163-2.849-24.896-0.517 0.877-1.026 1.762-1.516 2.647-0.018 2.972 0.315 6.049-0.71 8.906-0.605 4.655 0.561 9.485-0.876 14.026-0.754 6.11 0.71 12.404-0.868 18.409-0.131 1.63-0.202 3.279-0.254 4.918-0.544 0.938-1.087 1.876-1.613 2.814-0.987 9.186-0.327-1.6-1.14 11.931-1.245 3.673-0.473 7.6-0.859 11.396-1.201 3.34-0.657 6.934-0.701 10.397-6.732 0.254-13.456 0.298-20.179 9e-3 -0.044-3.471 0.473-7.057-0.684-10.405-0.649-4.944 0.622-10.072-0.885-14.894-0.307-3.927-0.052-7.863-0.351-11.782-1.613-5.996-0.149-12.316-0.868-18.435-1.339-5.048-0.518-5.014-3.603-14.981-1.154-4.75-0.731-4.479-2.621-9.59-0.351 0.368-1.069 1.105-1.429 1.473-3.59 28.719-2.637 24.356-5.26 29.112-0.601 4.918-1.642 5.918-2.831 13-0.71 1.183-1.403 2.358-2.113 3.533-0.281-0.684-0.833-2.051-1.113-2.735-0.247-4.495-0.408-4.871-1.166-8.196-0.386 0-1.175 0-1.569-9e-3 -0.044 1.359-0.105 2.717-0.158 4.076-3.067-6.436-0.91-7.799-1.823-18.286-1.446-4.541-0.272-9.371-0.868-14.026-1.026-2.849-0.71-5.908-0.745-8.871-0.289-0.587-0.868-1.744-1.166-2.332h-0.473c-0.83 6.893-1.628 7.466-1.876 15.209-0.421-0.377-1.262-1.131-1.683-1.499-9e-3 -2.306-0.035-4.602-0.193-6.89-1.183-3.384-0.535-7.013-0.877-10.51-1.192-3.384-0.535-7.022-0.868-10.519-1.201-3.384-0.543-7.022-0.885-10.519 0 0-3.515-26.665-3.515-26.666-0.324-0.368-0.982-1.096-1.306-1.455-2.09 10.391-0.875 47.421-5.628 75.94-0.395-0.377-1.175-1.122-1.56-1.499-2.507-9.819-2.672-28.963-2.717-29.831-0.561-0.894-1.113-1.788-1.657-2.682-0.07 2.13-0.053 4.313-0.806 6.347-0.412 3.787 0.395 7.723-0.859 11.396-0.71 5.531 0.675 11.247-0.877 16.656-0.473 5.961 0.096 11.957-0.368 17.918-1.613 5.996-0.123 12.299-0.877 18.409-1.446 4.532-0.281 9.362-0.868 14.017-1.096 3.051-0.701 6.32-0.701 9.485h-5.251c-0.333-5.488 0.78-11.133-0.701-16.489-0.719-5.531 0.692-11.256-0.885-16.656-0.543-4.365 0.508-8.898-0.868-13.149-0.219-3.051-0.158-6.11-0.368-9.152-0.622-2.007-0.771-4.103-0.947-6.171-3.738-17.029-1.37-12.706-7.022-45.645-4.711-15.28-4.495-46.356-6.978-58.128-0.324-0.359-0.964-1.096-1.28-1.464-0.28 1.481-0.544 2.972-0.85 4.444-0.085 0.868-3.823 36.378-5.198 42.901-1.571 7.218-1.593 19.441-2.788 22.87-0.351 3.498 0.307 7.127-0.877 10.51-0.491 4.076 0.465 8.31-0.877 12.272-0.596 4.655 0.579 9.485-0.877 14.026-0.342 4.216-9e-3 8.451-0.351 12.658-1.464 4.541-0.272 9.371-0.885 14.026-0.561 1.727-0.719 3.533-0.868 5.33-0.368-0.351-1.105-1.052-1.473-1.411-3.32 19.616-1.334 18.132-1.867 29.296-13.421 0.193-26.842 0.28-40.254-0.018-0.494-1.729-3.729-21.553-4.655-33.583-1.297-3.559-0.026-7.46-1.359-11.01-0.193-2.761-0.184-5.523-0.368-8.275-1.578-5.707-0.14-11.711-0.877-17.532-0.529-1.612-1.765-12.284-1.858-13.158-1.105-4.006-0.342-8.188-0.763-12.264-1.657-6.566-0.105-13.465-0.885-20.162-1.639-6.566-0.105-13.465-0.877-20.162-1.613-5.987-0.131-12.29-0.877-18.4-1.455-4.541-0.28-9.371-0.868-14.026-0.85-2.288-0.763-4.742-0.789-7.127-0.281-0.587-0.824-1.753-1.096-2.332h-0.403c-0.551 5.654-1.974 21.699-6.867 143.01v84.684c1.97-18.939 4.281-41.148 4.281-41.149 0.855-2.511 0.714-5.184 0.706-7.788z"/>
+</svg>
diff --git a/sdk/tests/fixtures/sample2.svg b/sdk/tests/fixtures/sample2.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg enable-background="new 0 0 2014 1674.641" version="1.1" viewBox="0 0 2014 1674.641" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <metadata></metadata>
+ <path d="m44.883 1173.3c0 169.58 92.136 317.37 229.08 396.59v-793.53c-136.94 79.216-229.08 227.37-229.08 396.94z"/>
+ <path d="m1496.5 173.21c-338.54-181.18-640.46-181.19-978.98 0-115.34 61.726-232.1 201.31-232.1 348.66v1048h125.99v-1048c0-100.78 121.24-229.18 225.54-272.38 280.15-116.04 460-116.04 740.11 0 104.3 43.203 225.54 171.6 225.54 272.38v1048h125.99v-1048c0-147.36-116.76-286.94-232.1-348.66z"/>
+ <path d="m1740 776.38v793.53c136.94-79.214 229.08-227 229.08-396.59 1e-3 -169.57-92.133-317.73-229.08-396.94z"/>
+ <path d="m541.72 709.03h-70.645c-27.201 0-49.252 22.051-49.252 49.253v829.79c0 27.201 22.05 49.252 49.252 49.252h70.645c27.201 0 49.252-22.051 49.252-49.252v-829.79c0-27.202-22.05-49.253-49.252-49.253z"/>
+ <path d="m1542 709.03h-70.646c-27.2 0-49.252 22.051-49.252 49.253v829.79c0 27.201 22.052 49.252 49.252 49.252h70.646c27.2 0 49.252-22.051 49.252-49.252v-829.79c-1e-3 -27.202-22.052-49.253-49.252-49.253z"/>
+ <path d="m595.97 1132.8c4.322-0.219 8.643-0.184 12.965 0 0.197 4.557 3.624 24.404 4.471 95.602 0 1.438 0.298 2.849 0.728 4.225 0.691 13.2-0.668 21.337 0.868 26.298 0.386 12.904 0.053 25.834 0.158 38.746h10.467c10.735-37.493 8.785-86.788 9.941-115.01 1.07-3.103 0.614-6.426 0.868-9.634 0.615-2.041 1.597-9.992 1.753-11.519 0.368 0.377 1.113 1.131 1.481 1.508 0.079 4.827 0.295 5.098 2.007 12.833 0.342 0 1.034-9e-3 1.376-9e-3 0.421-1.771 0.877-3.515 1.315-5.277l0.657-9e-3c0.202 4.611-0.719 9.38 0.684 13.859 0.491 4.374-0.508 8.889 0.85 13.149 0.114 1.683 0.175 3.357 0.263 5.049 0.552-0.92 1.122-1.85 1.692-2.77 0.052-13.129 0.408 0.674 0.894-17.479 0.307 0.552 0.92 1.657 1.227 2.209 0.316 0.018 0.938 0.044 1.245 0.061 2.638-11.892 2.56-18.294 3.647-51.86 8.152-0.21 16.314-0.263 24.466 0.044 0.018 2.314-0.018 4.681 0.78 6.89 0.677 13.255 1.433 10.704 2.016 18.926 1.554 2.913 2.279 3.212 5.295 20.714 0.394 0 1.183 0 1.578 9e-3 0.454-9.931 0.998-1.96 0.964-13.184l0.868 9e-3c0.096 3.734-0.561 7.609 0.684 11.229 0.298 3.498-0.307 7.127 0.868 10.519 0.307 3.498-0.307 7.135 0.877 10.519 0.307 3.498-0.307 7.127 0.877 10.519 0.368 3.787-0.394 7.714 0.868 11.387 0.438 4.085-0.465 8.319 0.877 12.281 0.298 3.498-0.298 7.127 0.868 10.519 0.949 15.108 1.515 17.226 2.858 21.626 0.421-0.412 1.262-1.227 1.692-1.639-0.187-3.823 0.79-9.648 3.98-14.937 0.701 1.157 1.411 2.332 2.13 3.498 0.018 0.412 0.053 1.236 0.07 1.648 0.894 1.657 1.815 3.357 3.261 4.629 0.52-4.824 0.271-3.677 1.525-8.757 0.155-0.87 1.114-8.042 1.552-15.709 1.21-3.691 0.491-7.609 0.85-11.405 1.341-3.962 0.43-8.196 0.877-12.272 0 0 6.76-64.946 7.004-68.375 1.008-2.77 0.728-5.742 0.728-8.617 1.727 0 3.471 0 5.225-9e-3 0 3.173-0.377 6.443 0.701 9.494 0.152 3.522 0.148 41.365 1.753 46.478 0.447 4.076-0.473 8.31 0.877 12.272 0.289 3.498-0.281 7.118 0.85 10.51 0.612 11.986 0.925 9.898 2.016 17.383 0.43 0.403 1.289 1.21 1.718 1.613 0.386-0.395 1.157-1.175 1.543-1.569 1.113-3.427 2.27-6.908 2.06-10.572 0.351 0.377 1.043 1.122 1.394 1.49 0.307 0.982 0.631 1.972 0.982 2.954 9e-3 0.824 0.035 1.648 0.07 2.472 0.736 0.912 1.499 1.841 2.279 2.744 1.695-6.242 1.537-5.465 2.367-9.923 0.394-0.377 1.175-1.122 1.569-1.499-0.026 1.455-0.035 2.928-0.044 4.392 0.43 0.386 1.28 1.148 1.709 1.534 2.593-15.316 1.515-32.185 4.646-59.933h0.517c0.257 2.44 0.455 5.251 2.656 12.053 0.04 1.752 2.071 29.42 6.46 44.391 0.377-0.386 1.131-1.166 1.508-1.56 2.511-20.088 0.17 17.604 5.33-78.561l0.622 9e-3c0.403 1.569 0.842 3.13 1.28 4.699 0.395-0.377 1.175-1.148 1.569-1.534 0.153-5.981 0.067-4.293 1.201-9.362 6.539-0.281 13.079-0.289 19.627-0.018 1.093 6.281 3.062 17.853 3.831 24.948 0.403-0.377 1.219-1.14 1.631-1.525 0.133-3.59 1.852-14.417 2.919-17.453 0.377 0.377 1.14 1.122 1.516 1.499-0.034 12.962 0.097 3.675 0.947 13.657 0.421 9e-3 1.253 9e-3 1.674 9e-3 0-1.762 9e-3 -3.524 0.026-5.277h1.718c0.237 4.602-0.701 9.371 0.71 13.85 0.386 3.787-0.412 7.732 0.877 11.405 0.298 3.498-0.298 7.127 0.859 10.519 0.455 8.447 1.972 19.645 2.595 21.906-0.347 7.057 9.094 35.294 9.888 54.043 0.429-0.395 1.28-1.192 1.709-1.587 0.061-1.42 0.14-2.84 0.263-4.252 0.885-2.831 0.675-5.829 0.85-8.748 1.131-3.401 0.561-7.022 0.859-10.519 1.166-3.393 0.561-7.022 0.876-10.519 1.157-3.392 0.57-7.022 0.877-10.528 0.697-2.038 1.719-16.578 1.78-17.532 0.086-0.331 0.978-5.454 1.788-8.924 2.042-3.033 3.515-6.399 5.26-9.599 0.324 0.368 0.964 1.122 1.289 1.499 2.896 10.614 5.277 40.7 5.277 40.701 1.101 16.794 2.417 23.952 2.866 28.779 0.412 0.394 1.245 1.175 1.657 1.569 0.071-0.869 8.706-77.968 8.959-86.556 0.561-1.779 1.105-3.559 1.727-5.312 0.412 0.394 1.227 1.183 1.639 1.578 9e-3 0.57 0.017 1.701 0.017 2.27 0.403 0 1.219-9e-3 1.622-9e-3 1.24-7.203 1.236-3.14 2.121-13.342 1.017-3.41 0.5-7.013 0.798-10.51 0.666-1.929 0.745-3.971 0.85-5.987 1.981-0.017 3.98-0.017 5.987-0.061 0.738 15.014 3.226 81.388 5.452 98.881 2.794-5.344 3.327-18.194 3.313-23.046 0.526 0.92 1.061 1.841 1.604 2.779 1.005 8.595 1.291 4.766 1.955 12.124 0.412-0.386 1.236-1.166 1.657-1.56 0.07-1.131 0.167-2.253 0.29-3.375 3.077-10.573 4.023-80.044 5.303-85.767 11.203-0.333 22.415-0.307 33.618-0.026 2.519 9.333-0.185 1.64 3.165 10.651 1.008-0.035 2.025-0.07 3.059-0.105 3.706 11.86 4.661 36.592 6.136 41.086 0.237 3.743-0.228 7.618 1.324 11.159 1.832-0.973 3.532-4.164 5.768-2.27 0.311 1.769 1.139 5.743 1.674 7.74 0.096 1.99 0.052 4.006 0.342 5.987 0.955 1.779 3.182 1.078 4.839 1.35 2.515 9.18 4.175 17.629 4.865 22.318 3.942-2.424 4.424-5.052 6.049-11.527 1.105-1.981 2.621-3.682 4.252-5.251-9e-3 -1.131-9e-3 -2.262 9e-3 -3.384 0.386 0.377 1.149 1.131 1.534 1.508 0.333 1.797 0.754 3.577 1.21 5.365 0.359-0.386 1.087-1.166 1.446-1.552 0.649-2.376 1.403-4.716 2.183-7.048 0.316 0.377 0.947 1.148 1.262 1.525 1.645 7.111 0.322 3.568 2.06 21.065 0.429-0.395 1.271-1.175 1.692-1.56 0.026-1.999 0.07-3.997 0.21-5.987 1.481-4.83 0.263-9.949 0.868-14.902 1.639-6.285 0.123-12.877 0.877-19.285 1.683-7.451 0.07-15.218 0.877-22.792 1.674-7.451 0.07-15.227 0.868-22.8 1.219-3.62 0.596-7.495 0.684-11.229h4.979c2.486 11.696-0.075 13.584 1.867 20.004 0.438 4.076-0.456 8.31 0.859 12.281 0.71 13.915 2.152 15.948 2.875 21.74 0.403 0.395 1.201 1.192 1.604 1.587 2.183-6.047-0.403-11.103 3.024-22.283 0.316 0 0.964-9e-3 1.289-9e-3 0.07 1.339 1.748 15.516 3.112 20.688 3.189-6.785 3.21-47.072 3.2-54.051 9.432-0.307 18.882-0.272 28.323 0.026 0.079 1.105 0.202 2.297 0.833 3.27 1.219-0.359 1.613-2.13 1.201-3.226 0.684 0 2.042 0.017 2.726 0.017 0.193 1.701 0.421 3.401 0.912 5.049 0.745 6.11-0.754 12.422 0.877 18.417 0.622 4.944-0.64 10.081 0.885 14.902 0.438 4.076-0.464 8.31 0.859 12.272 0.587 5.786-0.649 11.747 1.157 17.392 0.342 0.359 1.017 1.087 1.35 1.455 0.973-1.806 2.025-3.576 3.296-5.207 2.899 9.94 3.548 20.233 4.146 30.129 2.753-4.301 1.495-7.983 6.198-43.26 1.07-1.122 2.156-2.227 3.261-3.331 1.546-13.203 1.281-18.245 4.804-28.139 0.719 1.183 1.42 2.384 2.139 3.594 6.049 34.545 2.934 63.483 10.432 89.607-0.114 5.067 1.359 9.993 1.052 15.06-0.079 2.016 0.035 4.059 0.719 5.978 0.359 6.487 0.088 12.991 0.131 19.496-0.026 3.813 1.113 7.53 1.017 11.361h1.639c0.973-2.533 1.026-5.233 0.991-7.898-0.096-2.682 0.728-5.26 0.842-7.907 0.149-3.305-0.272-6.627 0.342-9.897 1.052-4.874 0.254-9.879 0.719-14.806 1.306-3.962 0.421-8.188 0.859-12.264 1.069-3.103 0.631-6.426 0.885-9.634 0.71-2.034 0.736-4.199 0.763-6.329 0.535-0.92 1.087-1.841 1.657-2.753 9e-3 0.693 9e-3 2.078 9e-3 2.77 0.421 0.394 1.254 1.192 1.674 1.595 1.881-6.653 1.973-16.337 2.025-17.208 1.324-3.962 0.421-8.188 0.868-12.273 1.508-4.821 0.263-9.949 0.885-14.902 1.534-5.119 0.21-10.537 0.868-15.779 1.438-4.777 0.43-9.836 0.684-14.736l0.579 9e-3c4.58 20.94-1.764 21.194 8.003 57.654 0.035 3.743 0.315 7.477 1.14 11.133 0.771 1.227 1.56 2.446 2.375 3.664 2.187-18.959 0.397-16.093 1.254-24.413 1.525-5.119 0.228-10.537 0.876-15.779 1.525-5.119 0.219-10.537 0.876-15.779 1.482-5.155 0.351-10.607 0.728-15.884 3.781-1.853 5.985-19.261 6.241-23.449 11.896-0.298 23.809-0.289 35.704 0 0.018 2.314-0.044 4.69 0.789 6.899 1.385 15.795 1.043 17.456 1.034 20.679 0.438-0.386 1.297-1.14 1.727-1.525 0.313-2.188-1e-3 -0.959 1.21-4.953h1.157c7.495 34.264 1.885 96.567 10.537 107.57 4.66-9.896 5.508-48.83 5.75-50.764 0.339-1.036 7.792-66.458 7.846-67.323h0.719c0.315 5.479-0.815 11.133 0.701 16.48 0.219 3.217-0.175 6.522 0.833 9.634 0.096 1.35 0.175 2.709 0.263 4.076 1.113 1.78 2.262 3.55 3.349 5.356 0.07 1.85 0.202 3.717 0.806 5.487 0.237 3.208-0.21 6.539 0.877 9.643 0.438 4.076-0.456 8.301 0.868 12.264 0.64 5.233-0.666 10.659 0.868 15.779 0.666 5.531-0.693 11.238 0.877 16.656 0.617 10.342-0.612 22.781 0.868 27.175 0.123 1.99 0.167 3.989 0.21 5.987 0.429 0.394 1.28 1.183 1.7 1.578 3.526-23.595 3.006-33.165 5.417-44.234l0.526 0.026c2.215 9.395 0.757 4.828 3.042 12.623 0.377-0.377 1.14-1.14 1.517-1.516 2.464-9.857 5.395-72.486 5.408-73.354l0.71 9e-3c0.044 0.447 0.131 1.341 0.167 1.779 0.605-0.018 1.814-0.07 2.411-0.088 2.367 8.449 6.032 43.591 6.075 43.725 0.517 4.348-1.026 10.134 3.296 12.982 12.367-46.276 9.589-65.188 12.904-92.683 11.51-0.228 23.028-0.228 34.547-0.018 0.316 1.131 0.649 2.253 1.008 3.375 0 1e-3 5.242 57.934 5.242 57.935 2.528 35.686-1.458 8.139 4.62 49.809 0.412 0.395 1.227 1.175 1.639 1.56 0.117-0.869 4.225-26.319 4.576-34.135 3.883 7.547 1.348 7.067 5.198 13.465 0.955-0.395 1.964-0.64 3.016-0.745 0.631 0.833 1.245 1.701 1.832 2.604 0.465 0.044 1.394 0.131 1.859 0.175 0.631-1.087 1.262-2.165 1.92-3.243 1.331-5.87 3.349-16.952 3.752-22.327l0.71 0.018c0.324 6.355-0.877 12.877 0.666 19.11 0.64 5.242-0.666 10.659 0.885 15.788 0.281 3.498-0.272 7.109 0.842 10.511 0.105 1.525 0.175 3.059 0.263 4.593h1.683c0.03-0.868 2.321-25.659 4.655-35.354 0.359 0.368 1.069 1.113 1.42 1.481 0.018 2.183 0.026 4.409 0.763 6.496 0.184 2.928-0.088 5.943 0.894 8.766 0.257 4.097-0.504 3.463 2.165 21.81 1.771-3.524 1.604-7.469 1.744-11.299 1.411-4.55 0.307-9.362 0.868-14.026 1.604-5.996 0.149-12.299 0.877-18.409 1.63-6.285 0.114-12.877 0.868-19.285 1.587-5.698 0.158-11.711 0.868-17.532 1.56-6.399 0.324-13.114 0.693-19.645 0.429-0.377 1.28-1.14 1.709-1.525-0.026 2.393-0.105 4.856 0.728 7.153 0.193 2.919-0.096 5.943 0.885 8.757 0.456 4.076-0.473 8.319 0.877 12.281 0.447 4.076-0.473 8.31 0.877 12.264 0.368 3.796-0.386 7.723 0.868 11.405 1.036 17.235 1.642 16.652 2.972 21.792 0.43 0.438 1.297 1.306 1.727 1.736 0.815-1.21 1.63-2.419 2.446-3.638 2.923-13.017 5.323-15.63 6.426-33.039 1.186-4.545 6.856-57.745 6.873-58.619 13.114-0.333 26.237-0.298 39.351 0-0.07 25.539-0.242 25.33 0.701 27.92 0.701 5.83-0.737 11.843 0.868 17.541 0.622 4.944-0.64 10.072 0.885 14.902 0.491 4.374-0.517 8.898 0.859 13.158 0.545 12.053 0.783 6.687 1.964 16.629 1.858 1.052 3.901 1.981 5.076 3.892 10.959-1.859 6.983-29.405 13.724-64.092v-42.917c-0.174-0.927-0.341-1.93-0.488-3.102-0.544-0.947-1.069-1.885-1.578-2.823-3.578-19.889-0.465-3.857-2.901-38.229-0.302-0.87-2.483-19.751-2.542-20.46-0.701-0.894-1.359-1.788-2.051-2.665-2.62 8.857-4.816 32.1-4.97 37.869-0.885-1.192-1.736-2.411-2.56-3.62v-1.63c-0.991-1.744-1.946-3.489-2.928-5.216-0.438 0.517-1.306 1.543-1.745 2.06-0.955 0-1.885-9e-3 -2.796-9e-3 -0.71-0.71-1.394-1.42-2.069-2.13-0.827-5.187-0.922-3.934-1.999-19.093-1.271-3.673-0.465-7.609-0.877-11.405-1.201-3.384-0.535-7.013-0.877-10.51-0.824-2.7-0.728-5.54-1.166-8.293-0.21-0.359-0.622-1.078-0.833-1.438-0.622-3.147-0.456-6.373-0.631-9.555-1.056-2.973-1.705-15.787-1.762-16.656-1.704-4.872-1.165-33.567-5.321-44.54l-0.377 9e-3c-0.237 0.579-0.701 1.736-0.938 2.323-0.401 3.921-11.044 109.35-11.711 112.52l-0.71 9e-3c-0.251-7.498 9e-3 -3.82-1.201-9.651h-1.236c-1.98 7.546-1.844 6.61-2.121 9.073-0.254 0.622-0.771 1.867-1.026 2.481-1.078-0.421-2.121-0.85-3.156-1.271-3.451 12.972-2.154 26.149-5.549 58.154-5.163 0.21-10.326 0.272-15.472 9e-3 -2.367-4.585 0.263-10.046-1.674-14.788-5.048-49.685-2.675-22.48-9.038-64.474-0.368 0.368-1.096 1.104-1.464 1.473-3.2 24.397-3.796 53.375-3.866 54.244-0.902 2.444-0.812 2.981-0.71 23.546-4.628 0.21-9.257 0.202-13.877 9e-3 -0.062-1.098-0.753-10.145-3.41-19.96-1.609-6.088-2.241-34.338-5.531-45.399-0.386 0.403-1.157 1.218-1.543 1.622 0 2e-3 -2.428 17.821-2.428 17.821-1.87 7.96-2.043 7.751-2.209 12.123-0.894 1.359-1.823 2.682-2.779 3.989-1.026-0.78-2.016-1.552-3.024-2.297-4.94 16.27-1.404 25.036-3.831 32.049-1.745 9e-3 -3.48 0.018-5.198 0.07-0.149-4.059 0.605-8.249-0.693-12.176-0.596-4.664 0.579-9.494-0.877-14.026-0.543-4.365 0.509-8.897-0.868-13.149-0.245-2.98-0.219-5.97-0.184-8.959h-0.798c-0.097 1.525-0.175 3.051-0.281 4.585-1.043 3.042-0.675 6.285-0.666 9.441h-0.885c-0.454-35.146-2.288-72.71-9.792-140.65-0.693-1.175-1.359-2.332-2.043-3.489-1.043 1.411-2.042 2.84-2.954 4.33-0.744 4.308-0.526 3.106-1.56 7.153-3.447 12.335-8.898 66.727-8.898 66.727-0.359 3.498 0.307 7.135-0.877 10.519-2.297 22.912 0.443 23.804-2.604 35.932-0.184 2.639-0.044 5.347-0.894 7.89-0.228 3.051-0.158 6.101-0.368 9.152-1.499 4.83-0.237 9.949-0.877 14.902-1.569 5.409-0.167 11.124-0.877 16.647-0.517 1.683-0.728 3.427-0.912 5.172-6.645 0.202-13.289 0.254-19.925-0.044 0.064-10.529-0.526-4.443-0.973-12.334l-0.701 9e-3c-0.965 7.442-1.078 2.9-0.973 12.272-1.183-9e-3 -2.349-9e-3 -3.506 0 0.078-9.359-1.521-16.3-2.042-19.811-3.15 1.808-4.963 16.633-5.119 19.899-5.987 0.254-11.974 0.228-17.953-0.035-2.68-8.301 0.155-12.807-1.885-20.022-0.649-4.944 0.631-10.072-0.877-14.902-0.28-3.629-0.088-7.276-0.35-10.905-0.735-2.102-1.517-17.095-2.06-19.715-1.139-4.529-1.144-4.594-1.289-6.811-0.833-1.219-1.674-2.428-2.533-3.62-0.026-0.394-0.088-1.192-0.114-1.587-1.131-2.095-2.358-4.129-3.813-6.005-0.894 0.955-1.762 1.911-2.63 2.875-0.491 0-1.473-9e-3 -1.964-9e-3 -0.281 0.579-0.833 1.744-1.113 2.323-0.044 2.393 0.018 4.839-0.78 7.127-0.517 8.012 0.14 16.051-0.359 24.054-1.709 4.69 0.307 9.827-1.403 14.517-0.175 2.288-0.202 4.585-0.193 6.881-0.43 0.377-1.297 1.131-1.727 1.516 9e-3 -2.682 0.245-5.453-0.71-8.012-0.596-4.655 0.57-9.485-0.877-14.026-0.438-5.382 0.079-10.782-0.359-16.165-1.587-5.698-0.149-11.712-0.876-17.532-1.394-4.251-0.333-8.784-0.868-13.149-0.903-2.358-0.754-4.909-0.728-7.381-0.429-0.368-1.297-1.122-1.727-1.49-0.272 4.699 0.71 9.564-0.701 14.131-0.421 3.787 0.385 7.723-0.877 11.396-0.552 4.366 0.526 8.898-0.877 13.149-0.368 4.506 0.018 9.029-0.35 13.535-1.438 4.769-0.421 9.818-0.701 14.709h-0.868c-9e-3 -2.867 0.289-5.829-0.71-8.573-0.245-3.34-0.123-6.688-0.351-10.028-1.349-3.85-2.513-33.865-5.347-39.938-4.096 0.324-4.685-1.352-7.083-16.191-0.859-3.445-0.482-7.022-0.675-10.528-5.99-19.969-5.779-31.074-8.74-43.006-0.412 0.377-1.236 1.14-1.648 1.516-4.042 68.84-13.256 161-13.438 161.87-6.241 0.263-12.483 0.281-18.724-0.018-2.084-7.236 0.044-0.063-2.472-11.072-1.704 1.184-2.333 2.852-3.27 11.072-6.54 0.281-13.088 0.272-19.627 0.035-0.289-0.605-0.859-1.815-1.148-2.419-0.438-5.567 0.754-11.308-0.745-16.752-0.657-4.953 0.623-10.081-0.885-14.902-0.316-3.918-0.044-7.863-0.351-11.781-1.175-3.384-0.543-7.013-0.868-10.519-1.201-3.375-0.543-7.013-0.877-10.519-1.105-3.094-0.622-6.426-0.885-9.634-0.991-2.823-0.675-5.838-0.885-8.766-0.64-1.823-0.737-3.752-0.807-5.654-0.412-0.377-1.236-1.122-1.648-1.49-0.023 1.517 0.6 9.192-2.016 20.118-2.092-3.749-2.373-11.288-2.568-14.727-0.728-2.095-0.719-4.33-0.728-6.513-0.412-0.377-1.236-1.122-1.648-1.49-0.017 2.384 0.105 4.839-0.745 7.118-1.625 13.049-1.923 57.246-2.113 60.871-1.254 3.524 9e-3 7.513-2.086 10.808-3.055-13.191-3.982-41.883-4.041-42.752-0.195-0.562-2.542-23.345-2.577-24.352h-0.684c-0.074 0.87-1.059 13.181-1.639 14.709-0.324 3.927-0.052 7.863-0.359 11.79-1.806 5.26 0.403 10.993-1.403 16.261-0.333 4.444-0.14 8.906-0.175 13.359l-0.85-0.026c-9e-3 -2.402-0.035-4.804-0.21-7.197-1.955-6.715 0.561-13.929-1.394-20.644-0.421-5.093 0.061-10.212-0.359-15.297-1.534-5.119-0.202-10.546-0.877-15.779-1.341-3.962-0.386-8.196-0.868-12.272-1.473-4.856-0.368-10.02-0.745-15.007-0.281-0.587-0.85-1.753-1.131-2.332l-0.342-0.026c-2.383 6.384-1.846 9.872-4.725 15.043-1.087-0.053-2.156-0.097-3.217-0.14-0.297 2.566-0.568 6.574-3.226 12.614-1.078-0.456-2.139-0.912-3.173-1.385-0.903 1.043-1.753 2.121-2.568 3.226-1.541 14.346-1.612 25.276-6.522 59.863-0.64 1.394-1.613 2.568-2.902 3.384-0.643-9.977-2.268-14.232-2.901-20.381-0.395-0.368-1.192-1.113-1.587-1.482-3.995 25.967-3.614 31.519-5.628 38.86l-0.526 9e-3c-5.004-29.024-4.245-32.066-6.592-40.692-1.964 0.307-3.165 1.56-3.463 3.506-1.455 1.648-2.858 3.34-4.068 5.172-0.113 0.869-5.441 26.261-5.242 38.194-7.206 0.316-14.42 0.281-21.626 0-1.59-6.96-1.588-22.528-4.032-40.043-2.449 4.247-1.567 9.163-3.401 17.199h-0.622c-0.096-1.999-0.167-4.024-0.798-5.943-0.193-2.463-0.228-4.935-0.403-7.398-0.214-0.596-2.541-21.185-2.551-21.389-0.342-0.368-1.034-1.096-1.376-1.464-2.624 7.092-1.98 15.125-3.936 40.762-0.943 2.679-1.212 14.307-2.463 18.251l-0.579-9e-3c-0.263-0.587-0.797-1.762-1.069-2.349-0.044-2.393 0.018-4.839-0.798-7.127-0.482-4.076 0.456-8.31-0.877-12.264-0.543-4.374 0.526-8.906-0.876-13.149-0.272-3.629-0.088-7.276-0.351-10.905-2.209-6.347 1.236-13.623-2.226-19.618-1.659 10.114-0.922 6.007-1.289 12.115-1.324 3.962-0.395 8.196-0.868 12.272-1.648 4.401 0.228 9.24-1.394 13.64-0.263 3.27-0.202 6.557-0.184 9.835l-0.859 9e-3c0-2.7 9e-3 -5.409-0.202-8.091 0 0-1.894-14.814-3.559-26.64-1.025 2.161-2.494 6.353-3.419 11.457-0.71 1.201-1.42 2.411-2.148 3.603-3.406-7.194-4.001-15.55-4.295-17.699-5.625-12.505-4.562-25.342-7.67-33.671h-0.403c-3.503 9.782 0.435 1.884-6.005 38.317-0.184 0.359-0.552 1.087-0.728 1.446-0.324 1.727-0.57 3.463-0.841 5.198-0.947 3.717-0.395 7.583-0.719 11.361-1.289 3.664-0.473 7.6-0.885 11.396-0.594 1.9-1.634 10.122-1.718 10.993-1.122 0.745-2.244 1.473-3.349 2.218-0.386 5.626 0.13 1.269-1.175 7.714-3.953 0.175-7.907 0.175-11.852 0.044-0.105-2.051-0.158-4.129-0.842-6.075-0.412-3.796 0.395-7.732-0.885-11.396-0.333-3.498 0.307-7.127-0.859-10.51-0.491-6.548 0.123-13.123-0.368-19.671 0 0-5.516-54.514-8.845-67.306h-1.473c0.015 4.792-0.944 14.581-1.595 16.463-0.351 3.498 0.307 7.136-0.877 10.519-0.491 4.076 0.465 8.31-0.877 12.272-0.491 4.076 0.456 8.31-0.877 12.272-0.28 3.629-0.079 7.276-0.35 10.905-1.262 3.673-0.465 7.609-0.868 11.396-1.289 3.664-0.473 7.6-0.877 11.396-1.289 3.664-0.482 7.6-0.877 11.387-1.429 4.243-0.351 8.784-0.894 13.149-0.517 1.683-0.728 3.427-0.912 5.163-3.629 0.123-7.249 0.123-10.861 9e-3 -0.359-1.131-0.719-2.253-1.078-3.357-0.554-15.475 0.663-21.354-0.815-25.474-0.498-7.528-0.096-59.18-5.654-78.719-6.429-1.051-3.223-11.691-7.057-21.424l-0.438 0.018c-4.443 43.319-2.365 60.076-3.857 78.211-1.63 4.401 0.21 9.231-1.385 13.64-0.184 2.463-0.219 4.935-0.395 7.399-0.666 2.007-0.736 4.138-0.824 6.241-0.245 0.64-0.745 1.928-0.99 2.568-0.351-0.359-1.061-1.096-1.411-1.455-0.134-6.652-0.225-0.761-1.166-13-1.403-3.839 0.079-8.056-1.359-11.887-0.342-4.436-0.149-8.897-0.184-13.342h-1.622c-0.042 0.869-1.142 13.049-1.709 14.709-0.246 3.34-0.114 6.688-0.351 10.028-1.402 4.243-0.342 8.775-0.877 13.14-1.473 4.541-0.281 9.371-0.885 14.026-0.999 2.761-0.728 5.724-0.71 8.599-0.438-9e-3 -1.297-9e-3 -1.736-0.018-0.091-1.768-2.814-61.555-2.814-61.555-0.038-0.109-5.456-50.812-6.908-56.26-0.359 0.386-1.078 1.148-1.446 1.534-1.054 4.726-0.995 2.579-1.157 9.371-0.298-0.026-0.885-0.07-1.183-0.096-0.938-1.324-1.928-2.612-2.919-3.892-2.823 14.314-4.439 36.549-5.97 44.873-0.184 0.359-0.552 1.078-0.736 1.438-0.281 1.359-0.526 2.735-0.754 4.103h-0.657c0.028-7.733-1.59-17.163-2.849-24.896-0.517 0.877-1.026 1.762-1.516 2.647-0.018 2.972 0.315 6.049-0.71 8.906-0.605 4.655 0.561 9.485-0.876 14.026-0.754 6.11 0.71 12.404-0.868 18.409-0.131 1.63-0.202 3.279-0.254 4.918-0.544 0.938-1.087 1.876-1.613 2.814-0.987 9.186-0.327-1.6-1.14 11.931-1.245 3.673-0.473 7.6-0.859 11.396-1.201 3.34-0.657 6.934-0.701 10.397-6.732 0.254-13.456 0.298-20.179 9e-3 -0.044-3.471 0.473-7.057-0.684-10.405-0.649-4.944 0.622-10.072-0.885-14.894-0.307-3.927-0.052-7.863-0.351-11.782-1.613-5.996-0.149-12.316-0.868-18.435-1.339-5.048-0.518-5.014-3.603-14.981-1.154-4.75-0.731-4.479-2.621-9.59-0.351 0.368-1.069 1.105-1.429 1.473-3.59 28.719-2.637 24.356-5.26 29.112-0.601 4.918-1.642 5.918-2.831 13-0.71 1.183-1.403 2.358-2.113 3.533-0.281-0.684-0.833-2.051-1.113-2.735-0.247-4.495-0.408-4.871-1.166-8.196-0.386 0-1.175 0-1.569-9e-3 -0.044 1.359-0.105 2.717-0.158 4.076-3.067-6.436-0.91-7.799-1.823-18.286-1.446-4.541-0.272-9.371-0.868-14.026-1.026-2.849-0.71-5.908-0.745-8.871-0.289-0.587-0.868-1.744-1.166-2.332h-0.473c-0.83 6.893-1.628 7.466-1.876 15.209-0.421-0.377-1.262-1.131-1.683-1.499-9e-3 -2.306-0.035-4.602-0.193-6.89-1.183-3.384-0.535-7.013-0.877-10.51-1.192-3.384-0.535-7.022-0.868-10.519-1.201-3.384-0.543-7.022-0.885-10.519 0 0-3.515-26.665-3.515-26.666-0.324-0.368-0.982-1.096-1.306-1.455-2.09 10.391-0.875 47.421-5.628 75.94-0.395-0.377-1.175-1.122-1.56-1.499-2.507-9.819-2.672-28.963-2.717-29.831-0.561-0.894-1.113-1.788-1.657-2.682-0.07 2.13-0.053 4.313-0.806 6.347-0.412 3.787 0.395 7.723-0.859 11.396-0.71 5.531 0.675 11.247-0.877 16.656-0.473 5.961 0.096 11.957-0.368 17.918-1.613 5.996-0.123 12.299-0.877 18.409-1.446 4.532-0.281 9.362-0.868 14.017-1.096 3.051-0.701 6.32-0.701 9.485h-5.251c-0.333-5.488 0.78-11.133-0.701-16.489-0.719-5.531 0.692-11.256-0.885-16.656-0.543-4.365 0.508-8.898-0.868-13.149-0.219-3.051-0.158-6.11-0.368-9.152-0.622-2.007-0.771-4.103-0.947-6.171-3.738-17.029-1.37-12.706-7.022-45.645-4.711-15.28-4.495-46.356-6.978-58.128-0.324-0.359-0.964-1.096-1.28-1.464-0.28 1.481-0.544 2.972-0.85 4.444-0.085 0.868-3.823 36.378-5.198 42.901-1.571 7.218-1.593 19.441-2.788 22.87-0.351 3.498 0.307 7.127-0.877 10.51-0.491 4.076 0.465 8.31-0.877 12.272-0.596 4.655 0.579 9.485-0.877 14.026-0.342 4.216-9e-3 8.451-0.351 12.658-1.464 4.541-0.272 9.371-0.885 14.026-0.561 1.727-0.719 3.533-0.868 5.33-0.368-0.351-1.105-1.052-1.473-1.411-3.32 19.616-1.334 18.132-1.867 29.296-13.421 0.193-26.842 0.28-40.254-0.018-0.494-1.729-3.729-21.553-4.655-33.583-1.297-3.559-0.026-7.46-1.359-11.01-0.193-2.761-0.184-5.523-0.368-8.275-1.578-5.707-0.14-11.711-0.877-17.532-0.529-1.612-1.765-12.284-1.858-13.158-1.105-4.006-0.342-8.188-0.763-12.264-1.657-6.566-0.105-13.465-0.885-20.162-1.639-6.566-0.105-13.465-0.877-20.162-1.613-5.987-0.131-12.29-0.877-18.4-1.455-4.541-0.28-9.371-0.868-14.026-0.85-2.288-0.763-4.742-0.789-7.127-0.281-0.587-0.824-1.753-1.096-2.332h-0.403c-0.551 5.654-1.974 21.699-6.867 143.01v84.684c1.97-18.939 4.281-41.148 4.281-41.149 0.855-2.511 0.714-5.184 0.706-7.788z"/>
+</svg>
diff --git a/sdk/tests/fixtures/sample3.svg b/sdk/tests/fixtures/sample3.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg enable-background="new 0 0 2014 1674.641" version="1.1" viewBox="0 0 2014 1674.641" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <metadata><c2pa:manifest xmlns:c2pa="http://c2pa.org/manifest">c29tZSBtb3JlIHRlc3QgZGF0YQ==</c2pa:manifest></metadata>
+ <path d="m44.883 1173.3c0 169.58 92.136 317.37 229.08 396.59v-793.53c-136.94 79.216-229.08 227.37-229.08 396.94z"/>
+ <path d="m1496.5 173.21c-338.54-181.18-640.46-181.19-978.98 0-115.34 61.726-232.1 201.31-232.1 348.66v1048h125.99v-1048c0-100.78 121.24-229.18 225.54-272.38 280.15-116.04 460-116.04 740.11 0 104.3 43.203 225.54 171.6 225.54 272.38v1048h125.99v-1048c0-147.36-116.76-286.94-232.1-348.66z"/>
+ <path d="m1740 776.38v793.53c136.94-79.214 229.08-227 229.08-396.59 1e-3 -169.57-92.133-317.73-229.08-396.94z"/>
+ <path d="m541.72 709.03h-70.645c-27.201 0-49.252 22.051-49.252 49.253v829.79c0 27.201 22.05 49.252 49.252 49.252h70.645c27.201 0 49.252-22.051 49.252-49.252v-829.79c0-27.202-22.05-49.253-49.252-49.253z"/>
+ <path d="m1542 709.03h-70.646c-27.2 0-49.252 22.051-49.252 49.253v829.79c0 27.201 22.052 49.252 49.252 49.252h70.646c27.2 0 49.252-22.051 49.252-49.252v-829.79c-1e-3 -27.202-22.052-49.253-49.252-49.253z"/>
+ <path d="m595.97 1132.8c4.322-0.219 8.643-0.184 12.965 0 0.197 4.557 3.624 24.404 4.471 95.602 0 1.438 0.298 2.849 0.728 4.225 0.691 13.2-0.668 21.337 0.868 26.298 0.386 12.904 0.053 25.834 0.158 38.746h10.467c10.735-37.493 8.785-86.788 9.941-115.01 1.07-3.103 0.614-6.426 0.868-9.634 0.615-2.041 1.597-9.992 1.753-11.519 0.368 0.377 1.113 1.131 1.481 1.508 0.079 4.827 0.295 5.098 2.007 12.833 0.342 0 1.034-9e-3 1.376-9e-3 0.421-1.771 0.877-3.515 1.315-5.277l0.657-9e-3c0.202 4.611-0.719 9.38 0.684 13.859 0.491 4.374-0.508 8.889 0.85 13.149 0.114 1.683 0.175 3.357 0.263 5.049 0.552-0.92 1.122-1.85 1.692-2.77 0.052-13.129 0.408 0.674 0.894-17.479 0.307 0.552 0.92 1.657 1.227 2.209 0.316 0.018 0.938 0.044 1.245 0.061 2.638-11.892 2.56-18.294 3.647-51.86 8.152-0.21 16.314-0.263 24.466 0.044 0.018 2.314-0.018 4.681 0.78 6.89 0.677 13.255 1.433 10.704 2.016 18.926 1.554 2.913 2.279 3.212 5.295 20.714 0.394 0 1.183 0 1.578 9e-3 0.454-9.931 0.998-1.96 0.964-13.184l0.868 9e-3c0.096 3.734-0.561 7.609 0.684 11.229 0.298 3.498-0.307 7.127 0.868 10.519 0.307 3.498-0.307 7.135 0.877 10.519 0.307 3.498-0.307 7.127 0.877 10.519 0.368 3.787-0.394 7.714 0.868 11.387 0.438 4.085-0.465 8.319 0.877 12.281 0.298 3.498-0.298 7.127 0.868 10.519 0.949 15.108 1.515 17.226 2.858 21.626 0.421-0.412 1.262-1.227 1.692-1.639-0.187-3.823 0.79-9.648 3.98-14.937 0.701 1.157 1.411 2.332 2.13 3.498 0.018 0.412 0.053 1.236 0.07 1.648 0.894 1.657 1.815 3.357 3.261 4.629 0.52-4.824 0.271-3.677 1.525-8.757 0.155-0.87 1.114-8.042 1.552-15.709 1.21-3.691 0.491-7.609 0.85-11.405 1.341-3.962 0.43-8.196 0.877-12.272 0 0 6.76-64.946 7.004-68.375 1.008-2.77 0.728-5.742 0.728-8.617 1.727 0 3.471 0 5.225-9e-3 0 3.173-0.377 6.443 0.701 9.494 0.152 3.522 0.148 41.365 1.753 46.478 0.447 4.076-0.473 8.31 0.877 12.272 0.289 3.498-0.281 7.118 0.85 10.51 0.612 11.986 0.925 9.898 2.016 17.383 0.43 0.403 1.289 1.21 1.718 1.613 0.386-0.395 1.157-1.175 1.543-1.569 1.113-3.427 2.27-6.908 2.06-10.572 0.351 0.377 1.043 1.122 1.394 1.49 0.307 0.982 0.631 1.972 0.982 2.954 9e-3 0.824 0.035 1.648 0.07 2.472 0.736 0.912 1.499 1.841 2.279 2.744 1.695-6.242 1.537-5.465 2.367-9.923 0.394-0.377 1.175-1.122 1.569-1.499-0.026 1.455-0.035 2.928-0.044 4.392 0.43 0.386 1.28 1.148 1.709 1.534 2.593-15.316 1.515-32.185 4.646-59.933h0.517c0.257 2.44 0.455 5.251 2.656 12.053 0.04 1.752 2.071 29.42 6.46 44.391 0.377-0.386 1.131-1.166 1.508-1.56 2.511-20.088 0.17 17.604 5.33-78.561l0.622 9e-3c0.403 1.569 0.842 3.13 1.28 4.699 0.395-0.377 1.175-1.148 1.569-1.534 0.153-5.981 0.067-4.293 1.201-9.362 6.539-0.281 13.079-0.289 19.627-0.018 1.093 6.281 3.062 17.853 3.831 24.948 0.403-0.377 1.219-1.14 1.631-1.525 0.133-3.59 1.852-14.417 2.919-17.453 0.377 0.377 1.14 1.122 1.516 1.499-0.034 12.962 0.097 3.675 0.947 13.657 0.421 9e-3 1.253 9e-3 1.674 9e-3 0-1.762 9e-3 -3.524 0.026-5.277h1.718c0.237 4.602-0.701 9.371 0.71 13.85 0.386 3.787-0.412 7.732 0.877 11.405 0.298 3.498-0.298 7.127 0.859 10.519 0.455 8.447 1.972 19.645 2.595 21.906-0.347 7.057 9.094 35.294 9.888 54.043 0.429-0.395 1.28-1.192 1.709-1.587 0.061-1.42 0.14-2.84 0.263-4.252 0.885-2.831 0.675-5.829 0.85-8.748 1.131-3.401 0.561-7.022 0.859-10.519 1.166-3.393 0.561-7.022 0.876-10.519 1.157-3.392 0.57-7.022 0.877-10.528 0.697-2.038 1.719-16.578 1.78-17.532 0.086-0.331 0.978-5.454 1.788-8.924 2.042-3.033 3.515-6.399 5.26-9.599 0.324 0.368 0.964 1.122 1.289 1.499 2.896 10.614 5.277 40.7 5.277 40.701 1.101 16.794 2.417 23.952 2.866 28.779 0.412 0.394 1.245 1.175 1.657 1.569 0.071-0.869 8.706-77.968 8.959-86.556 0.561-1.779 1.105-3.559 1.727-5.312 0.412 0.394 1.227 1.183 1.639 1.578 9e-3 0.57 0.017 1.701 0.017 2.27 0.403 0 1.219-9e-3 1.622-9e-3 1.24-7.203 1.236-3.14 2.121-13.342 1.017-3.41 0.5-7.013 0.798-10.51 0.666-1.929 0.745-3.971 0.85-5.987 1.981-0.017 3.98-0.017 5.987-0.061 0.738 15.014 3.226 81.388 5.452 98.881 2.794-5.344 3.327-18.194 3.313-23.046 0.526 0.92 1.061 1.841 1.604 2.779 1.005 8.595 1.291 4.766 1.955 12.124 0.412-0.386 1.236-1.166 1.657-1.56 0.07-1.131 0.167-2.253 0.29-3.375 3.077-10.573 4.023-80.044 5.303-85.767 11.203-0.333 22.415-0.307 33.618-0.026 2.519 9.333-0.185 1.64 3.165 10.651 1.008-0.035 2.025-0.07 3.059-0.105 3.706 11.86 4.661 36.592 6.136 41.086 0.237 3.743-0.228 7.618 1.324 11.159 1.832-0.973 3.532-4.164 5.768-2.27 0.311 1.769 1.139 5.743 1.674 7.74 0.096 1.99 0.052 4.006 0.342 5.987 0.955 1.779 3.182 1.078 4.839 1.35 2.515 9.18 4.175 17.629 4.865 22.318 3.942-2.424 4.424-5.052 6.049-11.527 1.105-1.981 2.621-3.682 4.252-5.251-9e-3 -1.131-9e-3 -2.262 9e-3 -3.384 0.386 0.377 1.149 1.131 1.534 1.508 0.333 1.797 0.754 3.577 1.21 5.365 0.359-0.386 1.087-1.166 1.446-1.552 0.649-2.376 1.403-4.716 2.183-7.048 0.316 0.377 0.947 1.148 1.262 1.525 1.645 7.111 0.322 3.568 2.06 21.065 0.429-0.395 1.271-1.175 1.692-1.56 0.026-1.999 0.07-3.997 0.21-5.987 1.481-4.83 0.263-9.949 0.868-14.902 1.639-6.285 0.123-12.877 0.877-19.285 1.683-7.451 0.07-15.218 0.877-22.792 1.674-7.451 0.07-15.227 0.868-22.8 1.219-3.62 0.596-7.495 0.684-11.229h4.979c2.486 11.696-0.075 13.584 1.867 20.004 0.438 4.076-0.456 8.31 0.859 12.281 0.71 13.915 2.152 15.948 2.875 21.74 0.403 0.395 1.201 1.192 1.604 1.587 2.183-6.047-0.403-11.103 3.024-22.283 0.316 0 0.964-9e-3 1.289-9e-3 0.07 1.339 1.748 15.516 3.112 20.688 3.189-6.785 3.21-47.072 3.2-54.051 9.432-0.307 18.882-0.272 28.323 0.026 0.079 1.105 0.202 2.297 0.833 3.27 1.219-0.359 1.613-2.13 1.201-3.226 0.684 0 2.042 0.017 2.726 0.017 0.193 1.701 0.421 3.401 0.912 5.049 0.745 6.11-0.754 12.422 0.877 18.417 0.622 4.944-0.64 10.081 0.885 14.902 0.438 4.076-0.464 8.31 0.859 12.272 0.587 5.786-0.649 11.747 1.157 17.392 0.342 0.359 1.017 1.087 1.35 1.455 0.973-1.806 2.025-3.576 3.296-5.207 2.899 9.94 3.548 20.233 4.146 30.129 2.753-4.301 1.495-7.983 6.198-43.26 1.07-1.122 2.156-2.227 3.261-3.331 1.546-13.203 1.281-18.245 4.804-28.139 0.719 1.183 1.42 2.384 2.139 3.594 6.049 34.545 2.934 63.483 10.432 89.607-0.114 5.067 1.359 9.993 1.052 15.06-0.079 2.016 0.035 4.059 0.719 5.978 0.359 6.487 0.088 12.991 0.131 19.496-0.026 3.813 1.113 7.53 1.017 11.361h1.639c0.973-2.533 1.026-5.233 0.991-7.898-0.096-2.682 0.728-5.26 0.842-7.907 0.149-3.305-0.272-6.627 0.342-9.897 1.052-4.874 0.254-9.879 0.719-14.806 1.306-3.962 0.421-8.188 0.859-12.264 1.069-3.103 0.631-6.426 0.885-9.634 0.71-2.034 0.736-4.199 0.763-6.329 0.535-0.92 1.087-1.841 1.657-2.753 9e-3 0.693 9e-3 2.078 9e-3 2.77 0.421 0.394 1.254 1.192 1.674 1.595 1.881-6.653 1.973-16.337 2.025-17.208 1.324-3.962 0.421-8.188 0.868-12.273 1.508-4.821 0.263-9.949 0.885-14.902 1.534-5.119 0.21-10.537 0.868-15.779 1.438-4.777 0.43-9.836 0.684-14.736l0.579 9e-3c4.58 20.94-1.764 21.194 8.003 57.654 0.035 3.743 0.315 7.477 1.14 11.133 0.771 1.227 1.56 2.446 2.375 3.664 2.187-18.959 0.397-16.093 1.254-24.413 1.525-5.119 0.228-10.537 0.876-15.779 1.525-5.119 0.219-10.537 0.876-15.779 1.482-5.155 0.351-10.607 0.728-15.884 3.781-1.853 5.985-19.261 6.241-23.449 11.896-0.298 23.809-0.289 35.704 0 0.018 2.314-0.044 4.69 0.789 6.899 1.385 15.795 1.043 17.456 1.034 20.679 0.438-0.386 1.297-1.14 1.727-1.525 0.313-2.188-1e-3 -0.959 1.21-4.953h1.157c7.495 34.264 1.885 96.567 10.537 107.57 4.66-9.896 5.508-48.83 5.75-50.764 0.339-1.036 7.792-66.458 7.846-67.323h0.719c0.315 5.479-0.815 11.133 0.701 16.48 0.219 3.217-0.175 6.522 0.833 9.634 0.096 1.35 0.175 2.709 0.263 4.076 1.113 1.78 2.262 3.55 3.349 5.356 0.07 1.85 0.202 3.717 0.806 5.487 0.237 3.208-0.21 6.539 0.877 9.643 0.438 4.076-0.456 8.301 0.868 12.264 0.64 5.233-0.666 10.659 0.868 15.779 0.666 5.531-0.693 11.238 0.877 16.656 0.617 10.342-0.612 22.781 0.868 27.175 0.123 1.99 0.167 3.989 0.21 5.987 0.429 0.394 1.28 1.183 1.7 1.578 3.526-23.595 3.006-33.165 5.417-44.234l0.526 0.026c2.215 9.395 0.757 4.828 3.042 12.623 0.377-0.377 1.14-1.14 1.517-1.516 2.464-9.857 5.395-72.486 5.408-73.354l0.71 9e-3c0.044 0.447 0.131 1.341 0.167 1.779 0.605-0.018 1.814-0.07 2.411-0.088 2.367 8.449 6.032 43.591 6.075 43.725 0.517 4.348-1.026 10.134 3.296 12.982 12.367-46.276 9.589-65.188 12.904-92.683 11.51-0.228 23.028-0.228 34.547-0.018 0.316 1.131 0.649 2.253 1.008 3.375 0 1e-3 5.242 57.934 5.242 57.935 2.528 35.686-1.458 8.139 4.62 49.809 0.412 0.395 1.227 1.175 1.639 1.56 0.117-0.869 4.225-26.319 4.576-34.135 3.883 7.547 1.348 7.067 5.198 13.465 0.955-0.395 1.964-0.64 3.016-0.745 0.631 0.833 1.245 1.701 1.832 2.604 0.465 0.044 1.394 0.131 1.859 0.175 0.631-1.087 1.262-2.165 1.92-3.243 1.331-5.87 3.349-16.952 3.752-22.327l0.71 0.018c0.324 6.355-0.877 12.877 0.666 19.11 0.64 5.242-0.666 10.659 0.885 15.788 0.281 3.498-0.272 7.109 0.842 10.511 0.105 1.525 0.175 3.059 0.263 4.593h1.683c0.03-0.868 2.321-25.659 4.655-35.354 0.359 0.368 1.069 1.113 1.42 1.481 0.018 2.183 0.026 4.409 0.763 6.496 0.184 2.928-0.088 5.943 0.894 8.766 0.257 4.097-0.504 3.463 2.165 21.81 1.771-3.524 1.604-7.469 1.744-11.299 1.411-4.55 0.307-9.362 0.868-14.026 1.604-5.996 0.149-12.299 0.877-18.409 1.63-6.285 0.114-12.877 0.868-19.285 1.587-5.698 0.158-11.711 0.868-17.532 1.56-6.399 0.324-13.114 0.693-19.645 0.429-0.377 1.28-1.14 1.709-1.525-0.026 2.393-0.105 4.856 0.728 7.153 0.193 2.919-0.096 5.943 0.885 8.757 0.456 4.076-0.473 8.319 0.877 12.281 0.447 4.076-0.473 8.31 0.877 12.264 0.368 3.796-0.386 7.723 0.868 11.405 1.036 17.235 1.642 16.652 2.972 21.792 0.43 0.438 1.297 1.306 1.727 1.736 0.815-1.21 1.63-2.419 2.446-3.638 2.923-13.017 5.323-15.63 6.426-33.039 1.186-4.545 6.856-57.745 6.873-58.619 13.114-0.333 26.237-0.298 39.351 0-0.07 25.539-0.242 25.33 0.701 27.92 0.701 5.83-0.737 11.843 0.868 17.541 0.622 4.944-0.64 10.072 0.885 14.902 0.491 4.374-0.517 8.898 0.859 13.158 0.545 12.053 0.783 6.687 1.964 16.629 1.858 1.052 3.901 1.981 5.076 3.892 10.959-1.859 6.983-29.405 13.724-64.092v-42.917c-0.174-0.927-0.341-1.93-0.488-3.102-0.544-0.947-1.069-1.885-1.578-2.823-3.578-19.889-0.465-3.857-2.901-38.229-0.302-0.87-2.483-19.751-2.542-20.46-0.701-0.894-1.359-1.788-2.051-2.665-2.62 8.857-4.816 32.1-4.97 37.869-0.885-1.192-1.736-2.411-2.56-3.62v-1.63c-0.991-1.744-1.946-3.489-2.928-5.216-0.438 0.517-1.306 1.543-1.745 2.06-0.955 0-1.885-9e-3 -2.796-9e-3 -0.71-0.71-1.394-1.42-2.069-2.13-0.827-5.187-0.922-3.934-1.999-19.093-1.271-3.673-0.465-7.609-0.877-11.405-1.201-3.384-0.535-7.013-0.877-10.51-0.824-2.7-0.728-5.54-1.166-8.293-0.21-0.359-0.622-1.078-0.833-1.438-0.622-3.147-0.456-6.373-0.631-9.555-1.056-2.973-1.705-15.787-1.762-16.656-1.704-4.872-1.165-33.567-5.321-44.54l-0.377 9e-3c-0.237 0.579-0.701 1.736-0.938 2.323-0.401 3.921-11.044 109.35-11.711 112.52l-0.71 9e-3c-0.251-7.498 9e-3 -3.82-1.201-9.651h-1.236c-1.98 7.546-1.844 6.61-2.121 9.073-0.254 0.622-0.771 1.867-1.026 2.481-1.078-0.421-2.121-0.85-3.156-1.271-3.451 12.972-2.154 26.149-5.549 58.154-5.163 0.21-10.326 0.272-15.472 9e-3 -2.367-4.585 0.263-10.046-1.674-14.788-5.048-49.685-2.675-22.48-9.038-64.474-0.368 0.368-1.096 1.104-1.464 1.473-3.2 24.397-3.796 53.375-3.866 54.244-0.902 2.444-0.812 2.981-0.71 23.546-4.628 0.21-9.257 0.202-13.877 9e-3 -0.062-1.098-0.753-10.145-3.41-19.96-1.609-6.088-2.241-34.338-5.531-45.399-0.386 0.403-1.157 1.218-1.543 1.622 0 2e-3 -2.428 17.821-2.428 17.821-1.87 7.96-2.043 7.751-2.209 12.123-0.894 1.359-1.823 2.682-2.779 3.989-1.026-0.78-2.016-1.552-3.024-2.297-4.94 16.27-1.404 25.036-3.831 32.049-1.745 9e-3 -3.48 0.018-5.198 0.07-0.149-4.059 0.605-8.249-0.693-12.176-0.596-4.664 0.579-9.494-0.877-14.026-0.543-4.365 0.509-8.897-0.868-13.149-0.245-2.98-0.219-5.97-0.184-8.959h-0.798c-0.097 1.525-0.175 3.051-0.281 4.585-1.043 3.042-0.675 6.285-0.666 9.441h-0.885c-0.454-35.146-2.288-72.71-9.792-140.65-0.693-1.175-1.359-2.332-2.043-3.489-1.043 1.411-2.042 2.84-2.954 4.33-0.744 4.308-0.526 3.106-1.56 7.153-3.447 12.335-8.898 66.727-8.898 66.727-0.359 3.498 0.307 7.135-0.877 10.519-2.297 22.912 0.443 23.804-2.604 35.932-0.184 2.639-0.044 5.347-0.894 7.89-0.228 3.051-0.158 6.101-0.368 9.152-1.499 4.83-0.237 9.949-0.877 14.902-1.569 5.409-0.167 11.124-0.877 16.647-0.517 1.683-0.728 3.427-0.912 5.172-6.645 0.202-13.289 0.254-19.925-0.044 0.064-10.529-0.526-4.443-0.973-12.334l-0.701 9e-3c-0.965 7.442-1.078 2.9-0.973 12.272-1.183-9e-3 -2.349-9e-3 -3.506 0 0.078-9.359-1.521-16.3-2.042-19.811-3.15 1.808-4.963 16.633-5.119 19.899-5.987 0.254-11.974 0.228-17.953-0.035-2.68-8.301 0.155-12.807-1.885-20.022-0.649-4.944 0.631-10.072-0.877-14.902-0.28-3.629-0.088-7.276-0.35-10.905-0.735-2.102-1.517-17.095-2.06-19.715-1.139-4.529-1.144-4.594-1.289-6.811-0.833-1.219-1.674-2.428-2.533-3.62-0.026-0.394-0.088-1.192-0.114-1.587-1.131-2.095-2.358-4.129-3.813-6.005-0.894 0.955-1.762 1.911-2.63 2.875-0.491 0-1.473-9e-3 -1.964-9e-3 -0.281 0.579-0.833 1.744-1.113 2.323-0.044 2.393 0.018 4.839-0.78 7.127-0.517 8.012 0.14 16.051-0.359 24.054-1.709 4.69 0.307 9.827-1.403 14.517-0.175 2.288-0.202 4.585-0.193 6.881-0.43 0.377-1.297 1.131-1.727 1.516 9e-3 -2.682 0.245-5.453-0.71-8.012-0.596-4.655 0.57-9.485-0.877-14.026-0.438-5.382 0.079-10.782-0.359-16.165-1.587-5.698-0.149-11.712-0.876-17.532-1.394-4.251-0.333-8.784-0.868-13.149-0.903-2.358-0.754-4.909-0.728-7.381-0.429-0.368-1.297-1.122-1.727-1.49-0.272 4.699 0.71 9.564-0.701 14.131-0.421 3.787 0.385 7.723-0.877 11.396-0.552 4.366 0.526 8.898-0.877 13.149-0.368 4.506 0.018 9.029-0.35 13.535-1.438 4.769-0.421 9.818-0.701 14.709h-0.868c-9e-3 -2.867 0.289-5.829-0.71-8.573-0.245-3.34-0.123-6.688-0.351-10.028-1.349-3.85-2.513-33.865-5.347-39.938-4.096 0.324-4.685-1.352-7.083-16.191-0.859-3.445-0.482-7.022-0.675-10.528-5.99-19.969-5.779-31.074-8.74-43.006-0.412 0.377-1.236 1.14-1.648 1.516-4.042 68.84-13.256 161-13.438 161.87-6.241 0.263-12.483 0.281-18.724-0.018-2.084-7.236 0.044-0.063-2.472-11.072-1.704 1.184-2.333 2.852-3.27 11.072-6.54 0.281-13.088 0.272-19.627 0.035-0.289-0.605-0.859-1.815-1.148-2.419-0.438-5.567 0.754-11.308-0.745-16.752-0.657-4.953 0.623-10.081-0.885-14.902-0.316-3.918-0.044-7.863-0.351-11.781-1.175-3.384-0.543-7.013-0.868-10.519-1.201-3.375-0.543-7.013-0.877-10.519-1.105-3.094-0.622-6.426-0.885-9.634-0.991-2.823-0.675-5.838-0.885-8.766-0.64-1.823-0.737-3.752-0.807-5.654-0.412-0.377-1.236-1.122-1.648-1.49-0.023 1.517 0.6 9.192-2.016 20.118-2.092-3.749-2.373-11.288-2.568-14.727-0.728-2.095-0.719-4.33-0.728-6.513-0.412-0.377-1.236-1.122-1.648-1.49-0.017 2.384 0.105 4.839-0.745 7.118-1.625 13.049-1.923 57.246-2.113 60.871-1.254 3.524 9e-3 7.513-2.086 10.808-3.055-13.191-3.982-41.883-4.041-42.752-0.195-0.562-2.542-23.345-2.577-24.352h-0.684c-0.074 0.87-1.059 13.181-1.639 14.709-0.324 3.927-0.052 7.863-0.359 11.79-1.806 5.26 0.403 10.993-1.403 16.261-0.333 4.444-0.14 8.906-0.175 13.359l-0.85-0.026c-9e-3 -2.402-0.035-4.804-0.21-7.197-1.955-6.715 0.561-13.929-1.394-20.644-0.421-5.093 0.061-10.212-0.359-15.297-1.534-5.119-0.202-10.546-0.877-15.779-1.341-3.962-0.386-8.196-0.868-12.272-1.473-4.856-0.368-10.02-0.745-15.007-0.281-0.587-0.85-1.753-1.131-2.332l-0.342-0.026c-2.383 6.384-1.846 9.872-4.725 15.043-1.087-0.053-2.156-0.097-3.217-0.14-0.297 2.566-0.568 6.574-3.226 12.614-1.078-0.456-2.139-0.912-3.173-1.385-0.903 1.043-1.753 2.121-2.568 3.226-1.541 14.346-1.612 25.276-6.522 59.863-0.64 1.394-1.613 2.568-2.902 3.384-0.643-9.977-2.268-14.232-2.901-20.381-0.395-0.368-1.192-1.113-1.587-1.482-3.995 25.967-3.614 31.519-5.628 38.86l-0.526 9e-3c-5.004-29.024-4.245-32.066-6.592-40.692-1.964 0.307-3.165 1.56-3.463 3.506-1.455 1.648-2.858 3.34-4.068 5.172-0.113 0.869-5.441 26.261-5.242 38.194-7.206 0.316-14.42 0.281-21.626 0-1.59-6.96-1.588-22.528-4.032-40.043-2.449 4.247-1.567 9.163-3.401 17.199h-0.622c-0.096-1.999-0.167-4.024-0.798-5.943-0.193-2.463-0.228-4.935-0.403-7.398-0.214-0.596-2.541-21.185-2.551-21.389-0.342-0.368-1.034-1.096-1.376-1.464-2.624 7.092-1.98 15.125-3.936 40.762-0.943 2.679-1.212 14.307-2.463 18.251l-0.579-9e-3c-0.263-0.587-0.797-1.762-1.069-2.349-0.044-2.393 0.018-4.839-0.798-7.127-0.482-4.076 0.456-8.31-0.877-12.264-0.543-4.374 0.526-8.906-0.876-13.149-0.272-3.629-0.088-7.276-0.351-10.905-2.209-6.347 1.236-13.623-2.226-19.618-1.659 10.114-0.922 6.007-1.289 12.115-1.324 3.962-0.395 8.196-0.868 12.272-1.648 4.401 0.228 9.24-1.394 13.64-0.263 3.27-0.202 6.557-0.184 9.835l-0.859 9e-3c0-2.7 9e-3 -5.409-0.202-8.091 0 0-1.894-14.814-3.559-26.64-1.025 2.161-2.494 6.353-3.419 11.457-0.71 1.201-1.42 2.411-2.148 3.603-3.406-7.194-4.001-15.55-4.295-17.699-5.625-12.505-4.562-25.342-7.67-33.671h-0.403c-3.503 9.782 0.435 1.884-6.005 38.317-0.184 0.359-0.552 1.087-0.728 1.446-0.324 1.727-0.57 3.463-0.841 5.198-0.947 3.717-0.395 7.583-0.719 11.361-1.289 3.664-0.473 7.6-0.885 11.396-0.594 1.9-1.634 10.122-1.718 10.993-1.122 0.745-2.244 1.473-3.349 2.218-0.386 5.626 0.13 1.269-1.175 7.714-3.953 0.175-7.907 0.175-11.852 0.044-0.105-2.051-0.158-4.129-0.842-6.075-0.412-3.796 0.395-7.732-0.885-11.396-0.333-3.498 0.307-7.127-0.859-10.51-0.491-6.548 0.123-13.123-0.368-19.671 0 0-5.516-54.514-8.845-67.306h-1.473c0.015 4.792-0.944 14.581-1.595 16.463-0.351 3.498 0.307 7.136-0.877 10.519-0.491 4.076 0.465 8.31-0.877 12.272-0.491 4.076 0.456 8.31-0.877 12.272-0.28 3.629-0.079 7.276-0.35 10.905-1.262 3.673-0.465 7.609-0.868 11.396-1.289 3.664-0.473 7.6-0.877 11.396-1.289 3.664-0.482 7.6-0.877 11.387-1.429 4.243-0.351 8.784-0.894 13.149-0.517 1.683-0.728 3.427-0.912 5.163-3.629 0.123-7.249 0.123-10.861 9e-3 -0.359-1.131-0.719-2.253-1.078-3.357-0.554-15.475 0.663-21.354-0.815-25.474-0.498-7.528-0.096-59.18-5.654-78.719-6.429-1.051-3.223-11.691-7.057-21.424l-0.438 0.018c-4.443 43.319-2.365 60.076-3.857 78.211-1.63 4.401 0.21 9.231-1.385 13.64-0.184 2.463-0.219 4.935-0.395 7.399-0.666 2.007-0.736 4.138-0.824 6.241-0.245 0.64-0.745 1.928-0.99 2.568-0.351-0.359-1.061-1.096-1.411-1.455-0.134-6.652-0.225-0.761-1.166-13-1.403-3.839 0.079-8.056-1.359-11.887-0.342-4.436-0.149-8.897-0.184-13.342h-1.622c-0.042 0.869-1.142 13.049-1.709 14.709-0.246 3.34-0.114 6.688-0.351 10.028-1.402 4.243-0.342 8.775-0.877 13.14-1.473 4.541-0.281 9.371-0.885 14.026-0.999 2.761-0.728 5.724-0.71 8.599-0.438-9e-3 -1.297-9e-3 -1.736-0.018-0.091-1.768-2.814-61.555-2.814-61.555-0.038-0.109-5.456-50.812-6.908-56.26-0.359 0.386-1.078 1.148-1.446 1.534-1.054 4.726-0.995 2.579-1.157 9.371-0.298-0.026-0.885-0.07-1.183-0.096-0.938-1.324-1.928-2.612-2.919-3.892-2.823 14.314-4.439 36.549-5.97 44.873-0.184 0.359-0.552 1.078-0.736 1.438-0.281 1.359-0.526 2.735-0.754 4.103h-0.657c0.028-7.733-1.59-17.163-2.849-24.896-0.517 0.877-1.026 1.762-1.516 2.647-0.018 2.972 0.315 6.049-0.71 8.906-0.605 4.655 0.561 9.485-0.876 14.026-0.754 6.11 0.71 12.404-0.868 18.409-0.131 1.63-0.202 3.279-0.254 4.918-0.544 0.938-1.087 1.876-1.613 2.814-0.987 9.186-0.327-1.6-1.14 11.931-1.245 3.673-0.473 7.6-0.859 11.396-1.201 3.34-0.657 6.934-0.701 10.397-6.732 0.254-13.456 0.298-20.179 9e-3 -0.044-3.471 0.473-7.057-0.684-10.405-0.649-4.944 0.622-10.072-0.885-14.894-0.307-3.927-0.052-7.863-0.351-11.782-1.613-5.996-0.149-12.316-0.868-18.435-1.339-5.048-0.518-5.014-3.603-14.981-1.154-4.75-0.731-4.479-2.621-9.59-0.351 0.368-1.069 1.105-1.429 1.473-3.59 28.719-2.637 24.356-5.26 29.112-0.601 4.918-1.642 5.918-2.831 13-0.71 1.183-1.403 2.358-2.113 3.533-0.281-0.684-0.833-2.051-1.113-2.735-0.247-4.495-0.408-4.871-1.166-8.196-0.386 0-1.175 0-1.569-9e-3 -0.044 1.359-0.105 2.717-0.158 4.076-3.067-6.436-0.91-7.799-1.823-18.286-1.446-4.541-0.272-9.371-0.868-14.026-1.026-2.849-0.71-5.908-0.745-8.871-0.289-0.587-0.868-1.744-1.166-2.332h-0.473c-0.83 6.893-1.628 7.466-1.876 15.209-0.421-0.377-1.262-1.131-1.683-1.499-9e-3 -2.306-0.035-4.602-0.193-6.89-1.183-3.384-0.535-7.013-0.877-10.51-1.192-3.384-0.535-7.022-0.868-10.519-1.201-3.384-0.543-7.022-0.885-10.519 0 0-3.515-26.665-3.515-26.666-0.324-0.368-0.982-1.096-1.306-1.455-2.09 10.391-0.875 47.421-5.628 75.94-0.395-0.377-1.175-1.122-1.56-1.499-2.507-9.819-2.672-28.963-2.717-29.831-0.561-0.894-1.113-1.788-1.657-2.682-0.07 2.13-0.053 4.313-0.806 6.347-0.412 3.787 0.395 7.723-0.859 11.396-0.71 5.531 0.675 11.247-0.877 16.656-0.473 5.961 0.096 11.957-0.368 17.918-1.613 5.996-0.123 12.299-0.877 18.409-1.446 4.532-0.281 9.362-0.868 14.017-1.096 3.051-0.701 6.32-0.701 9.485h-5.251c-0.333-5.488 0.78-11.133-0.701-16.489-0.719-5.531 0.692-11.256-0.885-16.656-0.543-4.365 0.508-8.898-0.868-13.149-0.219-3.051-0.158-6.11-0.368-9.152-0.622-2.007-0.771-4.103-0.947-6.171-3.738-17.029-1.37-12.706-7.022-45.645-4.711-15.28-4.495-46.356-6.978-58.128-0.324-0.359-0.964-1.096-1.28-1.464-0.28 1.481-0.544 2.972-0.85 4.444-0.085 0.868-3.823 36.378-5.198 42.901-1.571 7.218-1.593 19.441-2.788 22.87-0.351 3.498 0.307 7.127-0.877 10.51-0.491 4.076 0.465 8.31-0.877 12.272-0.596 4.655 0.579 9.485-0.877 14.026-0.342 4.216-9e-3 8.451-0.351 12.658-1.464 4.541-0.272 9.371-0.885 14.026-0.561 1.727-0.719 3.533-0.868 5.33-0.368-0.351-1.105-1.052-1.473-1.411-3.32 19.616-1.334 18.132-1.867 29.296-13.421 0.193-26.842 0.28-40.254-0.018-0.494-1.729-3.729-21.553-4.655-33.583-1.297-3.559-0.026-7.46-1.359-11.01-0.193-2.761-0.184-5.523-0.368-8.275-1.578-5.707-0.14-11.711-0.877-17.532-0.529-1.612-1.765-12.284-1.858-13.158-1.105-4.006-0.342-8.188-0.763-12.264-1.657-6.566-0.105-13.465-0.885-20.162-1.639-6.566-0.105-13.465-0.877-20.162-1.613-5.987-0.131-12.29-0.877-18.4-1.455-4.541-0.28-9.371-0.868-14.026-0.85-2.288-0.763-4.742-0.789-7.127-0.281-0.587-0.824-1.753-1.096-2.332h-0.403c-0.551 5.654-1.974 21.699-6.867 143.01v84.684c1.97-18.939 4.281-41.148 4.281-41.149 0.855-2.511 0.714-5.184 0.706-7.788z"/>
+</svg>
diff --git a/sdk/tests/fixtures/sample4.svg b/sdk/tests/fixtures/sample4.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg enable-background="new 0 0 2014 1674.641" version="1.1" viewBox="0 0 2014 1674.641" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <metadata>
+ <c2pa:manifest xmlns:c2pa="http://c2pa.org/manifest">c29tZSB0ZXN0IGRhdGE=</c2pa:manifest>
+ </metadata>
+ <path d="m44.883 1173.3c0 169.58 92.136 317.37 229.08 396.59v-793.53c-136.94 79.216-229.08 227.37-229.08 396.94z"/>
+ <path d="m1496.5 173.21c-338.54-181.18-640.46-181.19-978.98 0-115.34 61.726-232.1 201.31-232.1 348.66v1048h125.99v-1048c0-100.78 121.24-229.18 225.54-272.38 280.15-116.04 460-116.04 740.11 0 104.3 43.203 225.54 171.6 225.54 272.38v1048h125.99v-1048c0-147.36-116.76-286.94-232.1-348.66z"/>
+ <path d="m1740 776.38v793.53c136.94-79.214 229.08-227 229.08-396.59 1e-3 -169.57-92.133-317.73-229.08-396.94z"/>
+ <path d="m541.72 709.03h-70.645c-27.201 0-49.252 22.051-49.252 49.253v829.79c0 27.201 22.05 49.252 49.252 49.252h70.645c27.201 0 49.252-22.051 49.252-49.252v-829.79c0-27.202-22.05-49.253-49.252-49.253z"/>
+ <path d="m1542 709.03h-70.646c-27.2 0-49.252 22.051-49.252 49.253v829.79c0 27.201 22.052 49.252 49.252 49.252h70.646c27.2 0 49.252-22.051 49.252-49.252v-829.79c-1e-3 -27.202-22.052-49.253-49.252-49.253z"/>
+ <path d="m595.97 1132.8c4.322-0.219 8.643-0.184 12.965 0 0.197 4.557 3.624 24.404 4.471 95.602 0 1.438 0.298 2.849 0.728 4.225 0.691 13.2-0.668 21.337 0.868 26.298 0.386 12.904 0.053 25.834 0.158 38.746h10.467c10.735-37.493 8.785-86.788 9.941-115.01 1.07-3.103 0.614-6.426 0.868-9.634 0.615-2.041 1.597-9.992 1.753-11.519 0.368 0.377 1.113 1.131 1.481 1.508 0.079 4.827 0.295 5.098 2.007 12.833 0.342 0 1.034-9e-3 1.376-9e-3 0.421-1.771 0.877-3.515 1.315-5.277l0.657-9e-3c0.202 4.611-0.719 9.38 0.684 13.859 0.491 4.374-0.508 8.889 0.85 13.149 0.114 1.683 0.175 3.357 0.263 5.049 0.552-0.92 1.122-1.85 1.692-2.77 0.052-13.129 0.408 0.674 0.894-17.479 0.307 0.552 0.92 1.657 1.227 2.209 0.316 0.018 0.938 0.044 1.245 0.061 2.638-11.892 2.56-18.294 3.647-51.86 8.152-0.21 16.314-0.263 24.466 0.044 0.018 2.314-0.018 4.681 0.78 6.89 0.677 13.255 1.433 10.704 2.016 18.926 1.554 2.913 2.279 3.212 5.295 20.714 0.394 0 1.183 0 1.578 9e-3 0.454-9.931 0.998-1.96 0.964-13.184l0.868 9e-3c0.096 3.734-0.561 7.609 0.684 11.229 0.298 3.498-0.307 7.127 0.868 10.519 0.307 3.498-0.307 7.135 0.877 10.519 0.307 3.498-0.307 7.127 0.877 10.519 0.368 3.787-0.394 7.714 0.868 11.387 0.438 4.085-0.465 8.319 0.877 12.281 0.298 3.498-0.298 7.127 0.868 10.519 0.949 15.108 1.515 17.226 2.858 21.626 0.421-0.412 1.262-1.227 1.692-1.639-0.187-3.823 0.79-9.648 3.98-14.937 0.701 1.157 1.411 2.332 2.13 3.498 0.018 0.412 0.053 1.236 0.07 1.648 0.894 1.657 1.815 3.357 3.261 4.629 0.52-4.824 0.271-3.677 1.525-8.757 0.155-0.87 1.114-8.042 1.552-15.709 1.21-3.691 0.491-7.609 0.85-11.405 1.341-3.962 0.43-8.196 0.877-12.272 0 0 6.76-64.946 7.004-68.375 1.008-2.77 0.728-5.742 0.728-8.617 1.727 0 3.471 0 5.225-9e-3 0 3.173-0.377 6.443 0.701 9.494 0.152 3.522 0.148 41.365 1.753 46.478 0.447 4.076-0.473 8.31 0.877 12.272 0.289 3.498-0.281 7.118 0.85 10.51 0.612 11.986 0.925 9.898 2.016 17.383 0.43 0.403 1.289 1.21 1.718 1.613 0.386-0.395 1.157-1.175 1.543-1.569 1.113-3.427 2.27-6.908 2.06-10.572 0.351 0.377 1.043 1.122 1.394 1.49 0.307 0.982 0.631 1.972 0.982 2.954 9e-3 0.824 0.035 1.648 0.07 2.472 0.736 0.912 1.499 1.841 2.279 2.744 1.695-6.242 1.537-5.465 2.367-9.923 0.394-0.377 1.175-1.122 1.569-1.499-0.026 1.455-0.035 2.928-0.044 4.392 0.43 0.386 1.28 1.148 1.709 1.534 2.593-15.316 1.515-32.185 4.646-59.933h0.517c0.257 2.44 0.455 5.251 2.656 12.053 0.04 1.752 2.071 29.42 6.46 44.391 0.377-0.386 1.131-1.166 1.508-1.56 2.511-20.088 0.17 17.604 5.33-78.561l0.622 9e-3c0.403 1.569 0.842 3.13 1.28 4.699 0.395-0.377 1.175-1.148 1.569-1.534 0.153-5.981 0.067-4.293 1.201-9.362 6.539-0.281 13.079-0.289 19.627-0.018 1.093 6.281 3.062 17.853 3.831 24.948 0.403-0.377 1.219-1.14 1.631-1.525 0.133-3.59 1.852-14.417 2.919-17.453 0.377 0.377 1.14 1.122 1.516 1.499-0.034 12.962 0.097 3.675 0.947 13.657 0.421 9e-3 1.253 9e-3 1.674 9e-3 0-1.762 9e-3 -3.524 0.026-5.277h1.718c0.237 4.602-0.701 9.371 0.71 13.85 0.386 3.787-0.412 7.732 0.877 11.405 0.298 3.498-0.298 7.127 0.859 10.519 0.455 8.447 1.972 19.645 2.595 21.906-0.347 7.057 9.094 35.294 9.888 54.043 0.429-0.395 1.28-1.192 1.709-1.587 0.061-1.42 0.14-2.84 0.263-4.252 0.885-2.831 0.675-5.829 0.85-8.748 1.131-3.401 0.561-7.022 0.859-10.519 1.166-3.393 0.561-7.022 0.876-10.519 1.157-3.392 0.57-7.022 0.877-10.528 0.697-2.038 1.719-16.578 1.78-17.532 0.086-0.331 0.978-5.454 1.788-8.924 2.042-3.033 3.515-6.399 5.26-9.599 0.324 0.368 0.964 1.122 1.289 1.499 2.896 10.614 5.277 40.7 5.277 40.701 1.101 16.794 2.417 23.952 2.866 28.779 0.412 0.394 1.245 1.175 1.657 1.569 0.071-0.869 8.706-77.968 8.959-86.556 0.561-1.779 1.105-3.559 1.727-5.312 0.412 0.394 1.227 1.183 1.639 1.578 9e-3 0.57 0.017 1.701 0.017 2.27 0.403 0 1.219-9e-3 1.622-9e-3 1.24-7.203 1.236-3.14 2.121-13.342 1.017-3.41 0.5-7.013 0.798-10.51 0.666-1.929 0.745-3.971 0.85-5.987 1.981-0.017 3.98-0.017 5.987-0.061 0.738 15.014 3.226 81.388 5.452 98.881 2.794-5.344 3.327-18.194 3.313-23.046 0.526 0.92 1.061 1.841 1.604 2.779 1.005 8.595 1.291 4.766 1.955 12.124 0.412-0.386 1.236-1.166 1.657-1.56 0.07-1.131 0.167-2.253 0.29-3.375 3.077-10.573 4.023-80.044 5.303-85.767 11.203-0.333 22.415-0.307 33.618-0.026 2.519 9.333-0.185 1.64 3.165 10.651 1.008-0.035 2.025-0.07 3.059-0.105 3.706 11.86 4.661 36.592 6.136 41.086 0.237 3.743-0.228 7.618 1.324 11.159 1.832-0.973 3.532-4.164 5.768-2.27 0.311 1.769 1.139 5.743 1.674 7.74 0.096 1.99 0.052 4.006 0.342 5.987 0.955 1.779 3.182 1.078 4.839 1.35 2.515 9.18 4.175 17.629 4.865 22.318 3.942-2.424 4.424-5.052 6.049-11.527 1.105-1.981 2.621-3.682 4.252-5.251-9e-3 -1.131-9e-3 -2.262 9e-3 -3.384 0.386 0.377 1.149 1.131 1.534 1.508 0.333 1.797 0.754 3.577 1.21 5.365 0.359-0.386 1.087-1.166 1.446-1.552 0.649-2.376 1.403-4.716 2.183-7.048 0.316 0.377 0.947 1.148 1.262 1.525 1.645 7.111 0.322 3.568 2.06 21.065 0.429-0.395 1.271-1.175 1.692-1.56 0.026-1.999 0.07-3.997 0.21-5.987 1.481-4.83 0.263-9.949 0.868-14.902 1.639-6.285 0.123-12.877 0.877-19.285 1.683-7.451 0.07-15.218 0.877-22.792 1.674-7.451 0.07-15.227 0.868-22.8 1.219-3.62 0.596-7.495 0.684-11.229h4.979c2.486 11.696-0.075 13.584 1.867 20.004 0.438 4.076-0.456 8.31 0.859 12.281 0.71 13.915 2.152 15.948 2.875 21.74 0.403 0.395 1.201 1.192 1.604 1.587 2.183-6.047-0.403-11.103 3.024-22.283 0.316 0 0.964-9e-3 1.289-9e-3 0.07 1.339 1.748 15.516 3.112 20.688 3.189-6.785 3.21-47.072 3.2-54.051 9.432-0.307 18.882-0.272 28.323 0.026 0.079 1.105 0.202 2.297 0.833 3.27 1.219-0.359 1.613-2.13 1.201-3.226 0.684 0 2.042 0.017 2.726 0.017 0.193 1.701 0.421 3.401 0.912 5.049 0.745 6.11-0.754 12.422 0.877 18.417 0.622 4.944-0.64 10.081 0.885 14.902 0.438 4.076-0.464 8.31 0.859 12.272 0.587 5.786-0.649 11.747 1.157 17.392 0.342 0.359 1.017 1.087 1.35 1.455 0.973-1.806 2.025-3.576 3.296-5.207 2.899 9.94 3.548 20.233 4.146 30.129 2.753-4.301 1.495-7.983 6.198-43.26 1.07-1.122 2.156-2.227 3.261-3.331 1.546-13.203 1.281-18.245 4.804-28.139 0.719 1.183 1.42 2.384 2.139 3.594 6.049 34.545 2.934 63.483 10.432 89.607-0.114 5.067 1.359 9.993 1.052 15.06-0.079 2.016 0.035 4.059 0.719 5.978 0.359 6.487 0.088 12.991 0.131 19.496-0.026 3.813 1.113 7.53 1.017 11.361h1.639c0.973-2.533 1.026-5.233 0.991-7.898-0.096-2.682 0.728-5.26 0.842-7.907 0.149-3.305-0.272-6.627 0.342-9.897 1.052-4.874 0.254-9.879 0.719-14.806 1.306-3.962 0.421-8.188 0.859-12.264 1.069-3.103 0.631-6.426 0.885-9.634 0.71-2.034 0.736-4.199 0.763-6.329 0.535-0.92 1.087-1.841 1.657-2.753 9e-3 0.693 9e-3 2.078 9e-3 2.77 0.421 0.394 1.254 1.192 1.674 1.595 1.881-6.653 1.973-16.337 2.025-17.208 1.324-3.962 0.421-8.188 0.868-12.273 1.508-4.821 0.263-9.949 0.885-14.902 1.534-5.119 0.21-10.537 0.868-15.779 1.438-4.777 0.43-9.836 0.684-14.736l0.579 9e-3c4.58 20.94-1.764 21.194 8.003 57.654 0.035 3.743 0.315 7.477 1.14 11.133 0.771 1.227 1.56 2.446 2.375 3.664 2.187-18.959 0.397-16.093 1.254-24.413 1.525-5.119 0.228-10.537 0.876-15.779 1.525-5.119 0.219-10.537 0.876-15.779 1.482-5.155 0.351-10.607 0.728-15.884 3.781-1.853 5.985-19.261 6.241-23.449 11.896-0.298 23.809-0.289 35.704 0 0.018 2.314-0.044 4.69 0.789 6.899 1.385 15.795 1.043 17.456 1.034 20.679 0.438-0.386 1.297-1.14 1.727-1.525 0.313-2.188-1e-3 -0.959 1.21-4.953h1.157c7.495 34.264 1.885 96.567 10.537 107.57 4.66-9.896 5.508-48.83 5.75-50.764 0.339-1.036 7.792-66.458 7.846-67.323h0.719c0.315 5.479-0.815 11.133 0.701 16.48 0.219 3.217-0.175 6.522 0.833 9.634 0.096 1.35 0.175 2.709 0.263 4.076 1.113 1.78 2.262 3.55 3.349 5.356 0.07 1.85 0.202 3.717 0.806 5.487 0.237 3.208-0.21 6.539 0.877 9.643 0.438 4.076-0.456 8.301 0.868 12.264 0.64 5.233-0.666 10.659 0.868 15.779 0.666 5.531-0.693 11.238 0.877 16.656 0.617 10.342-0.612 22.781 0.868 27.175 0.123 1.99 0.167 3.989 0.21 5.987 0.429 0.394 1.28 1.183 1.7 1.578 3.526-23.595 3.006-33.165 5.417-44.234l0.526 0.026c2.215 9.395 0.757 4.828 3.042 12.623 0.377-0.377 1.14-1.14 1.517-1.516 2.464-9.857 5.395-72.486 5.408-73.354l0.71 9e-3c0.044 0.447 0.131 1.341 0.167 1.779 0.605-0.018 1.814-0.07 2.411-0.088 2.367 8.449 6.032 43.591 6.075 43.725 0.517 4.348-1.026 10.134 3.296 12.982 12.367-46.276 9.589-65.188 12.904-92.683 11.51-0.228 23.028-0.228 34.547-0.018 0.316 1.131 0.649 2.253 1.008 3.375 0 1e-3 5.242 57.934 5.242 57.935 2.528 35.686-1.458 8.139 4.62 49.809 0.412 0.395 1.227 1.175 1.639 1.56 0.117-0.869 4.225-26.319 4.576-34.135 3.883 7.547 1.348 7.067 5.198 13.465 0.955-0.395 1.964-0.64 3.016-0.745 0.631 0.833 1.245 1.701 1.832 2.604 0.465 0.044 1.394 0.131 1.859 0.175 0.631-1.087 1.262-2.165 1.92-3.243 1.331-5.87 3.349-16.952 3.752-22.327l0.71 0.018c0.324 6.355-0.877 12.877 0.666 19.11 0.64 5.242-0.666 10.659 0.885 15.788 0.281 3.498-0.272 7.109 0.842 10.511 0.105 1.525 0.175 3.059 0.263 4.593h1.683c0.03-0.868 2.321-25.659 4.655-35.354 0.359 0.368 1.069 1.113 1.42 1.481 0.018 2.183 0.026 4.409 0.763 6.496 0.184 2.928-0.088 5.943 0.894 8.766 0.257 4.097-0.504 3.463 2.165 21.81 1.771-3.524 1.604-7.469 1.744-11.299 1.411-4.55 0.307-9.362 0.868-14.026 1.604-5.996 0.149-12.299 0.877-18.409 1.63-6.285 0.114-12.877 0.868-19.285 1.587-5.698 0.158-11.711 0.868-17.532 1.56-6.399 0.324-13.114 0.693-19.645 0.429-0.377 1.28-1.14 1.709-1.525-0.026 2.393-0.105 4.856 0.728 7.153 0.193 2.919-0.096 5.943 0.885 8.757 0.456 4.076-0.473 8.319 0.877 12.281 0.447 4.076-0.473 8.31 0.877 12.264 0.368 3.796-0.386 7.723 0.868 11.405 1.036 17.235 1.642 16.652 2.972 21.792 0.43 0.438 1.297 1.306 1.727 1.736 0.815-1.21 1.63-2.419 2.446-3.638 2.923-13.017 5.323-15.63 6.426-33.039 1.186-4.545 6.856-57.745 6.873-58.619 13.114-0.333 26.237-0.298 39.351 0-0.07 25.539-0.242 25.33 0.701 27.92 0.701 5.83-0.737 11.843 0.868 17.541 0.622 4.944-0.64 10.072 0.885 14.902 0.491 4.374-0.517 8.898 0.859 13.158 0.545 12.053 0.783 6.687 1.964 16.629 1.858 1.052 3.901 1.981 5.076 3.892 10.959-1.859 6.983-29.405 13.724-64.092v-42.917c-0.174-0.927-0.341-1.93-0.488-3.102-0.544-0.947-1.069-1.885-1.578-2.823-3.578-19.889-0.465-3.857-2.901-38.229-0.302-0.87-2.483-19.751-2.542-20.46-0.701-0.894-1.359-1.788-2.051-2.665-2.62 8.857-4.816 32.1-4.97 37.869-0.885-1.192-1.736-2.411-2.56-3.62v-1.63c-0.991-1.744-1.946-3.489-2.928-5.216-0.438 0.517-1.306 1.543-1.745 2.06-0.955 0-1.885-9e-3 -2.796-9e-3 -0.71-0.71-1.394-1.42-2.069-2.13-0.827-5.187-0.922-3.934-1.999-19.093-1.271-3.673-0.465-7.609-0.877-11.405-1.201-3.384-0.535-7.013-0.877-10.51-0.824-2.7-0.728-5.54-1.166-8.293-0.21-0.359-0.622-1.078-0.833-1.438-0.622-3.147-0.456-6.373-0.631-9.555-1.056-2.973-1.705-15.787-1.762-16.656-1.704-4.872-1.165-33.567-5.321-44.54l-0.377 9e-3c-0.237 0.579-0.701 1.736-0.938 2.323-0.401 3.921-11.044 109.35-11.711 112.52l-0.71 9e-3c-0.251-7.498 9e-3 -3.82-1.201-9.651h-1.236c-1.98 7.546-1.844 6.61-2.121 9.073-0.254 0.622-0.771 1.867-1.026 2.481-1.078-0.421-2.121-0.85-3.156-1.271-3.451 12.972-2.154 26.149-5.549 58.154-5.163 0.21-10.326 0.272-15.472 9e-3 -2.367-4.585 0.263-10.046-1.674-14.788-5.048-49.685-2.675-22.48-9.038-64.474-0.368 0.368-1.096 1.104-1.464 1.473-3.2 24.397-3.796 53.375-3.866 54.244-0.902 2.444-0.812 2.981-0.71 23.546-4.628 0.21-9.257 0.202-13.877 9e-3 -0.062-1.098-0.753-10.145-3.41-19.96-1.609-6.088-2.241-34.338-5.531-45.399-0.386 0.403-1.157 1.218-1.543 1.622 0 2e-3 -2.428 17.821-2.428 17.821-1.87 7.96-2.043 7.751-2.209 12.123-0.894 1.359-1.823 2.682-2.779 3.989-1.026-0.78-2.016-1.552-3.024-2.297-4.94 16.27-1.404 25.036-3.831 32.049-1.745 9e-3 -3.48 0.018-5.198 0.07-0.149-4.059 0.605-8.249-0.693-12.176-0.596-4.664 0.579-9.494-0.877-14.026-0.543-4.365 0.509-8.897-0.868-13.149-0.245-2.98-0.219-5.97-0.184-8.959h-0.798c-0.097 1.525-0.175 3.051-0.281 4.585-1.043 3.042-0.675 6.285-0.666 9.441h-0.885c-0.454-35.146-2.288-72.71-9.792-140.65-0.693-1.175-1.359-2.332-2.043-3.489-1.043 1.411-2.042 2.84-2.954 4.33-0.744 4.308-0.526 3.106-1.56 7.153-3.447 12.335-8.898 66.727-8.898 66.727-0.359 3.498 0.307 7.135-0.877 10.519-2.297 22.912 0.443 23.804-2.604 35.932-0.184 2.639-0.044 5.347-0.894 7.89-0.228 3.051-0.158 6.101-0.368 9.152-1.499 4.83-0.237 9.949-0.877 14.902-1.569 5.409-0.167 11.124-0.877 16.647-0.517 1.683-0.728 3.427-0.912 5.172-6.645 0.202-13.289 0.254-19.925-0.044 0.064-10.529-0.526-4.443-0.973-12.334l-0.701 9e-3c-0.965 7.442-1.078 2.9-0.973 12.272-1.183-9e-3 -2.349-9e-3 -3.506 0 0.078-9.359-1.521-16.3-2.042-19.811-3.15 1.808-4.963 16.633-5.119 19.899-5.987 0.254-11.974 0.228-17.953-0.035-2.68-8.301 0.155-12.807-1.885-20.022-0.649-4.944 0.631-10.072-0.877-14.902-0.28-3.629-0.088-7.276-0.35-10.905-0.735-2.102-1.517-17.095-2.06-19.715-1.139-4.529-1.144-4.594-1.289-6.811-0.833-1.219-1.674-2.428-2.533-3.62-0.026-0.394-0.088-1.192-0.114-1.587-1.131-2.095-2.358-4.129-3.813-6.005-0.894 0.955-1.762 1.911-2.63 2.875-0.491 0-1.473-9e-3 -1.964-9e-3 -0.281 0.579-0.833 1.744-1.113 2.323-0.044 2.393 0.018 4.839-0.78 7.127-0.517 8.012 0.14 16.051-0.359 24.054-1.709 4.69 0.307 9.827-1.403 14.517-0.175 2.288-0.202 4.585-0.193 6.881-0.43 0.377-1.297 1.131-1.727 1.516 9e-3 -2.682 0.245-5.453-0.71-8.012-0.596-4.655 0.57-9.485-0.877-14.026-0.438-5.382 0.079-10.782-0.359-16.165-1.587-5.698-0.149-11.712-0.876-17.532-1.394-4.251-0.333-8.784-0.868-13.149-0.903-2.358-0.754-4.909-0.728-7.381-0.429-0.368-1.297-1.122-1.727-1.49-0.272 4.699 0.71 9.564-0.701 14.131-0.421 3.787 0.385 7.723-0.877 11.396-0.552 4.366 0.526 8.898-0.877 13.149-0.368 4.506 0.018 9.029-0.35 13.535-1.438 4.769-0.421 9.818-0.701 14.709h-0.868c-9e-3 -2.867 0.289-5.829-0.71-8.573-0.245-3.34-0.123-6.688-0.351-10.028-1.349-3.85-2.513-33.865-5.347-39.938-4.096 0.324-4.685-1.352-7.083-16.191-0.859-3.445-0.482-7.022-0.675-10.528-5.99-19.969-5.779-31.074-8.74-43.006-0.412 0.377-1.236 1.14-1.648 1.516-4.042 68.84-13.256 161-13.438 161.87-6.241 0.263-12.483 0.281-18.724-0.018-2.084-7.236 0.044-0.063-2.472-11.072-1.704 1.184-2.333 2.852-3.27 11.072-6.54 0.281-13.088 0.272-19.627 0.035-0.289-0.605-0.859-1.815-1.148-2.419-0.438-5.567 0.754-11.308-0.745-16.752-0.657-4.953 0.623-10.081-0.885-14.902-0.316-3.918-0.044-7.863-0.351-11.781-1.175-3.384-0.543-7.013-0.868-10.519-1.201-3.375-0.543-7.013-0.877-10.519-1.105-3.094-0.622-6.426-0.885-9.634-0.991-2.823-0.675-5.838-0.885-8.766-0.64-1.823-0.737-3.752-0.807-5.654-0.412-0.377-1.236-1.122-1.648-1.49-0.023 1.517 0.6 9.192-2.016 20.118-2.092-3.749-2.373-11.288-2.568-14.727-0.728-2.095-0.719-4.33-0.728-6.513-0.412-0.377-1.236-1.122-1.648-1.49-0.017 2.384 0.105 4.839-0.745 7.118-1.625 13.049-1.923 57.246-2.113 60.871-1.254 3.524 9e-3 7.513-2.086 10.808-3.055-13.191-3.982-41.883-4.041-42.752-0.195-0.562-2.542-23.345-2.577-24.352h-0.684c-0.074 0.87-1.059 13.181-1.639 14.709-0.324 3.927-0.052 7.863-0.359 11.79-1.806 5.26 0.403 10.993-1.403 16.261-0.333 4.444-0.14 8.906-0.175 13.359l-0.85-0.026c-9e-3 -2.402-0.035-4.804-0.21-7.197-1.955-6.715 0.561-13.929-1.394-20.644-0.421-5.093 0.061-10.212-0.359-15.297-1.534-5.119-0.202-10.546-0.877-15.779-1.341-3.962-0.386-8.196-0.868-12.272-1.473-4.856-0.368-10.02-0.745-15.007-0.281-0.587-0.85-1.753-1.131-2.332l-0.342-0.026c-2.383 6.384-1.846 9.872-4.725 15.043-1.087-0.053-2.156-0.097-3.217-0.14-0.297 2.566-0.568 6.574-3.226 12.614-1.078-0.456-2.139-0.912-3.173-1.385-0.903 1.043-1.753 2.121-2.568 3.226-1.541 14.346-1.612 25.276-6.522 59.863-0.64 1.394-1.613 2.568-2.902 3.384-0.643-9.977-2.268-14.232-2.901-20.381-0.395-0.368-1.192-1.113-1.587-1.482-3.995 25.967-3.614 31.519-5.628 38.86l-0.526 9e-3c-5.004-29.024-4.245-32.066-6.592-40.692-1.964 0.307-3.165 1.56-3.463 3.506-1.455 1.648-2.858 3.34-4.068 5.172-0.113 0.869-5.441 26.261-5.242 38.194-7.206 0.316-14.42 0.281-21.626 0-1.59-6.96-1.588-22.528-4.032-40.043-2.449 4.247-1.567 9.163-3.401 17.199h-0.622c-0.096-1.999-0.167-4.024-0.798-5.943-0.193-2.463-0.228-4.935-0.403-7.398-0.214-0.596-2.541-21.185-2.551-21.389-0.342-0.368-1.034-1.096-1.376-1.464-2.624 7.092-1.98 15.125-3.936 40.762-0.943 2.679-1.212 14.307-2.463 18.251l-0.579-9e-3c-0.263-0.587-0.797-1.762-1.069-2.349-0.044-2.393 0.018-4.839-0.798-7.127-0.482-4.076 0.456-8.31-0.877-12.264-0.543-4.374 0.526-8.906-0.876-13.149-0.272-3.629-0.088-7.276-0.351-10.905-2.209-6.347 1.236-13.623-2.226-19.618-1.659 10.114-0.922 6.007-1.289 12.115-1.324 3.962-0.395 8.196-0.868 12.272-1.648 4.401 0.228 9.24-1.394 13.64-0.263 3.27-0.202 6.557-0.184 9.835l-0.859 9e-3c0-2.7 9e-3 -5.409-0.202-8.091 0 0-1.894-14.814-3.559-26.64-1.025 2.161-2.494 6.353-3.419 11.457-0.71 1.201-1.42 2.411-2.148 3.603-3.406-7.194-4.001-15.55-4.295-17.699-5.625-12.505-4.562-25.342-7.67-33.671h-0.403c-3.503 9.782 0.435 1.884-6.005 38.317-0.184 0.359-0.552 1.087-0.728 1.446-0.324 1.727-0.57 3.463-0.841 5.198-0.947 3.717-0.395 7.583-0.719 11.361-1.289 3.664-0.473 7.6-0.885 11.396-0.594 1.9-1.634 10.122-1.718 10.993-1.122 0.745-2.244 1.473-3.349 2.218-0.386 5.626 0.13 1.269-1.175 7.714-3.953 0.175-7.907 0.175-11.852 0.044-0.105-2.051-0.158-4.129-0.842-6.075-0.412-3.796 0.395-7.732-0.885-11.396-0.333-3.498 0.307-7.127-0.859-10.51-0.491-6.548 0.123-13.123-0.368-19.671 0 0-5.516-54.514-8.845-67.306h-1.473c0.015 4.792-0.944 14.581-1.595 16.463-0.351 3.498 0.307 7.136-0.877 10.519-0.491 4.076 0.465 8.31-0.877 12.272-0.491 4.076 0.456 8.31-0.877 12.272-0.28 3.629-0.079 7.276-0.35 10.905-1.262 3.673-0.465 7.609-0.868 11.396-1.289 3.664-0.473 7.6-0.877 11.396-1.289 3.664-0.482 7.6-0.877 11.387-1.429 4.243-0.351 8.784-0.894 13.149-0.517 1.683-0.728 3.427-0.912 5.163-3.629 0.123-7.249 0.123-10.861 9e-3 -0.359-1.131-0.719-2.253-1.078-3.357-0.554-15.475 0.663-21.354-0.815-25.474-0.498-7.528-0.096-59.18-5.654-78.719-6.429-1.051-3.223-11.691-7.057-21.424l-0.438 0.018c-4.443 43.319-2.365 60.076-3.857 78.211-1.63 4.401 0.21 9.231-1.385 13.64-0.184 2.463-0.219 4.935-0.395 7.399-0.666 2.007-0.736 4.138-0.824 6.241-0.245 0.64-0.745 1.928-0.99 2.568-0.351-0.359-1.061-1.096-1.411-1.455-0.134-6.652-0.225-0.761-1.166-13-1.403-3.839 0.079-8.056-1.359-11.887-0.342-4.436-0.149-8.897-0.184-13.342h-1.622c-0.042 0.869-1.142 13.049-1.709 14.709-0.246 3.34-0.114 6.688-0.351 10.028-1.402 4.243-0.342 8.775-0.877 13.14-1.473 4.541-0.281 9.371-0.885 14.026-0.999 2.761-0.728 5.724-0.71 8.599-0.438-9e-3 -1.297-9e-3 -1.736-0.018-0.091-1.768-2.814-61.555-2.814-61.555-0.038-0.109-5.456-50.812-6.908-56.26-0.359 0.386-1.078 1.148-1.446 1.534-1.054 4.726-0.995 2.579-1.157 9.371-0.298-0.026-0.885-0.07-1.183-0.096-0.938-1.324-1.928-2.612-2.919-3.892-2.823 14.314-4.439 36.549-5.97 44.873-0.184 0.359-0.552 1.078-0.736 1.438-0.281 1.359-0.526 2.735-0.754 4.103h-0.657c0.028-7.733-1.59-17.163-2.849-24.896-0.517 0.877-1.026 1.762-1.516 2.647-0.018 2.972 0.315 6.049-0.71 8.906-0.605 4.655 0.561 9.485-0.876 14.026-0.754 6.11 0.71 12.404-0.868 18.409-0.131 1.63-0.202 3.279-0.254 4.918-0.544 0.938-1.087 1.876-1.613 2.814-0.987 9.186-0.327-1.6-1.14 11.931-1.245 3.673-0.473 7.6-0.859 11.396-1.201 3.34-0.657 6.934-0.701 10.397-6.732 0.254-13.456 0.298-20.179 9e-3 -0.044-3.471 0.473-7.057-0.684-10.405-0.649-4.944 0.622-10.072-0.885-14.894-0.307-3.927-0.052-7.863-0.351-11.782-1.613-5.996-0.149-12.316-0.868-18.435-1.339-5.048-0.518-5.014-3.603-14.981-1.154-4.75-0.731-4.479-2.621-9.59-0.351 0.368-1.069 1.105-1.429 1.473-3.59 28.719-2.637 24.356-5.26 29.112-0.601 4.918-1.642 5.918-2.831 13-0.71 1.183-1.403 2.358-2.113 3.533-0.281-0.684-0.833-2.051-1.113-2.735-0.247-4.495-0.408-4.871-1.166-8.196-0.386 0-1.175 0-1.569-9e-3 -0.044 1.359-0.105 2.717-0.158 4.076-3.067-6.436-0.91-7.799-1.823-18.286-1.446-4.541-0.272-9.371-0.868-14.026-1.026-2.849-0.71-5.908-0.745-8.871-0.289-0.587-0.868-1.744-1.166-2.332h-0.473c-0.83 6.893-1.628 7.466-1.876 15.209-0.421-0.377-1.262-1.131-1.683-1.499-9e-3 -2.306-0.035-4.602-0.193-6.89-1.183-3.384-0.535-7.013-0.877-10.51-1.192-3.384-0.535-7.022-0.868-10.519-1.201-3.384-0.543-7.022-0.885-10.519 0 0-3.515-26.665-3.515-26.666-0.324-0.368-0.982-1.096-1.306-1.455-2.09 10.391-0.875 47.421-5.628 75.94-0.395-0.377-1.175-1.122-1.56-1.499-2.507-9.819-2.672-28.963-2.717-29.831-0.561-0.894-1.113-1.788-1.657-2.682-0.07 2.13-0.053 4.313-0.806 6.347-0.412 3.787 0.395 7.723-0.859 11.396-0.71 5.531 0.675 11.247-0.877 16.656-0.473 5.961 0.096 11.957-0.368 17.918-1.613 5.996-0.123 12.299-0.877 18.409-1.446 4.532-0.281 9.362-0.868 14.017-1.096 3.051-0.701 6.32-0.701 9.485h-5.251c-0.333-5.488 0.78-11.133-0.701-16.489-0.719-5.531 0.692-11.256-0.885-16.656-0.543-4.365 0.508-8.898-0.868-13.149-0.219-3.051-0.158-6.11-0.368-9.152-0.622-2.007-0.771-4.103-0.947-6.171-3.738-17.029-1.37-12.706-7.022-45.645-4.711-15.28-4.495-46.356-6.978-58.128-0.324-0.359-0.964-1.096-1.28-1.464-0.28 1.481-0.544 2.972-0.85 4.444-0.085 0.868-3.823 36.378-5.198 42.901-1.571 7.218-1.593 19.441-2.788 22.87-0.351 3.498 0.307 7.127-0.877 10.51-0.491 4.076 0.465 8.31-0.877 12.272-0.596 4.655 0.579 9.485-0.877 14.026-0.342 4.216-9e-3 8.451-0.351 12.658-1.464 4.541-0.272 9.371-0.885 14.026-0.561 1.727-0.719 3.533-0.868 5.33-0.368-0.351-1.105-1.052-1.473-1.411-3.32 19.616-1.334 18.132-1.867 29.296-13.421 0.193-26.842 0.28-40.254-0.018-0.494-1.729-3.729-21.553-4.655-33.583-1.297-3.559-0.026-7.46-1.359-11.01-0.193-2.761-0.184-5.523-0.368-8.275-1.578-5.707-0.14-11.711-0.877-17.532-0.529-1.612-1.765-12.284-1.858-13.158-1.105-4.006-0.342-8.188-0.763-12.264-1.657-6.566-0.105-13.465-0.885-20.162-1.639-6.566-0.105-13.465-0.877-20.162-1.613-5.987-0.131-12.29-0.877-18.4-1.455-4.541-0.28-9.371-0.868-14.026-0.85-2.288-0.763-4.742-0.789-7.127-0.281-0.587-0.824-1.753-1.096-2.332h-0.403c-0.551 5.654-1.974 21.699-6.867 143.01v84.684c1.97-18.939 4.281-41.148 4.281-41.149 0.855-2.511 0.714-5.184 0.706-7.788z"/>
+</svg>